Project import
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..b906e3f
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,135 @@
+#
+# Copyright (c) 2010-2014 Nest, Inc.
+# All rights reserved.
+#
+# This document is the property of Nest. It is considered
+# confidential and proprietary information.
+#
+# This document may not be reproduced or transmitted in any form,
+# in whole or in part, without the express written permission of
+# Nest.
+#
+# Description:
+# This file is the make file for the GNU partition editor,
+# parted.
+#
+
+BuildConfigSpecialized := No
+BuildProductSpecialized := No
+
+include pre.mak
+
+PackageName := parted
+
+PackageExtension := tar.gz
+PackageSeparator := -
+
+PackagePatchArgs := -p0
+
+PackageArchive := $(PackageName).$(PackageExtension)
+PackageSourceDir := $(PackageName)$(PackageSeparator)$(PackageVersion)
+
+PackageBuildMakefile = $(call GenerateBuildPaths,Makefile)
+
+LicenseSourceFile := $(PackageSourceDir)/COPYING
+
+CleanPaths += $(PackageLicenseFile)
+
+UUIDDir := sw/tps/e2fsprogs
+UUIDIncDir = $(call GenerateResultPaths,$(UUIDDir),usr/include)
+UUIDLibDir = $(call GenerateResultPaths,$(UUIDDir),usr/lib)
+
+all: $(PackageDefaultGoal)
+
+# Generate the package license contents.
+
+$(LicenseSourceFile): source
+
+$(PackageLicenseFile): $(LicenseSourceFile)
+ $(copy-result)
+
+# Extract the source from the archive and apply patches, if any.
+
+$(PackageSourceDir): $(PackageArchive) $(PackagePatchPaths)
+ $(expand-and-patch-package)
+
+# Prepare the sources.
+
+.PHONY: source
+source: | $(PackageSourceDir)
+
+# Patch the sources, if necessary.
+
+.PHONY: patch
+patch: source
+
+# Generate the package build makefile.
+
+$(PackageBuildMakefile): | $(PackageSourceDir) $(BuildDirectory) $(ResultDirectory)
+ $(Verbose)cd $(BuildDirectory) && \
+ $(CURDIR)/$(PackageSourceDir)/configure \
+ CC="$(CC)" CXX="$(CXX)" AR=$(AR) NM=$(NM) RANLIB=$(RANLIB) STRIP=$(STRIP) \
+ CPPFLAGS="$(call ToolGenerateIncludeArgument,$(UUIDIncDir))" \
+ INSTALL="$(INSTALL) $(INSTALLFLAGS)" \
+ LDFLAGS="-L$(UUIDLibDir)" \
+ --build=$(HostTuple) \
+ --host=$(TargetTuple) \
+ --target=$(TargetTuple) \
+ --prefix=/usr \
+ --sysconfdir=/etc \
+ --localstatedir=/var \
+ --disable-device-mapper \
+ --disable-fs \
+ --enable-read-only \
+ --without-readline \
+ ac_cv_func_malloc_0_nonnull=yes \
+ ac_cv_func_realloc_0_nonnull=yes \
+ ac_cv_func_calloc_0_nonnull=yes
+
+# Configure the source for building.
+
+.PHONY: configure
+configure: source $(PackageBuildMakefile)
+
+# Build the source.
+#
+# We have to unset MAKEFLAGS since they confuse the package build otherwise.
+
+.PHONY: build
+build: configure
+ $(Verbose)unset MAKEFLAGS && \
+ $(MAKE) $(JOBSFLAG) -C $(BuildDirectory) \
+ all
+
+# Stage the build to a temporary installation area.
+#
+# We have to unset MAKEFLAGS since they confuse the package build otherwise.
+#
+# We explictly remove 'libparted.la' because some packages that depend
+# on libparted use libtool. If libtool finds a '*.la' file for a
+# library, it uses the value of 'libdir=<dir>' it finds. In our case,
+# since '--prefix=/usr' this value is '/usr/lib'. It then resolves
+# '-lparted' to '/usr/lib/libparted.so'. In a cross-compilation
+# environment, this is likely to be neither the right architecture nor
+# the right version to link against. In short, we lose.
+#
+# We could also handle this by removing DESTDIR and setting the prefix
+# to $(ResultDirectory); however, that results in libtool hard-coding
+# $(ResultDirectory) as the RPATH in the linked executables which is
+# NOT what we want either. We lose again.
+#
+# By removing the '*.la' file, we win by ensuring neither a misdirected
+# link nor an RPATH.
+
+.PHONY: stage
+stage: build | $(ResultDirectory)
+ $(Verbose)unset MAKEFLAGS && \
+ $(MAKE) $(JOBSFLAG) -C $(BuildDirectory) DESTDIR=$(ResultDirectory) install
+ $(Verbose)$(RM) $(RMFLAGS) $(call GenerateResultPaths,,usr/lib/libparted.la)
+
+clean:
+ $(Verbose)$(RM) $(RMFLAGS) -r $(PackageSourceDir)
+ $(Verbose)$(RM) $(RMFLAGS) -r $(BuildDirectory)
+ $(Verbose)$(RM) $(RMFLAGS) -r $(ResultDirectory)
+
+include post.mak
diff --git a/parted-1.8.7/.prev-version b/parted-1.8.7/.prev-version
new file mode 100644
index 0000000..6259340
--- /dev/null
+++ b/parted-1.8.7/.prev-version
@@ -0,0 +1 @@
+1.8
diff --git a/parted-1.8.7/ABOUT-NLS b/parted-1.8.7/ABOUT-NLS
new file mode 100644
index 0000000..3575535
--- /dev/null
+++ b/parted-1.8.7/ABOUT-NLS
@@ -0,0 +1,1111 @@
+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. 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://www.iro.umontreal.ca/contrib/po/HTML/', in the "National 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 `translation@iro.umontreal.ca' 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 skill are praised more than
+programming skill, here.
+
+1.5 Available Packages
+======================
+
+Languages are not equally supported in all packages. The following
+matrix shows the current state of internationalization, as of July
+2006. 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 az be bg bs ca cs cy da de el en en_GB eo
+ +----------------------------------------------------+
+ GNUnet | [] |
+ a2ps | [] [] [] [] [] |
+ aegis | () |
+ ant-phone | () |
+ anubis | [] |
+ ap-utils | |
+ aspell | [] [] [] [] |
+ bash | [] [] [] |
+ batchelor | [] |
+ bfd | |
+ bibshelf | [] |
+ binutils | [] |
+ bison | [] [] |
+ bison-runtime | [] |
+ bluez-pin | [] [] [] [] [] |
+ cflow | [] |
+ clisp | [] [] |
+ console-tools | [] [] |
+ coreutils | [] [] [] [] |
+ cpio | |
+ cpplib | [] [] [] |
+ cryptonit | [] |
+ darkstat | [] () [] |
+ dialog | [] [] [] [] [] [] |
+ diffutils | [] [] [] [] [] [] |
+ doodle | [] |
+ e2fsprogs | [] [] |
+ enscript | [] [] [] [] |
+ error | [] [] [] [] |
+ fetchmail | [] [] () [] |
+ fileutils | [] [] |
+ findutils | [] [] [] |
+ flex | [] [] [] |
+ fslint | [] |
+ gas | |
+ gawk | [] [] [] |
+ gbiff | [] |
+ gcal | [] |
+ gcc | [] |
+ gettext-examples | [] [] [] [] [] |
+ gettext-runtime | [] [] [] [] [] |
+ gettext-tools | [] [] |
+ gimp-print | [] [] [] [] |
+ gip | [] |
+ gliv | [] |
+ glunarclock | [] |
+ gmult | [] [] |
+ gnubiff | () |
+ gnucash | () () [] |
+ gnucash-glossary | [] () |
+ gnuedu | |
+ gnulib | [] [] [] [] [] [] |
+ gnunet-gtk | |
+ gnutls | |
+ gpe-aerial | [] [] |
+ gpe-beam | [] [] |
+ 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 | [] [] [] [] [] [] |
+ gretl | |
+ gsasl | |
+ gss | |
+ gst-plugins | [] [] [] [] |
+ gst-plugins-base | [] [] [] |
+ gst-plugins-good | [] [] [] [] [] [] [] |
+ gstreamer | [] [] [] [] [] [] [] |
+ gtick | [] () |
+ gtkam | [] [] [] |
+ gtkorphan | [] [] |
+ gtkspell | [] [] [] [] |
+ gutenprint | [] |
+ hello | [] [] [] [] [] |
+ id-utils | [] [] |
+ impost | |
+ indent | [] [] [] |
+ iso_3166 | [] [] |
+ iso_3166_1 | [] [] [] [] [] |
+ iso_3166_2 | |
+ iso_3166_3 | [] |
+ iso_4217 | [] |
+ iso_639 | [] [] |
+ jpilot | [] |
+ jtag | |
+ jwhois | |
+ kbd | [] [] [] [] |
+ keytouch | |
+ keytouch-editor | |
+ keytouch-keyboa... | |
+ latrine | () |
+ ld | [] |
+ leafpad | [] [] [] [] [] |
+ libc | [] [] [] [] [] |
+ libexif | [] |
+ libextractor | [] |
+ libgpewidget | [] [] [] |
+ libgpg-error | [] |
+ libgphoto2 | [] [] |
+ libgphoto2_port | [] [] |
+ libgsasl | |
+ libiconv | [] [] |
+ libidn | [] [] |
+ lifelines | [] () |
+ lilypond | [] |
+ lingoteach | |
+ lynx | [] [] [] [] |
+ m4 | [] [] [] [] |
+ mailutils | [] |
+ make | [] [] |
+ man-db | [] () [] [] |
+ minicom | [] [] [] |
+ mysecretdiary | [] [] |
+ nano | [] [] () [] |
+ nano_1_0 | [] () [] [] |
+ opcodes | [] |
+ parted | |
+ pilot-qof | [] |
+ psmisc | [] |
+ pwdutils | |
+ python | |
+ qof | |
+ radius | [] |
+ recode | [] [] [] [] [] [] |
+ rpm | [] [] |
+ screem | |
+ scrollkeeper | [] [] [] [] [] [] [] [] |
+ sed | [] [] [] |
+ sh-utils | [] [] |
+ shared-mime-info | [] [] [] |
+ sharutils | [] [] [] [] [] [] |
+ shishi | |
+ silky | |
+ skencil | [] () |
+ sketch | [] () |
+ solfege | |
+ soundtracker | [] [] |
+ sp | [] |
+ stardict | [] |
+ system-tools-ba... | [] [] [] [] [] [] [] [] [] |
+ tar | [] |
+ texinfo | [] [] [] |
+ textutils | [] [] [] |
+ tin | () () |
+ tp-robot | [] |
+ tuxpaint | [] [] [] [] [] |
+ unicode-han-tra... | |
+ unicode-transla... | |
+ util-linux | [] [] [] [] |
+ vorbis-tools | [] [] [] [] |
+ wastesedge | () |
+ wdiff | [] [] [] [] |
+ wget | [] [] |
+ xchat | [] [] [] [] [] |
+ xkeyboard-config | |
+ xpad | [] [] |
+ +----------------------------------------------------+
+ af am ar az be bg bs ca cs cy da de el en en_GB eo
+ 11 0 1 2 8 21 1 42 43 2 62 99 18 1 16 16
+
+ es et eu fa fi fr ga gl gu he hi hr hu id is it
+ +--------------------------------------------------+
+ GNUnet | |
+ a2ps | [] [] [] () |
+ aegis | |
+ ant-phone | [] |
+ anubis | [] |
+ ap-utils | [] [] |
+ aspell | [] [] [] |
+ bash | [] [] [] |
+ batchelor | [] [] |
+ bfd | [] |
+ bibshelf | [] [] [] |
+ binutils | [] [] [] |
+ bison | [] [] [] [] [] [] |
+ bison-runtime | [] [] [] [] [] |
+ bluez-pin | [] [] [] [] [] |
+ cflow | |
+ clisp | [] [] |
+ console-tools | |
+ coreutils | [] [] [] [] [] [] |
+ cpio | [] [] [] |
+ cpplib | [] [] |
+ cryptonit | [] |
+ darkstat | [] () [] [] [] |
+ dialog | [] [] [] [] [] [] [] [] |
+ diffutils | [] [] [] [] [] [] [] [] [] |
+ doodle | [] [] |
+ e2fsprogs | [] [] [] |
+ enscript | [] [] [] |
+ error | [] [] [] [] [] |
+ fetchmail | [] |
+ fileutils | [] [] [] [] [] [] |
+ findutils | [] [] [] [] |
+ flex | [] [] [] |
+ fslint | [] |
+ gas | [] [] |
+ gawk | [] [] [] [] |
+ gbiff | [] |
+ gcal | [] [] |
+ gcc | [] |
+ gettext-examples | [] [] [] [] [] |
+ gettext-runtime | [] [] [] [] [] [] |
+ gettext-tools | [] [] [] |
+ gimp-print | [] [] |
+ gip | [] [] [] |
+ gliv | () |
+ glunarclock | [] [] [] |
+ gmult | [] [] [] |
+ gnubiff | () () |
+ gnucash | () () () |
+ gnucash-glossary | [] [] |
+ gnuedu | [] |
+ gnulib | [] [] [] [] [] [] [] [] |
+ gnunet-gtk | |
+ gnutls | |
+ gpe-aerial | [] [] |
+ gpe-beam | [] [] |
+ 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 | [] [] [] [] [] [] [] [] [] [] [] [] |
+ gretl | [] [] [] |
+ gsasl | [] |
+ gss | [] |
+ gst-plugins | [] [] [] |
+ gst-plugins-base | [] [] |
+ gst-plugins-good | [] [] [] |
+ gstreamer | [] [] [] |
+ gtick | [] [] [] [] [] |
+ gtkam | [] [] [] [] |
+ gtkorphan | [] [] |
+ gtkspell | [] [] [] [] [] [] |
+ gutenprint | [] |
+ hello | [] [] [] [] [] [] [] [] [] [] [] [] [] |
+ id-utils | [] [] [] [] [] |
+ impost | [] [] |
+ indent | [] [] [] [] [] [] [] [] [] [] |
+ iso_3166 | [] [] [] |
+ iso_3166_1 | [] [] [] [] [] [] [] |
+ iso_3166_2 | [] |
+ iso_3166_3 | [] |
+ iso_4217 | [] [] [] [] |
+ iso_639 | [] [] [] [] [] |
+ jpilot | [] [] |
+ jtag | [] |
+ jwhois | [] [] [] [] [] |
+ kbd | [] [] |
+ keytouch | [] |
+ keytouch-editor | [] |
+ keytouch-keyboa... | [] |
+ latrine | [] [] [] |
+ ld | [] [] |
+ leafpad | [] [] [] [] [] [] |
+ libc | [] [] [] [] [] |
+ libexif | [] |
+ libextractor | [] |
+ libgpewidget | [] [] [] [] [] |
+ libgpg-error | |
+ libgphoto2 | [] [] [] |
+ libgphoto2_port | [] [] |
+ libgsasl | [] [] |
+ libiconv | [] |
+ libidn | [] [] |
+ lifelines | () |
+ lilypond | [] |
+ lingoteach | [] [] [] |
+ lynx | [] [] [] |
+ m4 | [] [] [] [] |
+ mailutils | [] [] |
+ make | [] [] [] [] [] [] [] [] |
+ man-db | () |
+ minicom | [] [] [] [] |
+ mysecretdiary | [] [] [] |
+ nano | [] () [] [] [] [] |
+ nano_1_0 | [] [] [] [] [] |
+ opcodes | [] [] [] [] |
+ parted | [] [] [] [] |
+ pilot-qof | |
+ psmisc | [] [] [] |
+ pwdutils | |
+ python | |
+ qof | |
+ radius | [] [] |
+ recode | [] [] [] [] [] [] [] [] |
+ rpm | [] [] |
+ screem | |
+ scrollkeeper | [] [] [] |
+ sed | [] [] [] [] [] |
+ sh-utils | [] [] [] [] [] [] [] |
+ shared-mime-info | [] [] [] [] [] [] |
+ sharutils | [] [] [] [] [] [] [] [] |
+ shishi | |
+ silky | [] |
+ skencil | [] [] |
+ sketch | [] [] |
+ solfege | [] |
+ soundtracker | [] [] [] |
+ sp | [] |
+ stardict | [] |
+ system-tools-ba... | [] [] [] [] [] [] [] [] |
+ tar | [] [] [] [] [] [] |
+ texinfo | [] [] |
+ textutils | [] [] [] [] [] |
+ tin | [] () |
+ tp-robot | [] [] [] [] |
+ tuxpaint | [] [] |
+ unicode-han-tra... | |
+ unicode-transla... | [] [] |
+ util-linux | [] [] [] [] [] [] [] |
+ vorbis-tools | [] [] |
+ wastesedge | () |
+ wdiff | [] [] [] [] [] [] [] [] |
+ wget | [] [] [] [] [] [] [] [] |
+ xchat | [] [] [] [] [] [] [] [] |
+ xkeyboard-config | [] [] [] [] |
+ xpad | [] [] [] |
+ +--------------------------------------------------+
+ es et eu fa fi fr ga gl gu he hi hr hu id is it
+ 89 21 16 2 41 119 61 14 1 8 1 6 61 30 0 53
+
+ ja ko ku ky lg lt lv mk mn ms mt nb ne nl nn no
+ +--------------------------------------------------+
+ GNUnet | |
+ a2ps | () [] [] () |
+ aegis | () |
+ ant-phone | [] |
+ anubis | [] [] [] |
+ ap-utils | [] |
+ aspell | [] [] |
+ bash | [] |
+ batchelor | [] [] |
+ bfd | |
+ bibshelf | [] |
+ binutils | |
+ bison | [] [] [] |
+ bison-runtime | [] [] [] |
+ bluez-pin | [] [] [] |
+ cflow | |
+ clisp | [] |
+ console-tools | |
+ coreutils | [] |
+ cpio | |
+ cpplib | [] |
+ cryptonit | [] |
+ darkstat | [] [] |
+ dialog | [] [] |
+ diffutils | [] [] [] |
+ doodle | |
+ e2fsprogs | [] |
+ enscript | [] |
+ error | [] |
+ fetchmail | [] [] |
+ fileutils | [] [] |
+ findutils | [] |
+ flex | [] [] |
+ fslint | [] [] |
+ gas | |
+ gawk | [] [] |
+ gbiff | [] |
+ gcal | |
+ gcc | |
+ gettext-examples | [] [] |
+ gettext-runtime | [] [] [] |
+ gettext-tools | [] [] |
+ gimp-print | [] [] |
+ gip | [] [] |
+ gliv | [] |
+ glunarclock | [] [] |
+ gmult | [] [] |
+ gnubiff | |
+ gnucash | () () |
+ gnucash-glossary | [] |
+ gnuedu | |
+ gnulib | [] [] [] [] |
+ gnunet-gtk | |
+ gnutls | |
+ gpe-aerial | [] |
+ gpe-beam | [] |
+ 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 | [] [] [] |
+ gretl | |
+ gsasl | [] |
+ gss | |
+ gst-plugins | [] |
+ gst-plugins-base | |
+ gst-plugins-good | [] |
+ gstreamer | [] |
+ gtick | [] |
+ gtkam | [] |
+ gtkorphan | [] |
+ gtkspell | [] [] |
+ gutenprint | |
+ hello | [] [] [] [] [] [] [] [] |
+ id-utils | [] |
+ impost | |
+ indent | [] [] |
+ iso_3166 | [] |
+ iso_3166_1 | [] [] |
+ iso_3166_2 | [] |
+ iso_3166_3 | [] |
+ iso_4217 | [] [] [] |
+ iso_639 | [] [] |
+ jpilot | () () () |
+ jtag | |
+ jwhois | [] |
+ kbd | [] |
+ keytouch | [] |
+ keytouch-editor | |
+ keytouch-keyboa... | |
+ latrine | [] |
+ ld | |
+ leafpad | [] [] |
+ libc | [] [] [] [] [] |
+ libexif | |
+ libextractor | |
+ libgpewidget | [] |
+ libgpg-error | |
+ libgphoto2 | [] |
+ libgphoto2_port | [] |
+ libgsasl | [] |
+ libiconv | |
+ libidn | [] [] |
+ lifelines | [] |
+ lilypond | |
+ lingoteach | [] |
+ lynx | [] [] |
+ m4 | [] [] |
+ mailutils | |
+ make | [] [] [] |
+ man-db | () |
+ minicom | [] |
+ mysecretdiary | [] |
+ nano | [] [] [] |
+ nano_1_0 | [] [] [] |
+ opcodes | [] |
+ parted | [] [] |
+ pilot-qof | |
+ psmisc | [] [] [] |
+ pwdutils | |
+ python | |
+ qof | |
+ radius | |
+ recode | [] |
+ rpm | [] [] |
+ screem | [] |
+ scrollkeeper | [] [] [] [] |
+ sed | [] [] |
+ sh-utils | [] [] |
+ shared-mime-info | [] [] [] [] [] |
+ sharutils | [] [] |
+ shishi | |
+ silky | [] |
+ skencil | |
+ sketch | |
+ solfege | |
+ soundtracker | |
+ sp | () |
+ stardict | [] [] |
+ system-tools-ba... | [] [] [] [] |
+ tar | [] [] [] |
+ texinfo | [] [] [] |
+ textutils | [] [] [] |
+ tin | |
+ tp-robot | [] |
+ tuxpaint | [] |
+ unicode-han-tra... | |
+ unicode-transla... | |
+ util-linux | [] [] |
+ vorbis-tools | [] |
+ wastesedge | [] |
+ wdiff | [] [] |
+ wget | [] [] |
+ xchat | [] [] [] [] |
+ xkeyboard-config | [] |
+ xpad | [] [] [] |
+ +--------------------------------------------------+
+ ja ko ku ky lg lt lv mk mn ms mt nb ne nl nn no
+ 40 24 2 1 1 3 1 2 3 21 0 15 1 101 5 3
+
+ nso or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta
+ +------------------------------------------------------+
+ GNUnet | |
+ a2ps | () [] [] [] [] [] [] |
+ aegis | () () |
+ ant-phone | [] [] |
+ anubis | [] [] [] |
+ ap-utils | () |
+ aspell | [] [] |
+ bash | [] [] [] |
+ batchelor | [] [] |
+ bfd | |
+ bibshelf | [] |
+ binutils | [] [] |
+ bison | [] [] [] [] [] |
+ bison-runtime | [] [] [] [] |
+ bluez-pin | [] [] [] [] [] [] [] [] [] |
+ cflow | [] |
+ clisp | [] |
+ console-tools | [] |
+ coreutils | [] [] [] [] |
+ cpio | [] [] [] |
+ cpplib | [] |
+ cryptonit | [] [] |
+ darkstat | [] [] [] [] [] [] |
+ dialog | [] [] [] [] [] [] [] [] [] |
+ diffutils | [] [] [] [] [] [] |
+ doodle | [] [] |
+ e2fsprogs | [] [] |
+ enscript | [] [] [] [] [] |
+ error | [] [] [] [] |
+ fetchmail | [] [] [] |
+ fileutils | [] [] [] [] [] |
+ findutils | [] [] [] [] [] [] |
+ flex | [] [] [] [] [] |
+ fslint | [] [] [] [] |
+ gas | |
+ gawk | [] [] [] [] |
+ gbiff | [] |
+ gcal | [] |
+ gcc | [] |
+ gettext-examples | [] [] [] [] [] [] [] [] |
+ gettext-runtime | [] [] [] [] [] [] [] [] |
+ gettext-tools | [] [] [] [] [] [] [] |
+ gimp-print | [] [] |
+ gip | [] [] [] [] |
+ gliv | [] [] [] [] |
+ glunarclock | [] [] [] [] [] [] |
+ gmult | [] [] [] [] |
+ gnubiff | () |
+ gnucash | () [] |
+ gnucash-glossary | [] [] [] |
+ gnuedu | |
+ gnulib | [] [] [] [] [] |
+ gnunet-gtk | [] |
+ gnutls | [] [] |
+ gpe-aerial | [] [] [] [] [] [] [] |
+ gpe-beam | [] [] [] [] [] [] [] |
+ 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 | [] [] [] [] [] [] [] [] |
+ gretl | [] |
+ gsasl | [] [] |
+ gss | [] [] [] |
+ gst-plugins | [] [] [] [] |
+ gst-plugins-base | [] |
+ gst-plugins-good | [] [] [] [] |
+ gstreamer | [] [] [] |
+ gtick | [] [] [] |
+ gtkam | [] [] [] [] |
+ gtkorphan | [] |
+ gtkspell | [] [] [] [] [] [] [] [] |
+ gutenprint | [] |
+ hello | [] [] [] [] [] [] [] [] |
+ id-utils | [] [] [] [] |
+ impost | [] |
+ indent | [] [] [] [] [] [] |
+ iso_3166 | [] [] [] [] [] [] |
+ iso_3166_1 | [] [] [] [] |
+ iso_3166_2 | |
+ iso_3166_3 | [] [] [] [] |
+ iso_4217 | [] [] [] [] |
+ iso_639 | [] [] [] [] |
+ jpilot | |
+ jtag | [] |
+ jwhois | [] [] [] [] |
+ kbd | [] [] [] |
+ keytouch | [] |
+ keytouch-editor | [] |
+ keytouch-keyboa... | [] |
+ latrine | [] [] |
+ ld | [] |
+ leafpad | [] [] [] [] [] [] |
+ libc | [] [] [] [] [] |
+ libexif | [] |
+ libextractor | [] [] |
+ libgpewidget | [] [] [] [] [] [] [] |
+ libgpg-error | [] [] |
+ libgphoto2 | [] |
+ libgphoto2_port | [] [] [] |
+ libgsasl | [] [] [] [] |
+ libiconv | |
+ libidn | [] [] () |
+ lifelines | [] [] |
+ lilypond | |
+ lingoteach | [] |
+ lynx | [] [] [] |
+ m4 | [] [] [] [] [] |
+ mailutils | [] [] [] [] |
+ make | [] [] [] [] |
+ man-db | [] [] |
+ minicom | [] [] [] [] [] |
+ mysecretdiary | [] [] [] [] |
+ nano | [] [] |
+ nano_1_0 | [] [] [] [] |
+ opcodes | [] [] |
+ parted | [] |
+ pilot-qof | [] |
+ psmisc | [] [] |
+ pwdutils | [] [] |
+ python | |
+ qof | [] |
+ radius | [] [] |
+ recode | [] [] [] [] [] [] [] |
+ rpm | [] [] [] [] |
+ screem | |
+ scrollkeeper | [] [] [] [] [] [] [] |
+ sed | [] [] [] [] [] [] [] [] [] |
+ sh-utils | [] [] [] |
+ shared-mime-info | [] [] [] [] [] |
+ sharutils | [] [] [] [] |
+ shishi | [] |
+ silky | [] |
+ skencil | [] [] [] |
+ sketch | [] [] [] |
+ solfege | [] |
+ soundtracker | [] [] |
+ sp | |
+ stardict | [] [] [] |
+ system-tools-ba... | [] [] [] [] [] [] [] [] [] |
+ tar | [] [] [] [] [] |
+ texinfo | [] [] [] [] |
+ textutils | [] [] [] |
+ tin | () |
+ tp-robot | [] |
+ tuxpaint | [] [] [] [] [] |
+ unicode-han-tra... | |
+ unicode-transla... | |
+ util-linux | [] [] [] [] |
+ vorbis-tools | [] [] |
+ wastesedge | |
+ wdiff | [] [] [] [] [] [] |
+ wget | [] [] [] [] |
+ xchat | [] [] [] [] [] [] [] |
+ xkeyboard-config | [] [] |
+ xpad | [] [] [] |
+ +------------------------------------------------------+
+ nso or pa pl pt pt_BR rm ro ru rw sk sl sq sr sv ta
+ 0 2 3 58 31 53 5 76 72 5 42 48 12 51 130 2
+
+ tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu
+ +---------------------------------------------------+
+ GNUnet | [] | 2
+ a2ps | [] [] [] | 19
+ aegis | | 0
+ ant-phone | [] [] | 6
+ anubis | [] [] [] | 11
+ ap-utils | () [] | 4
+ aspell | [] [] [] | 14
+ bash | [] | 11
+ batchelor | [] [] | 9
+ bfd | | 1
+ bibshelf | [] | 7
+ binutils | [] [] [] | 9
+ bison | [] [] [] | 19
+ bison-runtime | [] [] [] | 16
+ bluez-pin | [] [] [] [] [] [] | 28
+ cflow | [] [] | 4
+ clisp | | 6
+ console-tools | [] [] | 5
+ coreutils | [] [] | 17
+ cpio | [] [] [] | 9
+ cpplib | [] [] [] [] | 11
+ cryptonit | | 5
+ darkstat | [] () () | 15
+ dialog | [] [] [] [] [] | 30
+ diffutils | [] [] [] [] | 28
+ doodle | [] | 6
+ e2fsprogs | [] [] | 10
+ enscript | [] [] [] | 16
+ error | [] [] [] [] | 18
+ fetchmail | [] [] | 12
+ fileutils | [] [] [] | 18
+ findutils | [] [] [] | 17
+ flex | [] [] | 15
+ fslint | [] | 9
+ gas | [] | 3
+ gawk | [] [] | 15
+ gbiff | [] | 5
+ gcal | [] | 5
+ gcc | [] [] [] | 6
+ gettext-examples | [] [] [] [] [] [] | 26
+ gettext-runtime | [] [] [] [] [] [] | 28
+ gettext-tools | [] [] [] [] [] | 19
+ gimp-print | [] [] | 12
+ gip | [] [] | 12
+ gliv | [] [] | 8
+ glunarclock | [] [] [] | 15
+ gmult | [] [] [] [] | 15
+ gnubiff | [] | 1
+ gnucash | () | 2
+ gnucash-glossary | [] [] | 9
+ gnuedu | [] | 2
+ gnulib | [] [] [] [] [] | 28
+ gnunet-gtk | | 1
+ gnutls | | 2
+ gpe-aerial | [] [] | 14
+ gpe-beam | [] [] | 14
+ gpe-calendar | [] [] [] [] | 19
+ gpe-clock | [] [] [] [] | 20
+ gpe-conf | [] [] | 14
+ gpe-contacts | [] [] | 10
+ gpe-edit | [] [] [] [] | 19
+ gpe-filemanager | [] | 5
+ gpe-go | [] [] | 14
+ gpe-login | [] [] [] [] [] | 20
+ gpe-ownerinfo | [] [] [] [] | 20
+ gpe-package | [] | 5
+ gpe-sketchbook | [] [] | 16
+ gpe-su | [] [] [] | 19
+ gpe-taskmanager | [] [] [] | 19
+ gpe-timesheet | [] [] [] [] | 18
+ gpe-today | [] [] [] [] [] | 20
+ gpe-todo | [] | 6
+ gphoto2 | [] [] [] [] | 20
+ gprof | [] [] | 11
+ gpsdrive | | 4
+ gramadoir | [] | 7
+ grep | [] [] [] [] | 33
+ gretl | | 4
+ gsasl | [] [] | 6
+ gss | [] | 5
+ gst-plugins | [] [] [] | 15
+ gst-plugins-base | [] [] [] | 9
+ gst-plugins-good | [] [] [] | 18
+ gstreamer | [] [] [] | 17
+ gtick | [] | 11
+ gtkam | [] | 13
+ gtkorphan | [] | 7
+ gtkspell | [] [] [] [] [] [] | 26
+ gutenprint | | 3
+ hello | [] [] [] [] [] | 39
+ id-utils | [] [] | 14
+ impost | [] | 4
+ indent | [] [] [] [] | 25
+ iso_3166 | [] [] [] | 15
+ iso_3166_1 | [] [] | 20
+ iso_3166_2 | | 2
+ iso_3166_3 | [] [] | 9
+ iso_4217 | [] [] | 14
+ iso_639 | [] | 14
+ jpilot | [] [] [] [] | 7
+ jtag | [] | 3
+ jwhois | [] [] [] | 13
+ kbd | [] [] | 12
+ keytouch | [] | 4
+ keytouch-editor | | 2
+ keytouch-keyboa... | | 2
+ latrine | [] [] | 8
+ ld | [] [] [] [] | 8
+ leafpad | [] [] [] [] | 23
+ libc | [] [] [] | 23
+ libexif | [] | 4
+ libextractor | [] | 5
+ libgpewidget | [] [] [] | 19
+ libgpg-error | [] | 4
+ libgphoto2 | [] | 8
+ libgphoto2_port | [] [] [] | 11
+ libgsasl | [] | 8
+ libiconv | [] | 4
+ libidn | [] [] | 10
+ lifelines | | 4
+ lilypond | | 2
+ lingoteach | [] | 6
+ lynx | [] [] [] | 15
+ m4 | [] [] [] | 18
+ mailutils | [] | 8
+ make | [] [] [] | 20
+ man-db | [] | 6
+ minicom | [] | 14
+ mysecretdiary | [] [] | 12
+ nano | [] [] | 15
+ nano_1_0 | [] [] [] | 18
+ opcodes | [] [] | 10
+ parted | [] [] [] | 10
+ pilot-qof | [] | 3
+ psmisc | [] | 10
+ pwdutils | [] | 3
+ python | | 0
+ qof | [] | 2
+ radius | [] | 6
+ recode | [] [] [] | 25
+ rpm | [] [] [] [] | 14
+ screem | [] | 2
+ scrollkeeper | [] [] [] [] | 26
+ sed | [] [] [] | 22
+ sh-utils | [] | 15
+ shared-mime-info | [] [] [] [] | 23
+ sharutils | [] [] [] | 23
+ shishi | | 1
+ silky | [] | 4
+ skencil | [] | 7
+ sketch | | 6
+ solfege | | 2
+ soundtracker | [] [] | 9
+ sp | [] | 3
+ stardict | [] [] [] [] | 11
+ system-tools-ba... | [] [] [] [] [] [] [] | 37
+ tar | [] [] [] [] | 19
+ texinfo | [] [] [] | 15
+ textutils | [] [] [] | 17
+ tin | | 1
+ tp-robot | [] [] [] | 10
+ tuxpaint | [] [] [] | 16
+ unicode-han-tra... | | 0
+ unicode-transla... | | 2
+ util-linux | [] [] [] | 20
+ vorbis-tools | [] [] | 11
+ wastesedge | | 1
+ wdiff | [] [] | 22
+ wget | [] [] [] | 19
+ xchat | [] [] [] [] | 28
+ xkeyboard-config | [] [] [] [] | 11
+ xpad | [] [] [] | 14
+ +---------------------------------------------------+
+ 77 teams tg th tk tr uk ven vi wa xh zh_CN zh_HK zh_TW zu
+ 172 domains 0 1 1 78 39 0 135 13 1 50 3 54 0 2054
+
+ 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 July 2006 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://www.iro.umontreal.ca/contrib/po/HTML/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
+`translation@iro.umontreal.ca' to make the `.pot' files available to
+the translation teams.
+
diff --git a/parted-1.8.7/AUTHORS b/parted-1.8.7/AUTHORS
new file mode 100644
index 0000000..e955e6f
--- /dev/null
+++ b/parted-1.8.7/AUTHORS
@@ -0,0 +1,233 @@
+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.
diff --git a/parted-1.8.7/BUGS b/parted-1.8.7/BUGS
new file mode 100644
index 0000000..e7d3999
--- /dev/null
+++ b/parted-1.8.7/BUGS
@@ -0,0 +1,7 @@
+
+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/parted-1.8.7/COPYING b/parted-1.8.7/COPYING
new file mode 100644
index 0000000..3912109
--- /dev/null
+++ b/parted-1.8.7/COPYING
@@ -0,0 +1,340 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 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.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Library General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+ To do so, attach the following notices to the program. It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <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 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 St, Fifth Floor, Boston, MA 02110-1301 USA
+
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+ Gnomovision version 69, Copyright (C) year name of author
+ Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+ `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+ <signature of Ty Coon>, 1 April 1989
+ Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs. If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library. If this is what you want to do, use the GNU Library General
+Public License instead of this License.
diff --git a/parted-1.8.7/ChangeLog b/parted-1.8.7/ChangeLog
new file mode 100644
index 0000000..8a5c7a4
--- /dev/null
+++ b/parted-1.8.7/ChangeLog
@@ -0,0 +1,2483 @@
+commit 6a9b85014a7193d6bb08cc376fc8eca62de71806
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Wed May 9 16:45:38 2007 -0400
+
+ Removed clean.sh script. Using git now, we don't need it anymore (git
+clean -d -x).
+
+commit cda0b9bf4ad99a8c06a831e0efc46aeefdcfbc4c
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Wed May 9 16:41:30 2007 -0400
+
+ Updated NEWS file for 1.8.7.
+
+commit 5dae040800b2862280a3a4b65bc3cbbe01350cac
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Wed May 9 15:15:47 2007 -0400
+
+ Use gnulib xmalloc() and xrealloc().
+
+commit 774b5839c04173eccebee905b3d3fc08d464bf4e
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Wed May 9 15:14:29 2007 -0400
+
+ Whitespace cleanups.
+
+commit a65a6ee30e13cdb3354a51b67687b0ac6a7089c7
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Tue May 8 18:44:44 2007 -0400
+
+ Bump version to 1.8.7.
+
+commit 9e5e55c7a7f2be4ec819d08b99023d20d18f358a
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Tue May 8 18:44:23 2007 -0400
+
+ Blank the NEWS file in preparation for 1.8.7.
+
+commit e77bb0f0fe26c694e1786742ac24efad8bc8e6ef
+Author: Otavio Salvador <otavio@ossystems.com.br>
+Date: Wed May 9 16:03:39 2007 -0300
+
+ [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
+
+ Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+ (cherry picked from commit 20fd17ca725b0705e462d59604951ad7ea34497c)
+
+commit acc28864bb858bcdd476facd4bd9a0f79c1cd680
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Tue May 8 23:05:23 2007 +0530
+
+ Preventing compilation of DASD code on GNU Hurd systems through the use of
+AC_COMPILE_IFELSE and AM_CONDITIONAL, instead of #ifdef.
+ (cherry picked from commit 2b4fa6af6736ee2526da7f4ae6a173b29c321826)
+
+commit faca3cb2738d12f7e0346df03ad1ee162e988436
+Author: Jim Meyering <jim@meyering.net>
+Date: Mon May 7 18:42:38 2007 +0200
+
+ 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.
+ (cherry picked from commit 6803320261c8ad3e9e97d77c4548c0b151d5de34)
+
+commit a6c2ff8ede1d7eba0d8da5be0218670d15d08da7
+Author: Jim Meyering <jim@meyering.net>
+Date: Mon May 7 16:51:29 2007 +0200
+
+ 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.
+ (cherry picked from commit a15d89c3a553f5cf17bf844d0e9ae4a1089fc66f)
+
+commit f2e1e47ed24d688a5c611c9932e75bd4a66c18f3
+Author: Jim Meyering <jim@meyering.net>
+Date: Mon May 7 16:45:27 2007 +0200
+
+ 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."
+ (cherry picked from commit 0a8bfdca7c90a936dcf689bc54d5b098b84dc630)
+
+commit 8df6e6f03a69c97626e46fd141c19fae63bd207d
+Author: Jim Meyering <jim@meyering.net>
+Date: Mon May 7 16:38:00 2007 +0200
+
+ Avoid "make distcheck" failure, with newer system headers.
+ * parted/parted.c: Include <limits.h>, for use of CHAR_MAX.
+ (cherry picked from commit 6008ff8125e2a4612cece18cea4808a89eb3f911)
+
+commit cd3e8ca7f5ace787b81463c6ed884651f6628a4d
+Author: Anant Narayanan <anant@kix.in>
+Date: Fri May 4 05:09:52 2007 +0530
+
+ Updated Doxyfile
+ (cherry picked from commit c40d3fd6fb40f6c9a52dccaf8db2adc0117c1ada)
+
+commit 52bd893e3a0facc8f6b134534c1b578c6152afa3
+Author: Jim Meyering <jim@meyering.net>
+Date: Thu Apr 26 23:17:32 2007 +0200
+
+ 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.
+ (cherry picked from commit b235f8a487d81b4703e76e08add3c89cf109a06f)
+
+commit 22e12c227ed41ee04987714dab9a6db95cb8a39b
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Mon Apr 23 16:41:02 2007 -0400
+
+ Revert "Remove unused label."
+
+ This reverts commit bfd9a6d8b6322d870650b0e92bd936035ab28e76.
+ (cherry picked from commit 5ac8e21a86ecf8c9e639e4aeadad8b778052841c)
+
+commit 9b04b181d6147af89a1678ebcc5a7c52898f35ed
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Mon Apr 23 16:02:13 2007 -0400
+
+ Fix primary partition cylinder alignment error for DOS disk labels.
+
+commit 6aa9317010b0694d2c5b1dc85cec6d8e63659236
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Mon Apr 23 16:00:54 2007 -0400
+
+ Fix off-by-one bug in parted when displaying information about the disk
+label (the disk size, specifically).
+
+commit 5ba0af2247450bd4c2bca53c3971f043e3563e08
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Mon Apr 23 15:58:03 2007 -0400
+
+ 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.
+
+commit e31f600fea11ba29f48d125032daea500a63acc2
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Mon Apr 23 15:53:48 2007 -0400
+
+ Remove unused label.
+
+commit a699da637bd6b5a688b79afa8f41dd49b2a94517
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Tue May 1 10:01:50 2007 +0530
+
+ [tests] Separate and improved test for reading of disk labels.
+ (cherry picked from commit e736648c24372fd7532fef7c568a5424395b3a7a)
+
+commit a6bcab446e8957b771efd00ec52b288c04a3bfa4
+Author: Matthew Harris <mharris@coruscant.(none)>
+Date: Tue Apr 24 08:13:41 2007 -0700
+
+ Fix endianness bugs
+ (cherry picked from commit ecea0c9857813beae1c91b0afa39c17634b97a95)
+
+commit 0a5859eeda49909ae54a6510947c16934b86ef8d
+Author: Jim Meyering <jim@meyering.net>
+Date: Thu Apr 26 21:54:51 2007 +0200
+
+ Temporarily disable the clone-dvh-label test.
+ * libparted/tests/label.c (test_clone_label):
+ (cherry picked from commit ef8d13eb0053e5e0b87fea037a150b1eef3a3372)
+
+commit 6f04f317301b505079f492d57977f46c1e745ed2
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Sat Apr 21 00:59:15 2007 +0530
+
+ [tests] New test for probing of disk labels.
+ (cherry picked from commit b40a7a0976280fc861d5afa7563b28f561818b55)
+
+commit 1cba5a2f1ebcae79d710f601b4bb1306d6fa5519
+Author: Jim Meyering <jim@meyering.net>
+Date: Sat Apr 21 18:59:43 2007 +0200
+
+ [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".
+
+ Signed-off-by: Jim Meyering <jim@meyering.net>
+ (cherry picked from commit 3b93925f767ee1727898674a6e357b7572157dd8)
+
+commit 4263c3a15f39d0dca01b35d671b44c60f4110db5
+Author: Otavio Salvador <otavio@ossystems.com.br>
+Date: Fri Apr 20 03:53:18 2007 -0300
+
+ [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.
+
+ Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+ (cherry picked from commit 5650695a9abf63c3930b0f5f44352b4e2a5469dc)
+
+commit 9b1ad1dc13f5f427c03b77d07a024e830c977a17
+Author: Otavio Salvador <otavio@ossystems.com.br>
+Date: Fri Apr 20 00:37:07 2007 -0300
+
+ [tests] Trivial coding style fixes around the tests code
+
+ Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+ (cherry picked from commit 5c438aee9b6fc699b5e4bb9adcbe2ed13c87f202)
+
+commit 9365c83cf57ca287a481f44b9a1e907994bb9b41
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Fri Apr 20 05:49:44 2007 +0530
+
+ [tests] New test for cloning of disk labels.
+ (cherry picked from commit a46cc7578fd2ff478b6e83850e06b73fe42911b1)
+
+commit bc19c56aad86d4eb7b8bb200b38ee77ff8e4bc29
+Author: Otavio Salvador <otavio@ossystems.com.br>
+Date: Thu Apr 19 21:30:53 2007 -0300
+
+ [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);
+ ...
+
+ Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+ (cherry picked from commit cba3a64fb1744f545c373594c8795a4da30558c4)
+
+commit dff847674fe48a08dc9ab5c6793d3dd4c8da3a8e
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Fri Apr 20 01:00:50 2007 +0530
+
+ [tests] Fix spacing around brackets and asterisks.
+
+ Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+ (cherry picked from commit a1ae8809d111795dcc977e693668bcfaf776fbbe)
+
+commit 319a886cc97fc1aa11054d839a0da80c3ee1777f
+Author: Benno Schulenberg <bensberg@justemail.net>
+Date: Mon Apr 9 23:34:15 2007 +0200
+
+ Handle options independent of their order.
+
+ Abort on any invalid option, and handle -v and -h first.
+
+ Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+ (cherry picked from commit b60e2a0cb24272cc9d5af043ab69aa2fba546f93)
+
+commit 55098d9d232ce7b15280afd5cb5e90673f5615a1
+Author: Otavio Salvador <otavio@ossystems.com.br>
+Date: Wed Apr 18 19:37:11 2007 -0300
+
+ [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.
+
+ Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+ (cherry picked from commit 0b3cdc7425a3b8d6095c1d0dd4e0d53851c52236)
+
+commit bc00d3be97e5ca55f7028e9ecd05de07fc841d79
+Author: Otavio Salvador <otavio@ossystems.com.br>
+Date: Wed Apr 18 19:35:57 2007 -0300
+
+ [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;
+
+ Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+ (cherry picked from commit c70ef4439cc5ea80db950f404ccdc2fef92bd488)
+
+commit e2177dee8b0836518c35492ad9a8608a2e6c76ad
+Author: Otavio Salvador <otavio@ossystems.com.br>
+Date: Wed Apr 18 17:05:05 2007 -0300
+
+ [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.
+
+ Signed-off-by: Otavio Salvador <otavio@ossystems.com.br>
+ (cherry picked from commit ad50aff79f5062d543b21e98d2de938bec247a26)
+
+commit 2cbdba25de402f48959a468b584e83dcc77ae331
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Tue Apr 17 00:04:54 2007 +0530
+
+ Show the update /etc/fstab message only when there has been a change to the
+disk. The message is now shorter and more direct.
+ (cherry picked from commit fc5e7030c2b672054c7732c36d009dc302ffe7aa)
+
+commit b1117fdbe4cce1ab12fb2da875e3528b72b4b99f
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Tue Apr 17 21:08:14 2007 +0530
+
+ Indentation fixes in libparted/tests/.
+ (cherry picked from commit 5b4bfde015d7e1c3b01b352d8eafe003e1cd8474)
+
+commit 80b1572bd1ef3b704e7fa8d67d1e75f768cb5156
+Author: solsTiCe d'Hiver <solsticed.hiver@laposte.net>
+Date: Fri Apr 6 00:01:46 2007 +0200
+
+ change the variable named start to offset to be consistent with the doc
+ (cherry picked from commit cc8f086cde0c75945e5dddfef67de02bf45ac8b8)
+
+commit 5aa851b89bcb649149952be50fe2bfbfdf25ca11
+Author: solsTiCe d'Hiver <solstice.dhiver@laposte.net>
+Date: Thu Apr 5 14:39:45 2007 +0200
+
+ remove any trace of PED_PARTITION_PRIMARY which was deprecated a long time
+ago to use PED_PARTITION_NORMAL
+ (cherry picked from commit f9ad3f0d114dedc706ffc4bd7fdc7ce13761766b)
+
+commit 43bb17ea7306402eda03872840ebc69b6004d289
+Author: Benno Schulenberg <bensberg@justemail.net>
+Date: Thu Mar 29 19:28:25 2007 +0200
+
+ Added 'rescue', 'unit', and 'version' to the man page, plus some small
+edits.
+ (cherry picked from commit 1792848063066de3cc62d3bcf9810bad77f230c2)
+
+commit abff646aa88e7ed0e18a7d2621b1e505a31ab4c9
+Author: Benno Schulenberg <bensberg@justemail.net>
+Date: Wed Apr 4 12:03:29 2007 +0200
+
+ Make the wording of warning somewhat clearer.
+
+commit 9c80df4b50c9838ef661fd4286ce56ed74cb0b6f
+Author: Otavio Salvador <otavio@ossystems.com.br>
+Date: Wed Apr 4 09:04:30 2007 -0300
+
+ Avoid segfault due a double free on reiserfs support (patch sent by Jakub
+Bogusz <qboosh@pld-linux.org>)
+
+commit 0005325e24fe2ae21dc8e978da6597619335b197
+Author: Benno Schulenberg <bensberg@justemail.net>
+Date: Tue Mar 27 00:23:18 2007 +0200
+
+ Tweak some help messages: change third person to imperative for
+consistency, add single quotes and remove letters for clarity
+
+commit 39ebba8b5b31b00e6896405055335ff2af6e12b3
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Tue Mar 20 01:37:13 2007 -0400
+
+ Added %find_lang to the spec file template.
+
+commit 7362c6e3074cbd9a9163a96ac46327b62c7ac41c
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Tue Mar 20 00:58:16 2007 -0400
+
+ Fix variable names.
+
+commit 818404016bddbc929b8165106fa45897bb4a121b
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Tue Mar 20 00:09:08 2007 -0400
+
+ Updated file sizes.
+
+commit 1f1c4e94bc2e3994cd8a42d1fcb42f9c3e8250f0
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Mon Mar 19 22:40:15 2007 -0400
+
+ Update NEWS for 1.8.5.
+
+commit 39ff688b9a3b7d20288373c53d4927e431ee6d48
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Mon Mar 19 17:26:39 2007 -0400
+
+ Update for version 1.8.5.
+
+commit b8dab26e6d815a86a4cb9b33c4f1a64b51ab1dcc
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Mon Mar 19 17:25:29 2007 -0400
+
+ wget lies, cheats, and steals. Use curl to download PO files instead.
+
+commit cb63e683259f9425f8f4949287316503cf929467
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Mon Mar 19 14:30:27 2007 -0400
+
+ Updated NEWS file for 1.8.4.
+
+commit 028f3b3d8f7ba29bca6117d897faf25fef54c2a7
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Mon Mar 19 14:20:52 2007 -0400
+
+ Remove GNU make-specific things from po4a.mk.
+
+commit 6e1bad8c99e2a5db61dcb8ad3c8c2ef1ef3dffb8
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Mon Mar 19 14:02:00 2007 -0400
+
+ Update.
+
+commit c26019b8fdd8fdb2c5f5d4b9978b153f3eced8f8
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Mon Mar 19 14:01:46 2007 -0400
+
+ Conditionalize the System Z stuff correctly. We get headers installed on
+non-System Z platforms, but the code only compiles on that platform.
+
+commit b07405d594cf3110ecf01086819e33924dc16f8f
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Mon Mar 19 11:22:22 2007 -0400
+
+ Added a section for version 1.8.4 (it's only a minor bug fix release).
+
+commit 82bd95c127e699ea46d83d0ef983bd1bbeddb241
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Mon Mar 19 11:22:06 2007 -0400
+
+ Update to 1.8.4 for the version number.
+
+commit 26522f85f7f9b03a1273b73bf17cc035ad0d74b2
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Mon Mar 19 11:20:55 2007 -0400
+
+ 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.
+
+commit d5186c9ce91f43e1302a0e3b4edcee08578cac2c
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Mon Mar 19 11:19:27 2007 -0400
+
+ Include vtoc.h for the format1_label_t typedef.
+
+commit b222813d2c6bd2d48b5c208b0f98ec1c7ddd23c6
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Mon Mar 19 11:12:11 2007 -0400
+
+ Remove some unused variables, check the return values from fgets() and
+asprintf(), and remove the unused _dm_remove_map() function.
+
+commit 39b8326cd8d2f720246e30567558860a89afdc13
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Mon Mar 19 11:10:38 2007 -0400
+
+ Check for tgetent() in libtinfo as well as ncurses, curses, termcap, and
+termlib.
+
+commit f6ad5d645eb0c41fc55cb52ad901f5661135d29d
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Mon Mar 19 11:09:25 2007 -0400
+
+ Fix for compile problems with gcc-4.1.2 as indicated here:
+ http://lists.gnu.org/archive/html/bug-parted/2007-03/msg00008.html
+
+commit cba88be73e1323cd5ab101eab717a9b56dcacfbf
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Mon Mar 19 10:43:56 2007 -0400
+
+ 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.
+
+commit 1f4627cb45b50b1c102d59c2a07235b545e4b862
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Mar 16 16:09:08 2007 -0400
+
+ Updated the release script to work with the new source layout.
+
+commit 7dd9ac4a860a4965a215aa33872f1bea6e688f93
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Mar 16 15:20:22 2007 -0400
+
+ Ignore the gnulib/ subdirectory in version control.
+
+commit d165ede94cfa70cc5f72894e12aed851b47ce795
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Mar 16 15:19:57 2007 -0400
+
+ More spec file template cleanups.
+
+commit 2328bb6bc41ee07a9284b5233e7986d9dbf2524a
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Mar 16 15:18:27 2007 -0400
+
+ File size updates.
+
+commit 412eb2ae187bfd63480d5cbc4a4ab10e792fe77c
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Mar 16 15:18:08 2007 -0400
+
+ Install the libparted.pc file, not the libparted.pc.in file.
+
+commit 1027064bbd7d587808e28ffd488c00ea1a5dece3
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Mar 16 15:10:03 2007 -0400
+
+ Updated NEWS for version 1.8.3.
+
+commit abab0f1e36da89edc36f10d01bfdc11657e251fa
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Mar 16 14:50:34 2007 -0400
+
+ Revert "From: Jim Meyering <jim@meyering.net> - 2048-byte linux_write patch"
+
+ This reverts commit 152c426cacedcd20db4515bd40d66ece6632c258.
+
+ Test hardware not secured in time for release. Postponing this patch to
+ next release.
+
+commit 152c426cacedcd20db4515bd40d66ece6632c258
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Mar 16 14:10:11 2007 -0400
+
+ From: Jim Meyering <jim@meyering.net>
+
+ Patch linux_write() to handle logical sector sizes larger than
+PED_SECTOR_SIZE_DEFAULT (512).
+
+commit 66939bf90b96e5cbe09889e4d3490837f87fc285
+Author: Jim Meyering <jim@meyering.net>
+Date: Fri Mar 16 10:59:19 2007 +0100
+
+ po/POTFILES.in: Add lib/getopt.c
+
+commit b3ed253cbbc93f61cbf06e7b87f1065619d39cc9
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Fri Mar 16 19:50:32 2007 +0530
+
+ Fixed faulty information in README-hacking (Bison is not a maintainer tool
+for Parted), and Makefile.maint (every project has certain variations of it).
+
+commit 4f9da17313899b0ea98373249cb6a6d09c32ea4a
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Fri Mar 16 12:12:34 2007 +0530
+
+ 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.
+
+commit e117aded872afad903758900353487ab9f3265be
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Tue Mar 13 17:34:05 2007 -0400
+
+ Modernize the spec file template.
+
+commit d6a40ac2888f221b41d3a46a9bcf33e4171409eb
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Thu Mar 15 13:03:24 2007 -0400
+
+ 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.
+
+commit 5a968514dfc49c716c04a4b4de4b1756253618cf
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Thu Mar 15 12:53:35 2007 -0400
+
+ Reverted my patch to configure.ac to remove -Wl,--as-needed from LDFLAGS
+when checking for libreadline.
+
+commit 8c2e29fefa1ce459764b694c68f495034fff3a88
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Wed Mar 14 14:55:49 2007 -0400
+
+ 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.
+
+commit ac91d97b31643951836c8fdc071be88c177df186
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Tue Mar 13 23:24:17 2007 -0400
+
+ Ignore more files.
+
+commit 2793d89afb88df92396fcd0a722b0b676841bf95
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Tue Mar 13 15:05:53 2007 -0400
+
+ More changes to set the version number to 1.8.3.
+
+commit d0bfc19688128a4da86a6bec875266b5cb8f5878
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Tue Mar 13 13:37:45 2007 -0400
+
+ Patch from Matthew Garrett <mjg59@srcf.ucam.org> to add HFS+ resize support.
+
+commit b2390873a632d04a133191c6b9feb21b15f58722
+Author: Jim Meyering <jim@meyering.net>
+Date: Thu Mar 8 01:05:33 2007 +0100
+
+ Don't use deprecated mktemp, to avoid linker warning
+ * libparted/tests/common.c (_create_disk): Rewrite to
+ use mkstemp instead.
+
+commit 499a48b7413e60fd39d1be79db79b3b8745d000c
+Author: Jim Meyering <jim@meyering.net>
+Date: Wed Mar 7 18:56:21 2007 +0100
+
+ tests/label: Don't dereference NULL if open fails.
+ * libparted/tests/label.c (START_TEST): Return right away if
+ ped_device_get returns NULL.
+
+commit 8da395b8b5bdf26730c59d696975edc4a2067f8d
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Tue Mar 13 13:03:02 2007 -0400
+
+ Set version to 1.8.3 for upcoming release.
+
+commit 8cf8ecbf9018c12429bec550f55a867b9df5a7f3
+Author: Jim Meyering <jim@meyering.net>
+Date: Mon Mar 12 14:58:40 2007 +0100
+
+ 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.
+
+commit 39437335049b0e0d0fa0c36bb69c50dc2ef0eae9
+Author: Jim Meyering <jim@meyering.net>
+Date: Thu Mar 8 23:40:03 2007 +0100
+
+ 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.
+
+commit 154a2c3028359d3f8f9fcd0d6446e64e185a2fce
+Author: Jim Meyering <jim@meyering.net>
+Date: Thu Mar 8 23:11:53 2007 +0100
+
+ 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):
+
+commit 53d9a7d2e7104b91a1575a1ad01d403788fce94f
+Author: Jim Meyering <jim@meyering.net>
+Date: Thu Mar 8 22:39:33 2007 +0100
+
+ * 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".
+
+commit da62e39536d0aaeaff1e855374c2c7be7237a44c
+Author: Jim Meyering <jim@meyering.net>
+Date: Thu Mar 8 17:41:34 2007 +0100
+
+ 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.
+
+commit 6236d44bb8133131a06aef2a6d596f7b5fe1d886
+Author: Jim Meyering <jim@meyering.net>
+Date: Thu Mar 8 01:04:44 2007 +0100
+
+ * libparted/tests/label.c: Plug a trivial leak.
+
+commit 1e4c2c85ad53bc3163b2a000336d39a80e9a236f
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Thu Mar 8 01:48:30 2007 +0530
+
+ Replaced [f]printf with fput[c|s] globally.
+
+commit 881c973e12735983e42307a2b208a86a24cefdc5
+Author: Jim Meyering <jim@meyering.net>
+Date: Wed Mar 7 19:39:56 2007 +0100
+
+ 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):
+
+commit b8afc0b5d48aefb48cd3b2eeb811dca83cfa9401
+Author: Jim Meyering <jim@meyering.net>
+Date: Wed Mar 7 19:27:18 2007 +0100
+
+ 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):
+
+commit cb77063c26281dae2dbce6079819c4aad4e15b15
+Author: Jim Meyering <jim@meyering.net>
+Date: Wed Mar 7 18:17:00 2007 +0100
+
+ 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.
+
+commit b906fb597e84c5ff7ca3c54343b6c2de216d2471
+Author: Jim Meyering <jim@meyering.net>
+Date: Wed Mar 7 12:29:47 2007 +0100
+
+ 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.
+
+commit cc1955e39202f9ff5ecf9f3bf874af1b85a737aa
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Tue Mar 6 17:19:31 2007 -0500
+
+ start_pos is a PedSector, not a PedGeometry.
+
+commit 51e774269002a7a9c0aecf497d4d98486c918918
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Tue Mar 6 11:18:20 2007 -0500
+
+ 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.
+
+commit 40bfba3a317f33e7bc55fdd8cd5073ac69ae280a
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Fri Mar 2 13:20:28 2007 -0500
+
+ Patched parted.8 man page to show partition names apply to GPT disk labels
+
+ as well as Mac and PC98 disk labels.
+
+commit 5330d232f97619b39277bd46f8858bb41a8f1541
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Tue Mar 6 20:47:58 2007 +0530
+
+ Replaced [f]printf with fput[c|s] in
+libparted/fs/ext2/ext2_block_relocator.c.
+
+commit 57b3c73e7e4d01ac87212501f7a87477be018d12
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Tue Mar 6 16:38:33 2007 +0530
+
+ Re-arranging .gitignore in alphabetical order.
+
+commit f4a46701638355a80e75909315878b3b7237b6b5
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Tue Mar 6 15:57:24 2007 +0530
+
+ Defined a dummy '_dump_history' function in parted/ui.c when Readline is
+absent. Thanks to Jim Meyering for the suggestion.
+
+commit d72b78e2f55e44985716f37c0fde40e5f8fd79eb
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Tue Mar 6 15:51:58 2007 +0530
+
+ Added libparted/tests/label to .gitignore.
+
+commit 7ca20fbca15e89d8d40c33d11917c6969f1ed403
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Tue Mar 6 14:37:25 2007 +0530
+
+ Fixed parted/ui.c to incorporate signal handlers for systems lacking
+'sigaction', 'SA_SIGINFO', and other constants in signal.h.
+
+commit ce3810b4372764154b71a299c3e90eb08a610a46
+Author: Jim Meyering <jim@meyering.net>
+Date: Mon Mar 5 22:44:38 2007 +0100
+
+ 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.
+
+commit 3011e1809a1935f576a5ec80681cc5fcf94cd262
+Author: Jim Meyering <jim@meyering.net>
+Date: Mon Mar 5 22:07:23 2007 +0100
+
+ Hide two unnecessarily-"extern" functions.
+ * libparted/labels/mac.c (mac_alloc): Declare static.
+ * libparted/labels/dos.c (raw_part_parse): Declare static.
+
+commit f0c8fc255dbdefea2f5c79ae100f89c852952312
+Author: Jim Meyering <jim@meyering.net>
+Date: Mon Mar 5 15:37:25 2007 +0100
+
+ * 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.
+
+commit 869a6b4e28218b09c5b9e46b214e02ce75450d70
+Author: Jim Meyering <jim@meyering.net>
+Date: Mon Mar 5 15:06:31 2007 +0100
+
+ * po/POTFILES.in: Add partprobe/partprobe.c, now that it contains
+ translatable strings.
+
+commit cc46aa2dbbaebc7f68e8bbfc9bfb313a2e1c2e18
+Author: Jim Meyering <jim@meyering.net>
+Date: Mon Mar 5 14:47:02 2007 +0100
+
+ 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.
+
+commit 3389f62ba35ca2f0c5ba87ae29af5ef807ecf985
+Author: Jim Meyering <jim@meyering.net>
+Date: Mon Mar 5 14:47:02 2007 +0100
+
+ 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.
+
+commit a3f971d08ff676bd515da2830acfddd3753d5b6e
+Author: Jim Meyering <jim@meyering.net>
+Date: Mon Mar 5 14:44:58 2007 +0100
+
+ * include/parted/disk.h (struct _PedDiskOps) [write]: Change
+ parameter type to be "const".
+
+commit 6b0d9c51985ae48af05250bd50600f387ba7ff8d
+Author: Jim Meyering <jim@meyering.net>
+Date: Mon Mar 5 14:37:39 2007 +0100
+
+ 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.
+
+commit e1fee6ee482fee8ad1b255e29d3b39bff37b979c
+Author: Jim Meyering <jim@meyering.net>
+Date: Mon Mar 5 10:19:53 2007 +0100
+
+ Avoid a libtool warning:
+ libtool: link: warning: `-release' is ignored for convenience libraries
+ * libparted/labels/Makefile.am (liblabels_la_LDFLAGS): Don't define.
+
+commit ceffe567344966353079819f6c7aab357a7809c1
+Author: Jim Meyering <jim@meyering.net>
+Date: Mon Mar 5 10:13:08 2007 +0100
+
+ 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).
+
+commit 334e10639c208c0e69317556b5bae4af35f4fb70
+Author: Jim Meyering <jim@meyering.net>
+Date: Fri Mar 2 12:23:25 2007 +0100
+
+ 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.
+
+commit 233c78f24efe16ef29626f348cf7e4f4f275668f
+Author: Jim Meyering <jim@meyering.net>
+Date: Fri Mar 2 11:56:02 2007 +0100
+
+ 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.
+
+commit 037e1d061a3bbf0f85c80c92d31b1081ea22e182
+Author: Jim Meyering <jim@meyering.net>
+Date: Fri Mar 2 11:55:58 2007 +0100
+
+ 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.
+
+commit 478c89f683083a768fb47d33059af3005bf3be82
+Author: Jim Meyering <jim@meyering.net>
+Date: Fri Mar 2 11:55:50 2007 +0100
+
+ 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.
+
+commit 852b9c08a7a1ae8ec7e58145a7f128cf69cbaa2f
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Thu Mar 1 21:42:32 2007 +0530
+
+ Fixing indentation in parted/ui.c. Replaced TABs with spaces to ensure
+uniformity in all editors.
+
+commit b3603b541252f0dedfd3adc10aec2e79f9a2d586
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Wed Feb 28 21:01:52 2007 +0530
+
+ Fixing indentation in parted/ui.c.
+
+commit 25d5569313677c66dd850af34a6c6f61b0c7e5a7
+Author: Jim Meyering <jim@meyering.net>
+Date: Tue Feb 27 18:56:36 2007 +0100
+
+ 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.
+
+commit 7cc9fd767dadcf8bbacd8e6d498781b3113d5721
+Author: Jim Meyering <jim@meyering.net>
+Date: Tue Feb 27 16:22:29 2007 +0100
+
+ Add -I$(top_srcdir)/lib, required for new use of close_stdout.
+ * partprobe/Makefile.am (partedincludedir):
+
+commit dd3fe031ff4f06df145c50d557b65ce5716e1029
+Author: Jim Meyering <jim@meyering.net>
+Date: Tue Feb 27 13:16:44 2007 +0100
+
+ Arrange for "make distcheck" to be stricter.
+
+commit 15ae6ceca82602fe3a1c6ef6130f0ca133c7016b
+Author: Jim Meyering <jim@meyering.net>
+Date: Tue Feb 27 00:43:55 2007 +0100
+
+ * bootstrap: new file.
+
+commit 72d1a0c4e574c528e30b1e104490772530eedcb1
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Tue Feb 27 04:02:44 2007 +0530
+
+ Fixing libparted/arch/gnu.c to remove build-time errors.
+
+commit 802504ae11a79d3ed72fc3466dd3a96de1139c12
+Author: Jim Meyering <jim@meyering.net>
+Date: Sun Feb 25 18:46:05 2007 +0100
+
+ 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.
+
+commit 1bfda3859e3f6d19cfdff4794da5d150bec4c6b3
+Author: Jim Meyering <jim@meyering.net>
+Date: Sun Feb 25 18:44:30 2007 +0100
+
+ Add a bunch of .gitignore files.
+
+commit 7a46b70e5ecc0b1eb97e87158e2ca0816d63214e
+Author: Jim Meyering <jim@meyering.net>
+Date: Sun Feb 25 18:44:30 2007 +0100
+
+ Avoid a gcc format warning:
+ * debug/clearfat/clearfat.c (_do_help): Use fputs, not printf.
+
+commit 17e5036bf4e4e5c88b94562432e10d1ae3b2b1b0
+Author: Jim Meyering <jim@meyering.net>
+Date: Sun Feb 25 18:44:30 2007 +0100
+
+ 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.
+
+commit 720c03986d3d9e158c54bbe89afa970c1e3be60e
+Author: Jim Meyering <jim@meyering.net>
+Date: Sun Feb 25 18:44:30 2007 +0100
+
+ 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.
+
+commit 40758f1bd909f927e81f9a523fc4169e18572eec
+Author: Jim Meyering <jim@meyering.net>
+Date: Sun Feb 25 18:44:30 2007 +0100
+
+ * 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.
+
+commit dea71f503c58d39ba5a7901c675f3dcc4522962d
+Author: Jim Meyering <jim@meyering.net>
+Date: Sun Feb 25 18:44:30 2007 +0100
+
+ 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:
+
+commit 2cc2792a2ff36fd9f959577c1f6058d9eb9ba3dd
+Author: Jim Meyering <jim@meyering.net>
+Date: Sun Feb 25 18:44:30 2007 +0100
+
+ * libparted/libparted.c: Include "configmake.h" for LOCALEDIR defn.
+
+commit e08dea672f8f0715acd873117121f716565d292c
+Author: Jim Meyering <jim@meyering.net>
+Date: Sun Feb 25 18:44:30 2007 +0100
+
+ 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.
+
+commit 2944a1e139782729b980d55d01394b4148321ab0
+Author: Jim Meyering <jim@meyering.net>
+Date: Sun Feb 25 18:44:29 2007 +0100
+
+ Include <config.h>, not "../config.h".
+
+commit e2583060e3ba1b94465a79f9cc8fadf02ee7b5ef
+Author: Jim Meyering <jim@meyering.net>
+Date: Sun Feb 25 18:43:53 2007 +0100
+
+ 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.
+
+commit 66760ee42fd8c627cb2a32fea23908f3e08d164c
+Author: Jim Meyering <jim@meyering.net>
+Date: Sun Feb 25 18:38:41 2007 +0100
+
+ 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.
+
+commit a7975b69a52675f8a1ef346d4b5ebf994200c88e
+Author: Anant Narayanan <anant@theghost.local>
+Date: Fri Feb 23 16:18:31 2007 +0530
+
+ Fix memleaks. Patch thanks to Mike Hommey
+
+commit 7855179120162cd4de8bd7dc04e21809b8f1d413
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Mon Feb 19 10:58:46 2007 +0530
+
+ Introduced MAINTAINERCLEANFILES in Makefile.am for carrying out 'make
+maintainer-clean'.
+
+commit 9d4a4289659625ef143e8c74a26654a7c4da2906
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Mon Feb 19 09:09:44 2007 +0530
+
+ Cleaning up nested structs & unions.
+
+commit 4529f6625622b459975c59921f4360afe6b7eb5c
+Author: Jim Meyering <jim@meyering.net>
+Date: Fri Feb 16 15:55:40 2007 +0100
+
+ 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.
+
+ Signed-off-by: Jim Meyering <jim@meyering.net>
+
+commit cbf5b4da095637e18ab6f2b8a52a506a4126845b
+Author: Jim Meyering <jim@meyering.net>
+Date: Thu Feb 15 16:05:17 2007 +0100
+
+ * libparted/labels/rdb.c (amiga_read): Remove decl of unused local(s).
+
+ Signed-off-by: Jim Meyering <jim@meyering.net>
+
+commit 3f3af4affe2ee037620c717acc7d3fc84422574c
+Author: Jim Meyering <jim@meyering.net>
+Date: Thu Feb 15 15:56:23 2007 +0100
+
+ * libparted/labels/bsd.c (bsd_partition_new): Remove unused label.
+
+ Signed-off-by: Jim Meyering <jim@meyering.net>
+
+commit 74eb62c50d7a6107f7c9dcb5273060f20da990b8
+Author: Jim Meyering <jim@meyering.net>
+Date: Thu Feb 15 15:53:44 2007 +0100
+
+ * libparted/labels/dasd.c: Remove unused labels and declarations
+
+ of unused variables.
+
+ Signed-off-by: Jim Meyering <jim@meyering.net>
+
+commit 93ca20d8aebd0d04dbb00b86a2903c992e59a96b
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Fri Feb 16 10:10:17 2007 +0530
+
+ Fix the style of typedef, enum, struct and __attribute__ ((packed)).
+
+commit f4022a35faf01c5286ab5b44bce080e80d310099
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Thu Feb 15 10:25:41 2007 +0530
+
+ Deprecating ped_[register|unregister]_disk_type in favour of
+ped_disk_type_[register|unregister].
+
+commit 3965965b3413df11d6306704478490f6e5b72549
+Author: Jim Meyering <jim@meyering.net>
+Date: Tue Feb 13 22:51:56 2007 +0100
+
+ 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.
+
+ Signed-off-by: Jim Meyering <jim@meyering.net>
+
+commit f757156d846c70a88b90ab3ff47ff385ed136a56
+Author: Jim Meyering <jim@meyering.net>
+Date: Wed Feb 14 12:37:45 2007 +0100
+
+ 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.
+
+ Signed-off-by: Jim Meyering <jim@meyering.net>
+
+commit 4ae6903525e60202efa78ebec336d1bb2c3bb6b4
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Wed Feb 14 22:19:42 2007 +0530
+
+ Fixed the copyright notices.
+
+commit 69b733fcedc80d7192fb98c2ade006938c6d58f8
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Wed Feb 14 21:39:57 2007 +0530
+
+ Cleaned up the formatting of AUTHORS.
+
+commit d29c917bf4a22a084deecf769346f030b87e0eb8
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Wed Feb 14 20:25:12 2007 +0530
+
+ Tidying up the formatting and comments in linux_swap.c.
+
+commit 951e82fc0c102aa8187cf19de49c9f504eaa60f6
+Author: Jim Meyering <jim@meyering.net>
+Date: Tue Feb 13 21:02:08 2007 +0100
+
+ 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.
+
+ Signed-off-by: Jim Meyering <jim@meyering.net>
+
+commit 2d2e20fc366c08519fdac33d74686da87d8291f5
+Author: Jim Meyering <jim@meyering.net>
+Date: Tue Feb 13 17:10:18 2007 +0100
+
+ Remove some #ifdefs
+
+ Remove some #ifdefs.
+ * parted/table.c (L_): define.
+ Remove in-function #ifdefs; use L_(str) instead.
+
+ Signed-off-by: Jim Meyering <jim@meyering.net>
+
+commit f38cb2091e5f9cd300b4bc0aa93138c205d34135
+Author: Jim Meyering <jim@meyering.net>
+Date: Tue Feb 13 17:08:35 2007 +0100
+
+ * libparted/labels/fdasd.c (GETARG): Remove unused definition.
+
+ A tiny change...
+
+ Signed-off-by: Jim Meyering <jim@meyering.net>
+
+commit 7074a16500bc275a4f5bb4bd0a02d26b3c83ae9a
+Author: Otavio Salvador <otavio@ossystems.com.br>
+Date: Tue Feb 13 09:44:33 2007 -0200
+
+ Create 'm4' directory when generating the building system
+
+commit e3c1ef348cea4ab998224db3e77672db9b7af8d7
+Author: Jim Meyering <jim@meyering.net>
+Date: Mon Feb 12 23:30:46 2007 +0100
+
+ 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.
+
+commit 64f61abbcaefe060433196e323eba251bfc6e17e
+Author: Jim Meyering <jim@meyering.net>
+Date: Mon Feb 12 23:35:30 2007 +0100
+
+ 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.
+
+ Signed-off-by: Jim Meyering <jim@meyering.net>
+
+commit eff7c75fbe7348e20fde39f0f02dc9613ccd7afc
+Author: Jim Meyering <jim@meyering.net>
+Date: Mon Feb 12 23:38:07 2007 +0100
+
+ 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.
+
+ Signed-off-by: Jim Meyering <jim@meyering.net>
+
+commit 92f00c9a4b6669954aa8689c5963c52ceaefdf57
+Author: Riccardo Setti <giskard@piton.asimov.bot>
+Date: Mon Feb 12 13:24:29 2007 +0100
+
+ 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
+
+commit 760e6decef7aac12aada62c3185e83506fcb5d47
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Wed Jan 31 02:01:43 2007 +0530
+
+ Renaming PARTITION_EXT to PARTITION_DOS_EXT in MSDOS disk-label code, to
+maintain similarity with Linux v2.6.18.2
+
+commit 98a53fd115ca012edf226525b8d4be628454f99e
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Wed Jan 17 18:56:46 2007 +0530
+
+ 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.
+
+commit f58467190721c7d29b2d07c1567cdd90633f1996
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Tue Jan 16 23:13:09 2007 +0530
+
+ Synchronize the linux-swap (new version) header according to the Linux
+kernel sources.
+
+commit 8cc182e1919144ecaede5b95983b6528017a78ac
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Tue Jan 16 22:41:47 2007 +0530
+
+ cb6ca73be06f360308e6a2fccb7142ed8175af29 continued.
+
+commit cb6ca73be06f360308e6a2fccb7142ed8175af29
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Tue Jan 16 06:43:36 2007 +0530
+
+ Add stdint.h stdlib.h & string.h to include/parted/parted.h and remove them
+from other files.
+
+commit 21dc308fe0829e12d55fba0e6f75063cf7bf651a
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Sun Jan 14 21:06:58 2007 +0530
+
+ Synchronise manual page and --help documentation.
+
+commit 7ad100209c0a7382ca36cc4b337b8800d45c4a7a
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Fri Jan 12 12:47:13 2007 -0500
+
+ Updated i18n information.
+
+commit 400386a9a6f39b052ecebb307cf2aa8c3bfc0e35
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Fri Jan 12 10:05:08 2007 -0500
+
+ Add ped_device_cache_remove() prototype.
+ (cherry picked from commit cb53b87ab2f779633f152f478c7f8c99c2fd1817)
+
+commit 935ae113d257fa4f42ca97b30650f056238e7705
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Fri Jan 12 10:06:40 2007 -0500
+
+ 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)
+
+commit 5fa95be2c48e0913f78dabe2c9c078d0742a71f8
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Fri Jan 12 10:07:17 2007 -0500
+
+ Fix a segfault in ped_assert() where the wrong pointer is freed in the
+backtrace.
+ (cherry picked from commit 63f7b33b352d0d699efeb1095340ed6139c49e3b)
+
+commit b5e6500868c4216b5c137799c898870726f28a00
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Fri Jan 12 10:07:45 2007 -0500
+
+ Add the ped_device_cache_remove() function to remove a device from the
+cache.
+ (cherry picked from commit 5fb6658d124050a9dc27a87f2e1c3ffd3d1ad7c0)
+
+commit 1c1251c20172246671ac2c0c7c66663af902fdf3
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Fri Jan 12 10:10:07 2007 -0500
+
+ Updated the AUTHORS file.
+ (cherry picked from commit 7ab32d423cc43a5e9372a7dc000feb183db9a89a)
+
+commit 9ef417f05d1405d6a6b874d77d93ccf3113deee6
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Fri Jan 12 08:10:15 2007 +0530
+
+ Rectify segmentation fault caused by
+9e05418de3477666b0709f5d1996149febd33100
+
+commit 399cc344ef9ec0b2c06132b95ee4195779d44686
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Fri Jan 12 06:35:58 2007 +0530
+
+ Update doc/C/parted.8 to document --list.
+
+commit 9e05418de3477666b0709f5d1996149febd33100
+Author: Otavio Salvador <otavio@debian.org>
+Date: Sat Dec 16 18:47:53 2006 -0200
+
+ parted/parted.c: Destroy all objects before return when called with --list
+or --all option.
+
+commit 7f310ecdeb187c3ccd0f51c7cc874f34fb95cf81
+Author: Anant Narayanan <anant@kix.in>
+Date: Fri Jan 5 23:42:23 2007 +0530
+
+ Dump readline history on crash
+
+commit 8acac4f1497e55447d931df8a128af3a14452385
+Author: Anant Narayanan <anant@kix.in>
+Date: Thu Dec 14 22:00:59 2006 +0530
+
+ Loosen requirement for the 'check' library.
+
+commit 45713930032b8e0664287a6cb354509f7df281e7
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Fri Dec 15 01:26:03 2006 +0530
+
+ Update AUTHORS.
+
+commit f74b890bb3658b972b02e98e4354994306cb8372
+Author: Leslie P. Polzer <polzer@gnu.org>
+Date: Wed Dec 13 17:23:15 2006 +0100
+
+ added scripts/update-po
+
+commit a7b47b3632fd2ac59495520b9db02a57c6c82794
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Tue Dec 12 19:26:09 2006 -0500
+
+ Merge branches 'master' and 'master' of
+git+ssh://dcantrell-guest@git.debian.org/git/parted/parted
+
+commit 60a1188ce869ec19a0650cb4251f80bc2b51625c
+Author: Leslie P. Polzer <polzer@gnu.org>
+Date: Mon Dec 11 18:00:00 2006 +0100
+
+ Updated translations.
+
+commit b9fadd12d1a6c0a853f999398ed5d689fd7d9106
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Sat Dec 9 01:11:49 2006 +0530
+
+ Alias 'print list' with 'print all'.
+
+commit 6928477436823359850941fabd78444635752095
+Author: Otavio Salvador <otavio@ossystems.com.br>
+Date: Mon Dec 11 07:46:34 2006 -0200
+
+ Include a disk probing test
+
+commit c95d7f912f577c6188c4900826f50ddd54505b4e
+Author: Otavio Salvador <otavio@ossystems.com.br>
+Date: Mon Dec 11 07:46:34 2006 -0200
+
+ If CHECK is installed on configure time, build our unittest framework
+
+commit 38f29307583865f83117aa7c7c85a297feefad18
+Author: Otavio Salvador <otavio@ossystems.com.br>
+Date: Mon Dec 11 07:46:33 2006 -0200
+
+ Add CHECK unittext library detection to Autoconf script
+
+commit ab143e1794c06ee5828450ec48ebccd2a89adfa4
+Author: Leslie P. Polzer <polzer@gnu.org>
+Date: Sat Dec 9 10:51:43 2006 +0100
+
+ Release script: cannot call "return" from top level; replaced with "exit".
+
+commit a6c3ff6df55c31c922a7e963662b1a0d76001162
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Fri Dec 8 00:51:06 2006 +0530
+
+ Zero sized device is shown as 0.00B and not -0.00kB.
+
+commit 17155dfd54b893181c0cc6aee98b1387b4e3ba7a
+Author: Otavio Salvador <otavio@debian.org>
+Date: Wed Dec 6 23:33:52 2006 -0200
+
+ libparted/exception.c: Dynamically allow space of exception message.
+
+commit b8903b3f54151437a2fff93399ca50b01abd4184
+Author: Otavio Salvador <otavio@debian.org>
+Date: Wed Dec 6 22:44:40 2006 -0200
+
+ Output a backtrace when catching SEGV_MAPERR or a general SIGSEGV signals.
+
+commit 13c28f379c46d983e7005808261119c188b9c8a0
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Thu Dec 7 07:31:39 2006 +0530
+
+ Implement 'print devices'.
+
+commit 7df669078834b8a48eb29042d1c6fea06e221367
+Author: Benno Schulenberg <bensberg@justemail.net>
+Date: Wed Dec 6 00:00:03 2006 +0100
+
+ Translate the copyright message, and hard wrap it
+
+commit a9fea1add642a8f1243932a4db2ee967ad668a4b
+Author: Otavio Salvador <otavio@debian.org>
+Date: Tue Dec 5 15:32:26 2006 -0200
+
+ libparted/disk.c: Standarize the way we walk throught the disk types
+overall the code
+
+commit 0f1ba3f5d9d57f3a2205ec67738f611cf5b22e7d
+Author: Otavio Salvador <otavio@debian.org>
+Date: Tue Dec 5 14:16:04 2006 -0200
+
+ 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.
+
+commit fe914828d2b36451a7056292560820633c891afe
+Author: Otavio Salvador <otavio@debian.org>
+Date: Tue Dec 5 14:12:24 2006 -0200
+
+ parted/parted.c: Remove useless line break
+
+commit ba43cb6ff7bb1d945062e25b94efecb1b84c0c33
+Author: Otavio Salvador <otavio@ossystems.com.br>
+Date: Mon Dec 4 23:40:54 2006 -0200
+
+ Add check unittest support and a initial test for a resizing bug.
+
+commit dc4df69ecac2c693328dba452f4b4e9df9c0d29f
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Sun Dec 3 22:20:25 2006 -0500
+
+ Fix the upload script to correctly reference the sig files.
+
+commit be1a157ad3657b1c1406d2b246df9e49afca826f
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Sun Dec 3 20:31:10 2006 -0500
+
+ Remove ChangeLog, doc/mdate-sh, and doc/texinfo.tex since they are
+unmanaged files and get generated automatically at release time.
+
+commit 0b8b2da570ceda85f79e1b2b1239f7e5a4668ece
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Sun Dec 3 20:30:44 2006 -0500
+
+ Generate ChangeLog before running the autogen tools because we need a file
+called 'ChangeLog' to exist when running those tools.
+
+commit afeb97c0968ea0dda5f07d56ee1361562a8d6517
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Sun Dec 3 18:37:45 2006 -0500
+
+ Pass git changelog through 'fold -s' to wrap long lines.
+
+commit e6012cac9fa1999d2719f01c35df33cef9b92614
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Sun Dec 3 18:25:41 2006 -0500
+
+ 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.
+
+commit 00ab69cc4471643aa422e3bf9a536ac2fff64266
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Sun Dec 3 18:09:54 2006 -0500
+
+ 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.
+
+commit 155b8da6f647a09b365a599d96ce259fd4649429
+Author: Leslie P. Polzer <polzer@gnu.org>
+Date: Sat Dec 2 21:43:02 2006 +0100
+
+ Updated URL of static parted in docs.
+
+commit e3af14fde62492e7a4a7f451161c999527025d65
+Author: Anant Narayanan <anant@kix.in>
+Date: Sun Dec 3 01:45:14 2006 +0530
+
+ Make parted ignore '-i' option instead of failing
+
+commit 30e12276029b0b6c04d2d0edf2b9b00ba797013c
+Author: Anant Narayanan <anant@kix.in>
+Date: Sun Dec 3 00:24:34 2006 +0530
+
+ Support machine parseable output.
+
+commit a51bc04c311154ab770a720faf84def68c2f4875
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Thu Nov 30 08:09:08 2006 +0530
+
+ Cleanup _partition_warn_busy, _disk_warn_busy, _partition_warn_loss and
+_disk_warn_loss.
+
+commit cebee78a5b5c9f6b0fb3c918d2cab82744d74e24
+Author: Otavio Salvador <otavio@debian.org>
+Date: Tue Nov 28 22:26:50 2006 -0200
+
+ Proper print when there're no extended partitions, but partition names
+(patch from Sven Luther)
+
+commit ad358e802bc539e49608e05badd257a1ff6d3658
+Author: Otavio Salvador <otavio@debian.org>
+Date: Tue Nov 28 17:36:03 2006 -0200
+
+ libparted/arch/linux.c: initialize task point to please GCC
+
+commit 7081b489002dedb5b9450fb83bdf91a915b2838b
+Author: Otavio Salvador <otavio@debian.org>
+Date: Tue Nov 28 17:35:00 2006 -0200
+
+ Don't enforce libselinux and libsepol linking when using device-mapper
+support
+
+commit 692a1a8363d17986da061b792dd01f80e7b745f0
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Wed Nov 29 03:43:05 2006 +0530
+
+ Warn before mklabel and mkfs.
+
+commit ae6278b3091dbbaee4832c0579a02d867cc5bbe2
+Author: Debarshi Ray <rishi@gnu.org>
+Date: Wed Nov 29 00:10:04 2006 +0530
+
+ Make mktable aliased to mklabel.
+
+commit 3ca373769bd33b99946e9a85f476e21c4cad47ce
+Author: Otavio Salvador <otavio@debian.org>
+Date: Mon Nov 27 22:06:20 2006 -0200
+
+ Fix 'print' command help
+
+ 'print' command help was missing a new line at end and then breaking
+ the help printing.
+
+commit a9f9240d7ee40659edaa953bb987e475ac159ea2
+Author: Leslie P. Polzer <polzer@gnu.org>
+Date: Mon Nov 27 17:59:14 2006 +0100
+
+ Updated translations.
+
+commit 9a6d5bc9fbd991b23b5e78c552d252740da0bf63
+Author: Otavio Salvador <otavio@debian.org>
+Date: Sun Nov 26 22:47:11 2006 -0200
+
+ Remove doc/mdate-sh and doc/texinfo.tex since they are included when we run
+autogen.sh
+
+commit e567b42aed82eace7143e0e04e2532d7124ee991
+Author: Anant Narayanan <anant@kix.in>
+Date: Thu Nov 23 13:46:13 2006 +0530
+
+ Introduce the -list command-line switch, patch by Debarshi Ray
+
+commit 45c63412a89580e4c33db29d218bc7896c7c5d45
+Author: Otavio Salvador <otavio@debian.org>
+Date: Wed Nov 22 18:38:59 2006 -0200
+
+ Avoid warning about user permissions when using --version
+
+commit 1d021d78eccc3a87461a49bbb871b30277c4b010
+Author: Otavio Salvador <otavio@debian.org>
+Date: Wed Nov 22 18:22:39 2006 -0200
+
+ parted/parted.c: Remove redeclaration of current_dev fixing a compilation
+error
+
+commit b593b0219787646cecc64818c3618afada5075b9
+Author: Otavio Salvador <otavio@debian.org>
+Date: Wed Nov 22 15:40:44 2006 -0200
+
+ 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.
+
+commit 0ddc14a9d22cf1d994ea15285cc39c6f000a2d30
+Author: Anant <anant@theghost.(none)>
+Date: Thu Nov 23 01:12:04 2006 +0530
+
+ Fix loop in print_all, thanks to Debarshi Ray for the patch.
+
+commit d000de8f062ce070d5310f164ebf4f5ed26fcad0
+Author: Otavio Salvador <otavio@debian.org>
+Date: Mon Nov 20 21:45:13 2006 -0200
+
+ Remove useless 'return 0;' call
+
+ Since PED_ASSERT will always be run, the return 0 is useless, hence
+ removed.
+
+commit 43b8a930c3c97088e85f676100b3f8c8afcd01eb
+Author: Otavio Salvador <otavio@debian.org>
+Date: Mon Nov 20 21:44:13 2006 -0200
+
+ Remove useless semicolon from PED_ASSERT calls
+
+commit e8c462eaae67a38678f19cc0f18f473d363b4227
+Author: David Cantrell <dcantrel@mortise.boston.redhat.com>
+Date: Mon Nov 20 12:34:49 2006 -0500
+
+ Generate SHA-1 digests of the archive files and upload those along with the
+actual archive files.
+
+commit 791bc17d9f6a3f3890b37b0a96823350cf8a7ebb
+Author: Otavio Salvador <otavio@debian.org>
+Date: Mon Nov 20 18:16:12 2006 -0200
+
+ 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.
+
+commit d9f985240c67d6b789d7c5d4e7f5b8c86865d050
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Nov 17 15:42:05 2006 +0000
+
+ Final changes for parted-1.8.0
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@896
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit 7f443fa31de53c58b836cfe2b42aa920dce34f91
+Author: Otavio Salvador <otavio@debian.org>
+Date: Sat Nov 11 20:30:57 2006 +0000
+
+ 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
+
+commit 8d01bac2a34ba2a0bc7e4fdb68c61917cda03a71
+Author: Otavio Salvador <otavio@debian.org>
+Date: Sat Nov 11 17:23:46 2006 +0000
+
+ Remove files that can be generated.
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@894
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit ea44a7b5e1395ac06c965daf815d08b525d35cf9
+Author: Otavio Salvador <otavio@debian.org>
+Date: Sat Nov 11 12:45:23 2006 +0000
+
+ 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
+
+commit c4a8b9d94afb889fc90f4a855d55b0a1716c57b2
+Author: Otavio Salvador <otavio@debian.org>
+Date: Sat Nov 11 01:32:58 2006 +0000
+
+ 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
+
+commit 65a9b87971a1761274b79aed464ae924d924ce04
+Author: Otavio Salvador <otavio@debian.org>
+Date: Fri Nov 10 14:05:18 2006 +0000
+
+ 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
+
+commit ed3347ffe695c45cdb0e6037e382db619b6e76c2
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Mon Nov 6 00:34:57 2006 +0000
+
+ Updates for parted-1.8.0rc3
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@882
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit b55d4cb7eb481b71894ff3416f9e092ffb794042
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Mon Nov 6 00:01:01 2006 +0000
+
+ * 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
+
+commit 857952db44cbeeba462fc4b1efebb73adabeb9e9
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Thu Nov 2 23:35:31 2006 +0000
+
+ * 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
+
+commit bedeb63457b543cd14ba62ff167b552f4b7f64b2
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Tue Oct 31 20:06:25 2006 +0000
+
+ 2048 -> 1024
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@871
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit 537863c5defd5d3f1ba33cd65f060c63e2eab7b0
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Tue Oct 31 20:05:55 2006 +0000
+
+ * 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
+
+commit e5abd4d5597ba4a54d9b5e4194f8d90988c18e19
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Tue Oct 31 20:05:42 2006 +0000
+
+ * 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
+
+commit ef4343efe1ea283ff3f4ee44046af1a473014f93
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Thu Oct 26 20:23:20 2006 +0000
+
+ * 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
+
+commit 52b5281bbbe6f9f262f024ba31bd49787c1a1a4e
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Thu Oct 26 20:22:59 2006 +0000
+
+ Line length fixes.
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@865
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit 3cf7e98f65bf1695cedafd9ceec53eacbb2f49ec
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Wed Oct 11 20:52:58 2006 +0000
+
+ Need the filename: directive as well.
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@858
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit 31562e95ae323492785f821b3da61d5bea5a8829
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Wed Oct 11 20:35:24 2006 +0000
+
+ Set directive file version to 1.1.
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@855
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit 2820e091e51b394aca26a50c2ce0e33fd75fd224
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Wed Oct 11 19:55:58 2006 +0000
+
+ Conditionalize the device-mapper stuff.
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@852
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit 7ae07d52ec84c00e3749fd74302fbe9470447af0
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Wed Oct 11 19:48:29 2006 +0000
+
+ i18n updates.
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@850
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit 2f90fe2b624807347127e7a9dde3c2e28c32a256
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Wed Oct 11 19:46:07 2006 +0000
+
+ Bump version.
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@849
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit 2d3ff5782f478c9a68e1084787e8e97556054aaa
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Wed Oct 11 19:45:52 2006 +0000
+
+ Updates for 1.8.0rc2 release.
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@848
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit 797cdb00cbd05ca529537de6546c595290db3974
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Wed Oct 11 19:42:08 2006 +0000
+
+ 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
+
+commit df9247c1425e23daaaf51e15d2afe5d3939b58a4
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Mon Oct 9 18:33:48 2006 +0000
+
+ * 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
+
+commit 743a57354cbb7fe0c0cfb38cca5d69a35d0f0f3d
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Mon Oct 9 18:29:22 2006 +0000
+
+ * 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
+
+commit c9b7d8ff9d23766663d59465e4025bb9278c2f10
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Mon Oct 9 18:25:06 2006 +0000
+
+ * 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
+
+commit d404542493c6e6c9f0950375af847877fc477eb9
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Mon Oct 9 18:03:52 2006 +0000
+
+ Forgot changelog notice.
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@842
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit e11ee6af016557c71e40561c02060f71c2814a84
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Mon Oct 9 18:03:22 2006 +0000
+
+ Updated i18n files.
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@841
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit f0b9c8cf02196ce7e6d1eacc39ead1879268ee0a
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Oct 6 19:36:14 2006 +0000
+
+ * 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
+
+commit 4b9f246731f061a61e63e3af2eddf4d136f9775a
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Oct 6 18:15:41 2006 +0000
+
+ * 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
+
+commit 1733f680f22a6f15ad0ba86a3849cf9e6280c351
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Oct 6 17:51:42 2006 +0000
+
+ * 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
+
+commit fee81c46f5890d9024c0f4e164d555fe828f0d13
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Sep 15 19:14:17 2006 +0000
+
+ Fix execution of autogen.sh and configure.
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@836
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit 67d6bdcfe0e3b3447243e1e3ba2ac195fda6e349
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Sep 15 19:10:08 2006 +0000
+
+ 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
+
+commit 0e3276e2ad5bdfc5134066499a94daf2ae3df461
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Sep 15 19:06:53 2006 +0000
+
+ Updated for parted-1.8.0rc1.
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@834
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit 735066798b3bdd05cb2d6324c4519d21ad8f94de
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Sep 15 19:05:23 2006 +0000
+
+ * 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
+
+commit ee51dc64f9ce85b8efe3e31e371c5fdb9591dfd8
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Sep 15 18:54:55 2006 +0000
+
+ Tabs for the updatepo target.
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@832
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit d76a8b989c26414a11085d995d463f3b2926b1da
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Sep 15 18:32:54 2006 +0000
+
+ 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
+
+commit a41cd22e1f035478c429f5cb5f2017d405b31864
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Sep 15 18:27:43 2006 +0000
+
+ 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
+
+commit 3d5f22814bc20546bd6361a2e718b2bde22fed12
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Sep 15 18:16:19 2006 +0000
+
+ 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
+
+commit e4ab44a38068e3a856c49b681963159030a377a3
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Sep 15 18:14:28 2006 +0000
+
+ i18n updates for parted-1.8.0.
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@828
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit 4c273408ede70a343727cfa80d656114e085c696
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Sep 15 18:14:06 2006 +0000
+
+ Removed *.h files from the Makefile.
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@827
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit 36b3a98e3d5fa6bb1a182f3a8cfea8d6d010dc20
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Sep 15 18:13:07 2006 +0000
+
+ i18n updates for parted-1.8.0.
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@826
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit 859d0d68fe03235b438a738ed5a65a32d880614e
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Sep 15 18:12:35 2006 +0000
+
+ Removed from version control.
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@825
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit f4448f549734e7fd8ed575024c83a9fead496bf8
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Sep 15 18:11:10 2006 +0000
+
+ i18n updates for parted-1.8.0.
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@824
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit 4d69cd37d6e55d47a1fdf12451566a4e12442407
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Sep 15 18:10:43 2006 +0000
+
+ Removed from version control.
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@823
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit 48ea38118fc9c601eca616680a65327cb4dcdcfe
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Fri Sep 15 15:25:41 2006 +0000
+
+ Updated for version 1.8.0rc1.
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@822
+2d424fd7-7fe2-0310-af74-8bc65edeb173
+
+commit 26cfacb70d75923b23a0e07f1a01ed7ed88622c6
+Author: David Cantrell <dcantrell@redhat.com>
+Date: Thu Sep 14 20:55:58 2006 +0000
+
+ * 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
+
+commit 232dbda915dfcfec99e5983b7f53d57d4498a6aa
+Author: Anant Narayanan <anant@kix.in>
+Date: Thu Sep 14 15:18:45 2006 +0000
+
+ Fix ChangeLog
+
+
+ git-svn-id: svn://svn.debian.org/svn/parted/upstream/trunk@820
+2d424fd7-7fe2-0310-af74-8bc65edeb173
diff --git a/parted-1.8.7/GNUmakefile b/parted-1.8.7/GNUmakefile
new file mode 100644
index 0000000..38d5524
--- /dev/null
+++ b/parted-1.8.7/GNUmakefile
@@ -0,0 +1,58 @@
+# Having a separate GNUmakefile lets me `include' the dynamically
+# generated rules created via Makefile.maint as well as Makefile.maint itself.
+# 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 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 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.
+
+# 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
+
+have-Makefile := $(shell test -f Makefile && echo yes)
+
+# If the user runs GNU make but has not yet run ./configure,
+# give them a diagnostic.
+ifeq ($(have-Makefile),yes)
+
+# Make tar archive easier to reproduce.
+export TAR_OPTIONS = --owner=0 --group=0 --numeric-owner
+
+include Makefile
+include $(srcdir)/Makefile.cfg
+include $(srcdir)/Makefile.maint
+
+else
+
+all:
+ @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. This is necessary in case someone tries to
+# build multiple targets on one command line.
+.NOTPARALLEL:
diff --git a/parted-1.8.7/INSTALL b/parted-1.8.7/INSTALL
new file mode 100644
index 0000000..5458714
--- /dev/null
+++ b/parted-1.8.7/INSTALL
@@ -0,0 +1,234 @@
+Installation Instructions
+*************************
+
+Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
+2006 Free Software Foundation, Inc.
+
+This file is free documentation; the Free Software Foundation gives
+unlimited permission to copy, distribute and modify it.
+
+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.
+
+ 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.
+
+ 4. Type `make install' to install the programs and any data files and
+ documentation.
+
+ 5. 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.
+
+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 `..'.
+
+ 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.
+
+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'.
+
+ 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.
+
+ 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'.
+
+Optional Features
+=================
+
+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.
+
+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 the options to `configure', and exit.
+
+`--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.
+
+`configure' also accepts some other, not widely useful, options. Run
+`configure --help' for more details.
+
diff --git a/parted-1.8.7/Makefile.am b/parted-1.8.7/Makefile.am
new file mode 100644
index 0000000..1aba177
--- /dev/null
+++ b/parted-1.8.7/Makefile.am
@@ -0,0 +1,74 @@
+ACLOCAL_AMFLAGS = -I m4
+SUBDIRS = po lib libparted parted partprobe include doc debug tests
+
+EXTRA_DIST = \
+ .prev-version \
+ BUGS \
+ libparted.pc.in \
+ parted.spec.in \
+ parted.spec \
+ scripts/data/abi/baseline_symbols.txt \
+ scripts/extract_symvers \
+ Makefile.cfg \
+ Makefile.maint \
+ 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` -gt 0 \
+ && (echo "ABI has changed. Please, update you ABI package version."; exit 1) \
+ || exit 0
+
+MOSTLYCLEANDIRS = m4
+
+MAINTAINERCLEANFILES += \
+ ABOUT-NLS \
+ ChangeLog \
+ INSTALL \
+ aclocal.m4 \
+ configure
diff --git a/parted-1.8.7/Makefile.cfg b/parted-1.8.7/Makefile.cfg
new file mode 100644
index 0000000..e1bad2b
--- /dev/null
+++ b/parted-1.8.7/Makefile.cfg
@@ -0,0 +1,54 @@
+# Customize Makefile.maint. -*- makefile -*-
+# Copyright (C) 2003-2007 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, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+# 02110-1301, USA.
+
+# Use alpha.gnu.org for alpha and beta releases.
+# Use ftp.gnu.org for major releases.
+gnu_ftp_host-alpha = alpha.gnu.org
+gnu_ftp_host-beta = alpha.gnu.org
+gnu_ftp_host-major = ftp.gnu.org
+gnu_rel_host = $(gnu_ftp_host-$(RELEASE_TYPE))
+
+url_dir_list = \
+ ftp://$(gnu_rel_host)/gnu/parted
+
+# The GnuPG ID of the key used to sign the tarballs.
+gpg_key_ID = D333CBA1
+
+# 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_file_system \
+ sc_prohibit_atoi_atof \
+ sc_system_h_headers \
+ sc_space_tab \
+ sc_tight_scope \
+ sc_trailing_blank \
+ sc_useless_cpp_parens \
+ changelog-check \
+ strftime-check \
+ patch-check \
+ author_mark_check \
+ sc_cast_of_argument_to_free \
+ check-AUTHORS
+
+
+# The local directory containing the checked-out copy of gnulib used in
+# this release. Used solely to get a date for the "announcement" target.
+gnulib_dir = /gnulib
diff --git a/parted-1.8.7/Makefile.in b/parted-1.8.7/Makefile.in
new file mode 100644
index 0000000..808ee2f
--- /dev/null
+++ b/parted-1.8.7/Makefile.in
@@ -0,0 +1,897 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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
+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 = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(pcdir)"
+pcDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(pc_DATA)
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+ETAGS = etags
+CTAGS = ctags
+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); }; }
+DIST_ARCHIVES = $(distdir).tar.gz $(distdir).tar.bz2
+GZIP_ENV = --best
+distuninstallcheck_listfiles = find . -type f -print
+distcleancheck_listfiles = find . -type f -print
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+ACLOCAL_AMFLAGS = -I m4
+SUBDIRS = po lib libparted parted partprobe include doc debug tests
+EXTRA_DIST = \
+ .prev-version \
+ BUGS \
+ libparted.pc.in \
+ parted.spec.in \
+ parted.spec \
+ scripts/data/abi/baseline_symbols.txt \
+ scripts/extract_symvers \
+ Makefile.cfg \
+ Makefile.maint \
+ 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
+all: 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 '; \
+ cd $(srcdir) && $(AUTOMAKE) --gnu \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
+ 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)
+ cd $(srcdir) && $(AUTOCONF)
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
+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
+install-pcDATA: $(pc_DATA)
+ @$(NORMAL_INSTALL)
+ test -z "$(pcdir)" || $(MKDIR_P) "$(DESTDIR)$(pcdir)"
+ @list='$(pc_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(pcDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(pcdir)/$$f'"; \
+ $(pcDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(pcdir)/$$f"; \
+ done
+
+uninstall-pcDATA:
+ @$(NORMAL_UNINSTALL)
+ @list='$(pc_DATA)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(pcdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(pcdir)/$$f"; \
+ 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):
+ @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; \
+ (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):
+ @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; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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 || \
+ tags="$$tags $$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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+ done
+ -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -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__remove_distdir)
+dist-bzip2: distdir
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ $(am__remove_distdir)
+
+dist-tarZ: distdir
+ tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
+ $(am__remove_distdir)
+
+dist-shar: distdir
+ shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
+ $(am__remove_distdir)
+
+dist-zip: distdir
+ -rm -f $(distdir).zip
+ zip -rq $(distdir).zip $(distdir)
+ $(am__remove_distdir)
+
+dist dist-all: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+ tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2
+ $(am__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) gunzip -c $(distdir).tar.gz | $(am__untar) ;;\
+ *.tar.bz2*) \
+ bunzip2 -c $(distdir).tar.bz2 | $(am__untar) ;;\
+ *.tar.Z*) \
+ uncompress -c $(distdir).tar.Z | $(am__untar) ;;\
+ *.shar.gz*) \
+ GZIP=$(GZIP_ENV) gunzip -c $(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)
+ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
+ && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
+ && $(MAKE) $(AM_MAKEFLAGS) distcheck-hook \
+ && 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
+ $(am__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:
+ @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: 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: 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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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 $(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
+
+info: info-recursive
+
+info-am:
+
+install-data-am: install-pcDATA
+
+install-dvi: install-dvi-recursive
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+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) install-am \
+ install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am am--refresh check check-am clean clean-generic \
+ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
+ dist-gzip dist-shar dist-tarZ 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` -gt 0 \
+ && (echo "ABI has changed. Please, update you ABI package version."; exit 1) \
+ || exit 0
+# 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-1.8.7/Makefile.maint b/parted-1.8.7/Makefile.maint
new file mode 100644
index 0000000..ccb7370
--- /dev/null
+++ b/parted-1.8.7/Makefile.maint
@@ -0,0 +1,620 @@
+# -*-Makefile-*-
+
+## Copyright (C) 2001-2007 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, write to the Free Software
+## Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+## 02110-1301, USA.
+
+# This is reported not to work with make-3.79.1
+# ME := $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST))
+ME := Makefile.maint
+
+# 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 && echo --rsyncable)
+GZIP_ENV = '--no-name --best $(gzip_rsyncable)'
+
+CVS = cvs
+GIT = git
+VC = $(GIT)
+VC-tag = git-tag -s -m '$(VERSION)'
+
+CVS_LIST = build-aux/vc-list-files
+
+CVS_LIST_EXCEPT = \
+ $(CVS_LIST) | if test -f .x-$@; then grep -vEf .x-$@; else grep -v ChangeLog; fi
+
+ifeq ($(origin prev_version_file), undefined)
+ prev_version_file = .prev-version
+endif
+
+PREV_VERSION := $(shell cat $(prev_version_file))
+VERSION_REGEXP = $(subst .,\.,$(VERSION))
+
+tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]')
+tag-this-version = $(subst .,_,$(VERSION))
+this-vc-tag = $(tag-package)-$(tag-this-version)
+my_distdir = $(PACKAGE)-$(VERSION)
+
+# Old releases are stored here.
+# Used for diffs and xdeltas.
+release_archive_dir ?= ../release
+
+# 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. ##
+## --------------- ##
+
+# FIXME: add a check to prohibit definition in src/*.c of symbols defined
+# in system.h. E.g. today I removed from tail.c a useless definition of
+# ENOSYS. It was useless because system.h ensures it's defined.
+
+# Collect the names of rules starting with `sc_'.
+syntax-check-rules := $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' $(ME))
+.PHONY: $(syntax-check-rules)
+
+# Checks that don't require cvs.
+# Run `changelog-check' last, as previous test may reveal problems requiring
+# new ChangeLog entries.
+local-checks-available = \
+ po-check copyright-check m4-check author_mark_check \
+ changelog-check patch-check strftime-check $(syntax-check-rules) \
+ makefile_path_separator_check \
+ makefile-check check-AUTHORS
+.PHONY: $(local-checks-available)
+
+local-check := $(filter-out $(local-checks-to-skip), $(local-checks-available))
+
+syntax-check: $(local-check)
+# @grep -nE '# *include <(limits|std(def|arg|bool))\.h>' \
+# $$(find -type f -name '*.[chly]') && \
+# { echo '$(ME): found conditional include' 1>&2; \
+# exit 1; } || :
+
+# grep -nE '^# *include <(string|stdlib)\.h>' \
+# $(srcdir)/{lib,src}/*.[chy] && \
+# { echo '$(ME): FIXME' 1>&2; \
+# exit 1; } || :
+# FIXME: don't allow `#include .strings\.h' anywhere
+
+sc_cast_of_argument_to_free:
+ @grep -nE '\<free \(\(' $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): don'\''t cast free argument' 1>&2; \
+ exit 1; } || :
+
+sc_cast_of_x_alloc_return_value:
+ @grep -nE '\*\) *x(m|c|re)alloc\>' $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): don'\''t cast x*alloc return value' 1>&2; \
+ exit 1; } || :
+
+sc_cast_of_alloca_return_value:
+ @grep -nE '\*\) *alloca\>' $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): don'\''t cast alloca return value' 1>&2; \
+ exit 1; } || :
+
+sc_space_tab:
+ @grep -n '[ ] ' $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): found SPACE-TAB sequence; remove the SPACE' \
+ 1>&2; exit 1; } || :
+
+# Don't use the old ato* functions in `real' code.
+# They provide no error checking mechanism.
+# Instead, use strto* functions.
+sc_prohibit_atoi_atof:
+ @grep -nE '\<ato([filq]|ll)\>' $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): do not use ato''f, ato''i, ato''l, ato''ll, or ato''q' \
+ 1>&2; exit 1; } || :
+
+# 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:
+ @grep -nF 'error (EXIT_SUCCESS,' \
+ $$(find -type f -name '*.[chly]') && \
+ { echo '$(ME): found error (EXIT_SUCCESS' 1>&2; \
+ exit 1; } || :
+
+sc_file_system:
+ @grep -ni 'file''system' $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): found use of "file''system";' \
+ 'rewrite to use "file system"' 1>&2; \
+ exit 1; } || :
+
+sc_no_have_config_h:
+ @grep -n 'HAVE''_CONFIG_H' $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): found use of HAVE''_CONFIG_H; remove' \
+ 1>&2; exit 1; } || :
+
+# Nearly all .c files must include <config.h>.
+sc_require_config_h:
+ @if $(CVS_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
+ grep -L '^# *include <config\.h>' \
+ $$($(CVS_LIST_EXCEPT) | grep '\.c$$') \
+ | grep . && \
+ { echo '$(ME): the above files do not include <config.h>' \
+ 1>&2; exit 1; } || :; \
+ else :; \
+ fi
+
+# Prohibit the inclusion of assert.h without an actual use of assert.
+sc_prohibit_assert_without_use:
+ @if $(CVS_LIST_EXCEPT) | grep '\.c$$' > /dev/null; then \
+ files=$$(grep -l '# *include <assert\.h>' \
+ $$($(CVS_LIST_EXCEPT) | grep '\.c$$')) && \
+ grep -L '\<assert (' $$files \
+ | grep . && \
+ { echo "$(ME): the above files include <assert.h> but don't use it" \
+ 1>&2; exit 1; } || :; \
+ else :; \
+ fi
+
+sc_obsolete_symbols:
+ @grep -nE '\<(HAVE''_FCNTL_H|O''_NDELAY)\>' \
+ $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): do not use HAVE''_FCNTL_H or O''_NDELAY' \
+ 1>&2; exit 1; } || :
+
+# FIXME: warn about definitions of EXIT_FAILURE, EXIT_SUCCESS, STREQ
+
+# Each nonempty line must start with a year number, or a TAB.
+sc_changelog:
+ @grep -n '^[^12 ]' $$(find . -maxdepth 2 -name ChangeLog) && \
+ { echo '$(ME): found unexpected prefix in a ChangeLog' 1>&2; \
+ exit 1; } || :
+
+# Ensure that dd's definition of LONGEST_SYMBOL stays in sync
+# with the strings from the two affected variables.
+dd_c = $(srcdir)/src/dd.c
+sc_dd_max_sym_length:
+ifneq ($(wildcard $(dd_c)),)
+ @len=$$( (sed -n '/conversions\[\] =$$/,/^};/p' $(dd_c);\
+ sed -n '/flags\[\] =$$/,/^};/p' $(dd_c) ) \
+ |sed -n '/"/s/^[^"]*"\([^"]*\)".*/\1/p' \
+ | wc --max-line-length); \
+ max=$$(sed -n '/^#define LONGEST_SYMBOL /s///p' $(dd_c) \
+ |tr -d '"' | wc --max-line-length); \
+ if test "$$len" = "$$max"; then :; else \
+ echo 'dd.c: LONGEST_SYMBOL is not longest' 1>&2; \
+ exit 1; \
+ fi
+endif
+
+# Many m4 macros names once began with `jm_'.
+# On 2004-04-13, they were all changed to start with gl_ instead.
+# Make sure that none are inadvertently reintroduced.
+sc_prohibit_jm_in_m4:
+ @grep -nE 'jm_[A-Z]' \
+ $$($(CVS_LIST) m4 |grep '\.m4$$'; echo /dev/null) && \
+ { echo '$(ME): do not use jm_ in m4 macro names' \
+ 1>&2; exit 1; } || :
+
+sc_root_tests:
+ @if test -d tests \
+ && grep check-root tests/Makefile.am>/dev/null 2>&1; then \
+ t1=sc-root.expected; t2=sc-root.actual; \
+ grep -nl '^PRIV_CHECK_ARG=require-root' \
+ $$($(CVS_LIST) tests) |sed s,tests,., |sort > $$t1; \
+ sed -n 's, cd \([^ ]*\) .*MAKE..check TESTS=\(.*\),./\1/\2,p' \
+ $(srcdir)/tests/Makefile.am |sort > $$t2; \
+ diff -u $$t1 $$t2 || diff=1; \
+ rm -f $$t1 $$t2; \
+ test "$$diff" \
+ && { echo 'tests/Makefile.am: missing check-root action'>&2; \
+ exit 1; } || :; \
+ fi
+
+headers_with_interesting_macro_defs = \
+ exit.h \
+ fcntl_.h \
+ fnmatch_.h \
+ intprops.h \
+ inttypes_.h \
+ lchown.h \
+ openat.h \
+ stat-macros.h \
+ stdint_.h
+
+# Create a list of regular expressions matching the names
+# of macros that are guaranteed by parts of gnulib to be defined.
+.re-defmac:
+ @(cd $(srcdir)/lib; \
+ for f in $(headers_with_interesting_macro_defs); do \
+ test -f $$f && \
+ sed -n '/^# *define \([^_ (][^ (]*\)[ (].*/s//\1/p' $$f; \
+ done; \
+ ) | sort -u \
+ | grep -Ev 'ATTRIBUTE_NORETURN|SIZE_MAX' \
+ | sed 's/^/^# *define /' \
+ > $@-t
+ @mv $@-t $@
+
+# Don't define macros that we already get from gnulib header files.
+sc_always_defined_macros: .re-defmac
+ @if test -f $(srcdir)/src/system.h; then \
+ trap 'rc=$$?; rm -f .re-defmac; exit $$rc' 0 1 2 3 15; \
+ grep -f .re-defmac $$($(CVS_LIST)) \
+ && { echo '$(ME): define the above via some gnulib .h file' \
+ 1>&2; exit 1; } || :; \
+ fi
+
+# Create a list of regular expressions matching the names
+# of files included from system.h. Exclude a couple.
+.re-list:
+ @sed -n '/^# *include /s///p' $(srcdir)/src/system.h \
+ | grep -Ev 'sys/(param|file)\.h' \
+ | sed 's/ .*//;;s/^["<]/^# *include [<"]/;s/\.h[">]$$/\\.h[">]/' \
+ > $@-t
+ @mv $@-t $@
+
+# Files in src/ should not include directly any of
+# the headers already included via system.h.
+sc_system_h_headers: .re-list
+ @if test -f $(srcdir)/src/system.h; then \
+ trap 'rc=$$?; rm -f .re-list; exit $$rc' 0 1 2 3 15; \
+ grep -nE -f .re-list \
+ $$($(CVS_LIST) src | \
+ grep -Ev '((copy|system)\.h|parse-gram\.c)$$') \
+ && { echo '$(ME): the above are already included via system.h'\
+ 1>&2; exit 1; } || :; \
+ fi
+
+sc_sun_os_names:
+ @grep -nEi \
+ 'solaris[^[:alnum:]]*2\.(7|8|9|[1-9][0-9])|sunos[^[:alnum:]][6-9]' \
+ $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): found misuse of Sun OS version numbers' 1>&2; \
+ exit 1; } || :
+
+sc_the_the:
+ @grep -ni '\<the ''the\>' $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): found use of "the ''the";' 1>&2; \
+ exit 1; } || :
+
+sc_tight_scope:
+ $(MAKE) -C parted $@
+
+sc_trailing_blank:
+ @grep -n '[ ]$$' $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): found trailing blank(s)' \
+ 1>&2; exit 1; } || :
+
+# 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:
+ @grep -nE '^ *(-[A-Za-z],)? $(longopt_re) [^ ].*\\$$' \
+ $$($(CVS_LIST_EXCEPT)) && \
+ { echo "$(ME): help2man requires at least two spaces between"; \
+ echo "$(ME): an option and its description"; \
+ 1>&2; exit 1; } || :
+
+# 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}' $$($(CVS_LIST_EXCEPT)) \
+ | grep -v '_''(' && \
+ { 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:
+ @grep -n '^# *if .*defined *(' $$($(CVS_LIST_EXCEPT)) && \
+ { echo '$(ME): found useless parentheses in cpp directive' \
+ 1>&2; exit 1; } || :
+
+# Ensure that the c99-to-c89 patch applies cleanly.
+patch-check:
+ rm -rf src-c89 $@.1 $@.2
+ cp -a src src-c89
+ (cd src-c89; patch -p2 -V never --fuzz=0) < src/c99-to-c89.diff \
+ > $@.1 2>&1
+ if test "$${REGEN_PATCH+set}" = set; then \
+ diff -upr src src-c89 > new-diff || : ; fi
+ grep -v '^patching file ' $@.1 > $@.2 || :
+ msg=ok; test -s $@.2 && msg='fuzzy patch' || : ; \
+ rm -f src-c89/*.o || msg='rm failed'; \
+ $(MAKE) -C src-c89 CFLAGS='-Wdeclaration-after-statement -Werror' \
+ || msg='compile failure with extra options'; \
+ rm -rf src-c89 $@.1 $@.2; \
+ test "$$msg" = ok && : || echo "$$msg" 1>&2; \
+ test "$$msg" = ok
+
+# Ensure that date's --help output stays in sync with the info
+# documentation for GNU strftime. The only exception is %N,
+# which date accepts but GNU strftime does not.
+extract_char = sed 's/^[^%][^%]*%\(.\).*/\1/'
+strftime-check:
+ if test -f $(srcdir)/src/date.c; then \
+ grep '^ %. ' $(srcdir)/src/date.c | sort \
+ | $(extract_char) > $@-src; \
+ { echo N; \
+ info libc date calendar format | grep '^ `%.'\' \
+ | $(extract_char); } | sort > $@-info; \
+ diff -u $@-src $@-info || exit 1; \
+ rm -f $@-src $@-info; \
+ fi
+
+check-AUTHORS:
+ $(MAKE) -C src $@
+
+# 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.
+makefile-check:
+ grep -nE '@[A-Z_0-9]+@' `find . -name Makefile.am` \
+ && { echo 'Makefile.maint: use $$(...), not @...@' 1>&2; exit 1; } || :
+
+news-date-check: NEWS
+ today=`date +%Y-%m-%d`; \
+ if head NEWS | grep '^\*.* $(VERSION_REGEXP) ('$$today')' \
+ >/dev/null; then \
+ :; \
+ else \
+ echo "version or today's date is not in NEWS" 1>&2; \
+ exit 1; \
+ fi
+
+changelog-check:
+ if head ChangeLog | grep 'Version $(VERSION_REGEXP)\.$$' \
+ >/dev/null; then \
+ :; \
+ else \
+ echo "$(VERSION) not in ChangeLog" 1>&2; \
+ exit 1; \
+ fi
+
+m4-check:
+ @grep -n 'AC_DEFUN([^[]' m4/*.m4 \
+ && { echo 'Makefile.maint: quote the first arg to AC_DEFUN' 1>&2; \
+ exit 1; } || :
+
+# Verify that all source files using _() are listed in po/POTFILES.in.
+# FIXME: don't hard-code file names below; use a more general mechanism.
+po-check:
+ if test -f po/POTFILES.in; then \
+ grep -E -v '^(#|$$)' po/POTFILES.in \
+ | grep -v '^src/false\.c$$' | sort > $@-1; \
+ files=; \
+ for file in $$($(CVS_LIST_EXCEPT)) lib/*.[ch]; do \
+ case $$file in \
+ djgpp/* | man/*) 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 \
+ | sort -u > $@-2; \
+ diff -u $@-1 $@-2 || exit 1; \
+ rm -f $@-1 $@-2; \
+ fi
+
+# In a definition of #define AUTHORS "... and ..." where the RHS contains
+# the English word `and', the string must be marked with `N_ (...)' so that
+# gettext recognizes it as a string requiring translation.
+author_mark_check:
+ @grep -n '^# *define AUTHORS "[^"]* and ' src/*.c |grep -v ' N_ (' && \
+ { echo 'Makefile.maint: enclose the above strings in N_ (...)' 1>&2; \
+ exit 1; } || :
+
+# 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@'.
+# It'd be better to use `find -print0 ...|xargs -0 ...', but less portable,
+# and there probably aren't many projects with so many Makefile.am files
+# that we'd have to worry about limits on command line length.
+msg = 'Makefile.maint: Do not use `:'\'' above; use @PATH_SEPARATOR@ instead'
+makefile_path_separator_check:
+ @grep -n 'PATH=.*:' `find $(srcdir) -name Makefile.am` \
+ && { echo $(msg) 1>&2; exit 1; } || :
+
+# Check that `make alpha' will not fail at the end of the process.
+writable-files:
+ if test -d $(release_archive_dir); then :; else \
+ mkdir $(release_archive_dir); \
+ fi
+ for file in $(distdir).tar.gz $(xd-delta) \
+ $(release_archive_dir)/$(distdir).tar.gz \
+ $(release_archive_dir)/$(xd-delta); do \
+ test -e $$file || continue; \
+ test -w $$file \
+ || { echo ERROR: $$file is not writable; fail=1; }; \
+ done; \
+ test "$$fail" && exit 1 || :
+
+v_etc_file = lib/version-etc.c
+sample-test = tests/sample-test
+# Make sure that the copyright date in $(v_etc_file) is up to date.
+copyright-check:
+ @if test -f $(v_etc_file); then \
+ grep 'enum { COPYRIGHT_YEAR = '$$(date +%Y)' };' $(v_etc_file) \
+ >/dev/null \
+ || { echo 'out of date copyright in $(v_etc_file); update it' 1>&2; \
+ exit 1; }; \
+ fi
+ @if test -f $(sample-test); then \
+ grep '# Copyright (C) '$$(date +%Y)' Free' $(sample-test) \
+ >/dev/null \
+ || { echo 'out of date copyright in $(sample-test); update it' 1>&2; \
+ exit 1; }; \
+ fi
+
+
+# Sanity checks with the repository.
+# Abort early if this tag has already been used.
+vc-tag-check:
+ used=no; \
+ if $(VC) --help | grep CVS; then \
+ $(CVS) -n log -h README|grep -e $(this-vc-tag): >/dev/null \
+ && used=yes; \
+ else \
+ $(GIT) tag -l '^$(this-vc-tag)$$' && used=yes; \
+ fi; \
+ if test "$$used" = yes; then \
+ echo "$(this-vc-tag) has already been used; not tagging" 1>&2; \
+ exit 1; \
+ fi
+
+vc-diff-check:
+ $(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
+
+cvs-check: vc-diff-check vc-tag-check
+
+maintainer-distcheck:
+ $(MAKE) distcheck
+ $(MAKE) my-distcheck
+
+
+# Tag before making distribution. Also, don't make a distribution if
+# checks fail. Also, make sure the NEWS file is up-to-date.
+# FIXME: use dist-hook/my-dist like distcheck-hook/my-distcheck.
+vc-dist: $(local-check) cvs-check maintainer-distcheck
+ $(VC-tag) $(this-vc-tag)
+ $(MAKE) dist
+
+# Use this to make sure we don't run these programs when building
+# from a virgin tgz file, below.
+null_AM_MAKEFLAGS = \
+ ACLOCAL=false \
+ AUTOCONF=false \
+ AUTOMAKE=false \
+ AUTOHEADER=false \
+ MAKEINFO=false
+
+warn_cflags = -Dlint -O -Werror -Wall -Wformat -Wshadow -Wpointer-arith
+
+# Use -Wformat -Werror to detect format-string/arg-list mismatches.
+# Also, check for shadowing problems with -Wshadow, and for pointer
+# arithmetic problems with -Wpointer-arith.
+# These CFLAGS are pretty strict. If you build this target, you probably
+# have to have a recent version of gcc and glibc headers.
+TMPDIR ?= /tmp
+t=$(TMPDIR)/$(PACKAGE)/test
+my-distcheck: $(local-check)
+ -rm -rf $(t)
+ mkdir -p $(t)
+ GZIP=$(GZIP_ENV) $(AMTAR) -C $(t) -zxf $(distdir).tar.gz
+ cd $(t)/$(distdir) \
+ && ./configure --disable-nls \
+ && $(MAKE) CFLAGS='$(warn_cflags)' \
+ AM_MAKEFLAGS='$(null_AM_MAKEFLAGS)' \
+ && $(MAKE) dvi \
+ && $(MAKE) check \
+ && $(MAKE) distclean
+ (cd $(t) && mv $(distdir) $(distdir).old \
+ && $(AMTAR) -zxf - ) < $(distdir).tar.gz
+ diff -ur $(t)/$(distdir).old $(t)/$(distdir)
+ if test -f $(srcdir)/src/c99-to-c89.diff; then \
+ cd $(t)/$(distdir) \
+ && (cd src && patch -V never --fuzz=0 <c99-to-c89.diff) \
+ && ./configure --disable-largefile \
+ CFLAGS='-Werror -ansi -pedantic -Wno-long-long' \
+ && $(MAKE); \
+ fi
+ -rm -rf $(t)
+ @echo "========================"; \
+ echo "$(distdir).tar.gz is ready for distribution"; \
+ echo "========================"
+
+WGET = wget
+WGETFLAGS = -C off
+
+rel-check:
+ tarz=/tmp/rel-check-tarz-$$$$; \
+ md5_tmp=/tmp/rel-check-md5-$$$$; \
+ set -e; \
+ trap 'status=$$?; rm -f $$tarz $$md5_tmp; exit $$status' 0 1 2 3 15; \
+ $(WGET) $(WGETFLAGS) -q --output-document=$$tarz $(url); \
+ echo "$(md5) -" > $$md5_tmp; \
+ md5sum -c $$md5_tmp < $$tarz
+
+prev-tgz = $(PACKAGE)-$(PREV_VERSION).tar.gz
+xd-delta = $(PACKAGE)-$(PREV_VERSION)-$(VERSION).xdelta
+
+rel-files = $(xd-delta) $(DIST_ARCHIVES)
+
+# Approximate the date of last gnulib "update" by the ChangeLog file's
+# mtime, and provide that date in the announcement.
+announcement: NEWS ChangeLog $(rel-files)
+ @cl_date=$$(stat --printf @%Y $(gnulib_dir)/ChangeLog); \
+ utc_date=$$(date -u --date $$cl_date '+%Y-%m-%d %T %z'); \
+ ./build-aux/announce-gen \
+ --release-type=$(RELEASE_TYPE) \
+ --package=$(PACKAGE) \
+ --prev=$(PREV_VERSION) \
+ --curr=$(VERSION) \
+ --gpg-key-id=$(gpg_key_ID) \
+ --news=NEWS \
+ --bootstrap-tools=autoconf,automake,bison,gnulib \
+ --gnulib-snapshot-time-stamp="$$utc_date" \
+ $(addprefix --url-dir=, $(url_dir_list))
+
+## ---------------- ##
+## Updating files. ##
+## ---------------- ##
+
+ftp-gnu = ftp://ftp.gnu.org/gnu
+www-gnu = http://www.gnu.org
+
+# Use mv, if you don't have/want move-if-change.
+move_if_change ?= move-if-change
+
+emit_upload_commands:
+ @echo =====================================
+ @echo =====================================
+ @echo "$(srcdir)/build-aux/gnupload $(GNUPLOADFLAGS) \\"
+ @echo " --to $(gnu_rel_host):$(PACKAGE) \\"
+ @echo " $(rel-files)"
+ @echo '# send the /tmp/announcement e-mail'
+ @echo =====================================
+ @echo =====================================
+
+$(xd-delta): $(release_archive_dir)/$(prev-tgz) $(distdir).tar.gz
+ xdelta delta -9 $^ $@ || :
+
+.PHONY: alpha beta major
+alpha beta major: news-date-check changelog-check $(local-check) writable-files
+ test $@ = major \
+ && { echo $(VERSION) | grep -E '^[0-9]+(\.[0-9]+)+$$' \
+ || { echo "invalid version string: $(VERSION)" 1>&2; exit 1;};}\
+ || :
+ $(MAKE) vc-dist
+ $(MAKE) $(xd-delta)
+ $(MAKE) -s announcement RELEASE_TYPE=$@ > /tmp/announce-$(my_distdir)
+ ln $(rel-files) $(release_archive_dir)
+ chmod a-w $(rel-files)
+ $(MAKE) -s emit_upload_commands RELEASE_TYPE=$@
+ echo $(VERSION) > $(prev_version_file)
+ $(VC) commit -m \
+ '$(prev_version_file): Record previous version: $(VERSION).' \
+ $(prev_version_file)
diff --git a/parted-1.8.7/NEWS b/parted-1.8.7/NEWS
new file mode 100644
index 0000000..cb1598f
--- /dev/null
+++ b/parted-1.8.7/NEWS
@@ -0,0 +1,21 @@
+1.8.7
+=====
+
+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).
diff --git a/parted-1.8.7/README b/parted-1.8.7/README
new file mode 100644
index 0000000..1edacd5
--- /dev/null
+++ b/parted-1.8.7/README
@@ -0,0 +1,63 @@
+GNU Parted
+----------
+
+GNU Parted is a program for creating, destroying, resizing, checking and
+copying partitions, and the filesystems on them. This is useful for creating
+space for new operating systems, reorganising disk usage, copying data between
+hard disks, and disk imaging.
+
+ * 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. i.e.
+
+ $ ./configure
+ $ cd doc
+ $ make
+ $ info -f parted.info
+
+Yes, it sucks that you need to run ./configure before you can read the manual.
+If you have problems with it, doc/parted.texi should be fairly easy to read,
+just a bit less userfriendly.
+ If you prefer html format, you can run:
+
+ $ cd doc
+ $ makeinfo --html parted.texi
+
+ * an online tutorial is available at http://www.luv.asn.au/overheads/parted
+ * 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. The authors can be contacted directly (see the AUTHORS
+file).
+
+
+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.
+
+If Parted is only going to be used for probing / discovery (and not
+"editing"), there is a --enable-discovery-only and --disable-fs (when you're
+only interested in partition tables). Since it's readonly, --enable-debug
+gains you nothing wrt safety, so use --disable-debug ;) The "discover"
+program is about 35k (gzipped) when compiled this way (not counting libc
+and libuuid).
+
diff --git a/parted-1.8.7/THANKS b/parted-1.8.7/THANKS
new file mode 100644
index 0000000..466ccac
--- /dev/null
+++ b/parted-1.8.7/THANKS
@@ -0,0 +1,28 @@
+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/parted-1.8.7/TODO b/parted-1.8.7/TODO
new file mode 100644
index 0000000..019cd74
--- /dev/null
+++ b/parted-1.8.7/TODO
@@ -0,0 +1,98 @@
+
+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
+
diff --git a/parted-1.8.7/aclocal.m4 b/parted-1.8.7/aclocal.m4
new file mode 100644
index 0000000..c9d354f
--- /dev/null
+++ b/parted-1.8.7/aclocal.m4
@@ -0,0 +1,7568 @@
+# generated automatically by aclocal 1.10 -*- Autoconf -*-
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+# 2005, 2006 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_if(m4_PACKAGE_VERSION, [2.61],,
+[m4_fatal([this file was generated for autoconf 2.61.
+You have another version of autoconf. If you want to use that,
+you should regenerate the build system entirely.], [63])])
+
+# libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
+
+# serial 48 AC_PROG_LIBTOOL
+
+
+# AC_PROVIDE_IFELSE(MACRO-NAME, IF-PROVIDED, IF-NOT-PROVIDED)
+# -----------------------------------------------------------
+# If this macro is not defined by Autoconf, define it here.
+m4_ifdef([AC_PROVIDE_IFELSE],
+ [],
+ [m4_define([AC_PROVIDE_IFELSE],
+ [m4_ifdef([AC_PROVIDE_$1],
+ [$2], [$3])])])
+
+
+# AC_PROG_LIBTOOL
+# ---------------
+AC_DEFUN([AC_PROG_LIBTOOL],
+[AC_REQUIRE([_AC_PROG_LIBTOOL])dnl
+dnl If AC_PROG_CXX has already been expanded, run AC_LIBTOOL_CXX
+dnl immediately, otherwise, hook it in at the end of AC_PROG_CXX.
+ AC_PROVIDE_IFELSE([AC_PROG_CXX],
+ [AC_LIBTOOL_CXX],
+ [define([AC_PROG_CXX], defn([AC_PROG_CXX])[AC_LIBTOOL_CXX
+ ])])
+dnl And a similar setup for Fortran 77 support
+ AC_PROVIDE_IFELSE([AC_PROG_F77],
+ [AC_LIBTOOL_F77],
+ [define([AC_PROG_F77], defn([AC_PROG_F77])[AC_LIBTOOL_F77
+])])
+
+dnl Quote A][M_PROG_GCJ so that aclocal doesn't bring it in needlessly.
+dnl If either AC_PROG_GCJ or A][M_PROG_GCJ have already been expanded, run
+dnl AC_LIBTOOL_GCJ immediately, otherwise, hook it in at the end of both.
+ AC_PROVIDE_IFELSE([AC_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],
+ [AC_LIBTOOL_GCJ],
+ [ifdef([AC_PROG_GCJ],
+ [define([AC_PROG_GCJ], defn([AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+ ifdef([A][M_PROG_GCJ],
+ [define([A][M_PROG_GCJ], defn([A][M_PROG_GCJ])[AC_LIBTOOL_GCJ])])
+ ifdef([LT_AC_PROG_GCJ],
+ [define([LT_AC_PROG_GCJ],
+ defn([LT_AC_PROG_GCJ])[AC_LIBTOOL_GCJ])])])])
+])])# AC_PROG_LIBTOOL
+
+
+# _AC_PROG_LIBTOOL
+# ----------------
+AC_DEFUN([_AC_PROG_LIBTOOL],
+[AC_REQUIRE([AC_LIBTOOL_SETUP])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_CXX])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_F77])dnl
+AC_BEFORE([$0],[AC_LIBTOOL_GCJ])dnl
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+AC_SUBST(LIBTOOL)dnl
+
+# Prevent multiple expansion
+define([AC_PROG_LIBTOOL], [])
+])# _AC_PROG_LIBTOOL
+
+
+# AC_LIBTOOL_SETUP
+# ----------------
+AC_DEFUN([AC_LIBTOOL_SETUP],
+[AC_PREREQ(2.50)dnl
+AC_REQUIRE([AC_ENABLE_SHARED])dnl
+AC_REQUIRE([AC_ENABLE_STATIC])dnl
+AC_REQUIRE([AC_ENABLE_FAST_INSTALL])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_PROG_LD])dnl
+AC_REQUIRE([AC_PROG_LD_RELOAD_FLAG])dnl
+AC_REQUIRE([AC_PROG_NM])dnl
+
+AC_REQUIRE([AC_PROG_LN_S])dnl
+AC_REQUIRE([AC_DEPLIBS_CHECK_METHOD])dnl
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+AC_REQUIRE([AC_OBJEXT])dnl
+AC_REQUIRE([AC_EXEEXT])dnl
+dnl
+
+AC_LIBTOOL_SYS_MAX_CMD_LEN
+AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+AC_LIBTOOL_OBJDIR
+
+AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+_LT_AC_PROG_ECHO_BACKSLASH
+
+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
+
+# 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 to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+AC_CHECK_TOOL(AR, ar, false)
+AC_CHECK_TOOL(RANLIB, ranlib, :)
+AC_CHECK_TOOL(STRIP, strip, :)
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+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
+
+_LT_CC_BASENAME([$compiler])
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ AC_PATH_MAGIC
+ fi
+ ;;
+esac
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_DLOPEN], enable_dlopen=yes, enable_dlopen=no)
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+enable_win32_dll=yes, enable_win32_dll=no)
+
+AC_ARG_ENABLE([libtool-lock],
+ [AC_HELP_STRING([--disable-libtool-lock],
+ [avoid locking (might break parallel builds)])])
+test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes
+
+AC_ARG_WITH([pic],
+ [AC_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=default
+
+# Use C for the default configuration in the libtool script
+tagname=
+AC_LIBTOOL_LANG_C_CONFIG
+_LT_AC_TAGCONFIG
+])# AC_LIBTOOL_SETUP
+
+
+# _LT_AC_SYS_COMPILER
+# -------------------
+AC_DEFUN([_LT_AC_SYS_COMPILER],
+[AC_REQUIRE([AC_PROG_CC])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_AC_SYS_COMPILER
+
+
+# _LT_CC_BASENAME(CC)
+# -------------------
+# Calculate cc_basename. Skip known compiler wrappers and cross-prefix.
+AC_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 "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+])
+
+
+# _LT_COMPILER_BOILERPLATE
+# ------------------------
+# Check for compiler boilerplate output or warnings with
+# the simple compiler test code.
+AC_DEFUN([_LT_COMPILER_BOILERPLATE],
+[ac_outfile=conftest.$ac_objext
+printf "$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.
+AC_DEFUN([_LT_LINKER_BOILERPLATE],
+[ac_outfile=conftest.$ac_objext
+printf "$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 conftest*
+])# _LT_LINKER_BOILERPLATE
+
+
+# _LT_AC_SYS_LIBPATH_AIX
+# ----------------------
+# 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.
+AC_DEFUN([_LT_AC_SYS_LIBPATH_AIX],
+[AC_LINK_IFELSE(AC_LANG_PROGRAM,[
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 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
+])# _LT_AC_SYS_LIBPATH_AIX
+
+
+# _LT_AC_SHELL_INIT(ARG)
+# ----------------------
+AC_DEFUN([_LT_AC_SHELL_INIT],
+[ifdef([AC_DIVERSION_NOTICE],
+ [AC_DIVERT_PUSH(AC_DIVERSION_NOTICE)],
+ [AC_DIVERT_PUSH(NOTICE)])
+$1
+AC_DIVERT_POP
+])# _LT_AC_SHELL_INIT
+
+
+# _LT_AC_PROG_ECHO_BACKSLASH
+# --------------------------
+# Add some code to the start of the generated configure script which
+# will find an echo command which doesn't interpret backslashes.
+AC_DEFUN([_LT_AC_PROG_ECHO_BACKSLASH],
+[_LT_AC_SHELL_INIT([
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+ # Remove one level of quotation (which was required for Make).
+ ECHO=`echo "$ECHO" | sed 's,\\\\\[$]\\[$]0,'[$]0','`
+ ;;
+esac
+
+echo=${ECHO-echo}
+if test "X[$]1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X[$]1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell.
+ exec $SHELL "[$]0" --no-reexec ${1+"[$]@"}
+fi
+
+if test "X[$]1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+[$]*
+EOF
+ exit 0
+fi
+
+# 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
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "[$]0"' 'sed 20q "[$]0"' 'sed 10q "[$]0"' 'sed 2q "[$]0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+ if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+ echo_test_string=`eval $cmd` &&
+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+ then
+ break
+ fi
+ done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+else
+ # The Solaris, AIX, and Digital Unix default echo programs unquote
+ # backslashes. This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ #
+ # So, first we look for a working echo in the user's PATH.
+
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for dir in $PATH /usr/ucb; do
+ IFS="$lt_save_ifs"
+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$dir/echo"
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ if test "X$echo" = Xecho; then
+ # We didn't find a better echo, so look for alternatives.
+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # This shell has a builtin print -r that does the trick.
+ echo='print -r'
+ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+ test "X$CONFIG_SHELL" != X/bin/ksh; then
+ # If we have ksh, try running configure again with it.
+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ export ORIGINAL_CONFIG_SHELL
+ CONFIG_SHELL=/bin/ksh
+ export CONFIG_SHELL
+ exec $CONFIG_SHELL "[$]0" --no-reexec ${1+"[$]@"}
+ else
+ # Try using printf.
+ echo='printf %s\n'
+ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # Cool, printf works
+ :
+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+ export CONFIG_SHELL
+ SHELL="$CONFIG_SHELL"
+ export SHELL
+ echo="$CONFIG_SHELL [$]0 --fallback-echo"
+ elif echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($CONFIG_SHELL "[$]0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$CONFIG_SHELL [$]0 --fallback-echo"
+ else
+ # maybe with a smaller string...
+ prev=:
+
+ for cmd in 'echo test' 'sed 2q "[$]0"' 'sed 10q "[$]0"' 'sed 20q "[$]0"' 'sed 50q "[$]0"'; do
+ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+ then
+ break
+ fi
+ prev="$cmd"
+ done
+
+ if test "$prev" != 'sed 50q "[$]0"'; then
+ echo_test_string=`eval $prev`
+ export echo_test_string
+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "[$]0" ${1+"[$]@"}
+ else
+ # Oops. We lost completely, so just stick with echo.
+ echo=echo
+ fi
+ fi
+ fi
+ fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL [$]0 --fallback-echo"; then
+ ECHO="$CONFIG_SHELL \\\$\[$]0 --fallback-echo"
+fi
+
+AC_SUBST(ECHO)
+])])# _LT_AC_PROG_ECHO_BACKSLASH
+
+
+# _LT_AC_LOCK
+# -----------
+AC_DEFUN([_LT_AC_LOCK],
+[AC_ARG_ENABLE([libtool-lock],
+ [AC_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 __oline__ "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-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|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-*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-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*)
+ 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_TRY_LINK([],[],[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" ;;
+ *) LD="${LD-ld} -64" ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+AC_PROVIDE_IFELSE([AC_LIBTOOL_WIN32_DLL],
+[*-*-cygwin* | *-*-mingw* | *-*-pw32*)
+ AC_CHECK_TOOL(DLLTOOL, dlltool, false)
+ AC_CHECK_TOOL(AS, as, false)
+ AC_CHECK_TOOL(OBJDUMP, objdump, false)
+ ;;
+ ])
+esac
+
+need_locks="$enable_libtool_lock"
+
+])# _LT_AC_LOCK
+
+
+# AC_LIBTOOL_COMPILER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [OUTPUT-FILE], [ACTION-SUCCESS], [ACTION-FAILURE])
+# ----------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_COMPILER_OPTION],
+[AC_REQUIRE([LT_AC_PROG_SED])
+AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ ifelse([$4], , [ac_outfile=conftest.$ac_objext], [ac_outfile=$4])
+ printf "$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:__oline__: $lt_compile\"" >&AS_MESSAGE_LOG_FD)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&AS_MESSAGE_LOG_FD
+ echo "$as_me:__oline__: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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
+ ifelse([$5], , :, [$5])
+else
+ ifelse([$6], , :, [$6])
+fi
+])# AC_LIBTOOL_COMPILER_OPTION
+
+
+# AC_LIBTOOL_LINKER_OPTION(MESSAGE, VARIABLE-NAME, FLAGS,
+# [ACTION-SUCCESS], [ACTION-FAILURE])
+# ------------------------------------------------------------
+# Check whether the given compiler option works
+AC_DEFUN([AC_LIBTOOL_LINKER_OPTION],
+[AC_CACHE_CHECK([$1], [$2],
+ [$2=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $3"
+ printf "$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 "X$_lt_linker_boilerplate" | $Xsed -e '/^$/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 conftest*
+ LDFLAGS="$save_LDFLAGS"
+])
+
+if test x"[$]$2" = xyes; then
+ ifelse([$4], , :, [$4])
+else
+ ifelse([$5], , :, [$5])
+fi
+])# AC_LIBTOOL_LINKER_OPTION
+
+
+# AC_LIBTOOL_SYS_MAX_CMD_LEN
+# --------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_MAX_CMD_LEN],
+[# 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*)
+ # 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;
+ ;;
+
+ 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
+ ;;
+ *)
+ # 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.
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ while (test "X"`$SHELL [$]0 --fallback-echo "X$teststring" 2>/dev/null` \
+ = "XX$teststring") >/dev/null 2>&1 &&
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ 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`
+ ;;
+ 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
+])# AC_LIBTOOL_SYS_MAX_CMD_LEN
+
+
+# _LT_AC_CHECK_DLFCN
+# ------------------
+AC_DEFUN([_LT_AC_CHECK_DLFCN],
+[AC_CHECK_HEADERS(dlfcn.h)dnl
+])# _LT_AC_CHECK_DLFCN
+
+
+# _LT_AC_TRY_DLOPEN_SELF (ACTION-IF-TRUE, ACTION-IF-TRUE-W-USCORE,
+# ACTION-IF-FALSE, ACTION-IF-CROSS-COMPILING)
+# ---------------------------------------------------------------------
+AC_DEFUN([_LT_AC_TRY_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_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 <<EOF
+[#line __oline__ "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
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=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;
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ exit (status);
+}]
+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_AC_TRY_DLOPEN_SELF
+
+
+# AC_LIBTOOL_DLOPEN_SELF
+# ----------------------
+AC_DEFUN([AC_LIBTOOL_DLOPEN_SELF],
+[AC_REQUIRE([_LT_AC_CHECK_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*)
+ 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="-dld"],
+ [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="-dld"])
+ ])
+ ])
+ ])
+ ])
+ ])
+ ;;
+ 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_AC_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_AC_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
+])# AC_LIBTOOL_DLOPEN_SELF
+
+
+# AC_LIBTOOL_PROG_CC_C_O([TAGNAME])
+# ---------------------------------
+# Check to see if options -c and -o are simultaneously supported by compiler
+AC_DEFUN([AC_LIBTOOL_PROG_CC_C_O],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+AC_CACHE_CHECK([if $compiler supports -c -o file.$ac_objext],
+ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)],
+ [_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$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:__oline__: $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:__oline__: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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_AC_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 ..
+ rmdir conftest
+ $rm conftest*
+])
+])# AC_LIBTOOL_PROG_CC_C_O
+
+
+# AC_LIBTOOL_SYS_HARD_LINK_LOCKS([TAGNAME])
+# -----------------------------------------
+# Check to see if we can do hard links to lock some files if needed
+AC_DEFUN([AC_LIBTOOL_SYS_HARD_LINK_LOCKS],
+[AC_REQUIRE([_LT_AC_LOCK])dnl
+
+hard_links="nottested"
+if test "$_LT_AC_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
+])# AC_LIBTOOL_SYS_HARD_LINK_LOCKS
+
+
+# AC_LIBTOOL_OBJDIR
+# -----------------
+AC_DEFUN([AC_LIBTOOL_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
+])# AC_LIBTOOL_OBJDIR
+
+
+# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH([TAGNAME])
+# ----------------------------------------------
+# Check hardcoding attributes.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH],
+[AC_MSG_CHECKING([how to hardcode library paths into programs])
+_LT_AC_TAGVAR(hardcode_action, $1)=
+if test -n "$_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)" || \
+ test -n "$_LT_AC_TAGVAR(runpath_var, $1)" || \
+ test "X$_LT_AC_TAGVAR(hardcode_automatic, $1)" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$_LT_AC_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_AC_TAGVAR(hardcode_shlibpath_var, $1)" != no &&
+ test "$_LT_AC_TAGVAR(hardcode_minus_L, $1)" != no; then
+ # Linking always hardcodes the temporary library directory.
+ _LT_AC_TAGVAR(hardcode_action, $1)=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ _LT_AC_TAGVAR(hardcode_action, $1)=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ _LT_AC_TAGVAR(hardcode_action, $1)=unsupported
+fi
+AC_MSG_RESULT([$_LT_AC_TAGVAR(hardcode_action, $1)])
+
+if test "$_LT_AC_TAGVAR(hardcode_action, $1)" = relink; 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
+])# AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH
+
+
+# AC_LIBTOOL_SYS_LIB_STRIP
+# ------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_LIB_STRIP],
+[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"
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+fi
+ ;;
+ *)
+ AC_MSG_RESULT([no])
+ ;;
+ esac
+fi
+])# AC_LIBTOOL_SYS_LIB_STRIP
+
+
+# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+# -----------------------------
+# PORTME Fill in your ld.so characteristics
+AC_DEFUN([AC_LIBTOOL_SYS_DYNAMIC_LINKER],
+[AC_MSG_CHECKING([dynamic linker characteristics])
+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"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # 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.
+ 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
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+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'
+ ;;
+
+aix4* | aix5*)
+ 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*)
+ 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=`$echo "X$lib" | $Xsed -e '\''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'
+ ;;
+
+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*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ 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'
+ 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="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | [grep ';[c-zC-Z]:/' >/dev/null]; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ 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
+ ;;
+ 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
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[[.]]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # 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}${versuffix}$shared_ext ${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`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ 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
+ ;;
+
+kfreebsd*-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
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+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
+ ;;
+ freebsd*) # from 4.6 on
+ 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
+ ;;
+
+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'
+ ;;
+
+interix3*)
+ 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*)
+ 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
+ # 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
+
+ # find out which ABI we are using
+ libsuff=
+ case "$host_cpu" in
+ x86_64*|s390x*|powerpc64*)
+ echo '[#]line __oline__ "configure"' > conftest.$ac_ext
+ if AC_TRY_EVAL(ac_compile); then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *64-bit*)
+ libsuff=64
+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+ esac
+
+ # 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/^[ ]*//;s/#.*//;/^[^\/]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $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'
+ ;;
+
+knetbsd*-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
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU 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=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
+ ;;
+
+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"
+ ;;
+
+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
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ 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
+ 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'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ 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'
+ ;;
+
+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
+])# AC_LIBTOOL_SYS_DYNAMIC_LINKER
+
+
+# _LT_AC_TAGCONFIG
+# ----------------
+AC_DEFUN([_LT_AC_TAGCONFIG],
+[AC_ARG_WITH([tags],
+ [AC_HELP_STRING([--with-tags@<:@=TAGS@:>@],
+ [include additional configurations @<:@automatic@:>@])],
+ [tagnames="$withval"])
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+ if test ! -f "${ofile}"; then
+ AC_MSG_WARN([output file `$ofile' does not exist])
+ fi
+
+ if test -z "$LTCC"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+ if test -z "$LTCC"; then
+ AC_MSG_WARN([output file `$ofile' does not look like a libtool script])
+ else
+ AC_MSG_WARN([using `LTCC=$LTCC', extracted from `$ofile'])
+ fi
+ fi
+ if test -z "$LTCFLAGS"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+ fi
+
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for tagname in $tagnames; do
+ IFS="$lt_save_ifs"
+ # Check whether tagname contains only valid characters
+ case `$echo "X$tagname" | $Xsed -e 's:[[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]]::g'` in
+ "") ;;
+ *) AC_MSG_ERROR([invalid tag name: $tagname])
+ ;;
+ esac
+
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+ then
+ AC_MSG_ERROR([tag name \"$tagname\" already exists])
+ fi
+
+ # Update the list of available tags.
+ if test -n "$tagname"; then
+ echo appending configuration tag \"$tagname\" to $ofile
+
+ case $tagname in
+ CXX)
+ if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ AC_LIBTOOL_LANG_CXX_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ F77)
+ if test -n "$F77" && test "X$F77" != "Xno"; then
+ AC_LIBTOOL_LANG_F77_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ GCJ)
+ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+ AC_LIBTOOL_LANG_GCJ_CONFIG
+ else
+ tagname=""
+ fi
+ ;;
+
+ RC)
+ AC_LIBTOOL_LANG_RC_CONFIG
+ ;;
+
+ *)
+ AC_MSG_ERROR([Unsupported tag name: $tagname])
+ ;;
+ esac
+
+ # Append the new tag name to the list of available tags.
+ if test -n "$tagname" ; then
+ available_tags="$available_tags $tagname"
+ fi
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ # Now substitute the updated list of available tags.
+ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+ mv "${ofile}T" "$ofile"
+ chmod +x "$ofile"
+ else
+ rm -f "${ofile}T"
+ AC_MSG_ERROR([unable to update list of available tagged configurations.])
+ fi
+fi
+])# _LT_AC_TAGCONFIG
+
+
+# AC_LIBTOOL_DLOPEN
+# -----------------
+# enable checks for dlopen support
+AC_DEFUN([AC_LIBTOOL_DLOPEN],
+ [AC_BEFORE([$0],[AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_DLOPEN
+
+
+# AC_LIBTOOL_WIN32_DLL
+# --------------------
+# declare package support for building win32 DLLs
+AC_DEFUN([AC_LIBTOOL_WIN32_DLL],
+[AC_BEFORE([$0], [AC_LIBTOOL_SETUP])
+])# AC_LIBTOOL_WIN32_DLL
+
+
+# AC_ENABLE_SHARED([DEFAULT])
+# ---------------------------
+# implement the --enable-shared flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_SHARED],
+[define([AC_ENABLE_SHARED_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([shared],
+ [AC_HELP_STRING([--enable-shared@<:@=PKGS@:>@],
+ [build shared libraries @<:@default=]AC_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=]AC_ENABLE_SHARED_DEFAULT)
+])# AC_ENABLE_SHARED
+
+
+# AC_DISABLE_SHARED
+# -----------------
+# set the default shared flag to --disable-shared
+AC_DEFUN([AC_DISABLE_SHARED],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_SHARED(no)
+])# AC_DISABLE_SHARED
+
+
+# AC_ENABLE_STATIC([DEFAULT])
+# ---------------------------
+# implement the --enable-static flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_STATIC],
+[define([AC_ENABLE_STATIC_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([static],
+ [AC_HELP_STRING([--enable-static@<:@=PKGS@:>@],
+ [build static libraries @<:@default=]AC_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=]AC_ENABLE_STATIC_DEFAULT)
+])# AC_ENABLE_STATIC
+
+
+# AC_DISABLE_STATIC
+# -----------------
+# set the default static flag to --disable-static
+AC_DEFUN([AC_DISABLE_STATIC],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_STATIC(no)
+])# AC_DISABLE_STATIC
+
+
+# AC_ENABLE_FAST_INSTALL([DEFAULT])
+# ---------------------------------
+# implement the --enable-fast-install flag
+# DEFAULT is either `yes' or `no'. If omitted, it defaults to `yes'.
+AC_DEFUN([AC_ENABLE_FAST_INSTALL],
+[define([AC_ENABLE_FAST_INSTALL_DEFAULT], ifelse($1, no, no, yes))dnl
+AC_ARG_ENABLE([fast-install],
+ [AC_HELP_STRING([--enable-fast-install@<:@=PKGS@:>@],
+ [optimize for fast installation @<:@default=]AC_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=]AC_ENABLE_FAST_INSTALL_DEFAULT)
+])# AC_ENABLE_FAST_INSTALL
+
+
+# AC_DISABLE_FAST_INSTALL
+# -----------------------
+# set the default to --disable-fast-install
+AC_DEFUN([AC_DISABLE_FAST_INSTALL],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+AC_ENABLE_FAST_INSTALL(no)
+])# AC_DISABLE_FAST_INSTALL
+
+
+# AC_LIBTOOL_PICMODE([MODE])
+# --------------------------
+# implement the --with-pic flag
+# MODE is either `yes' or `no'. If omitted, it defaults to `both'.
+AC_DEFUN([AC_LIBTOOL_PICMODE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+pic_mode=ifelse($#,1,$1,default)
+])# AC_LIBTOOL_PICMODE
+
+
+# AC_PROG_EGREP
+# -------------
+# This is predefined starting with Autoconf 2.54, so this conditional
+# definition can be removed once we require Autoconf 2.54 or later.
+m4_ifndef([AC_PROG_EGREP], [AC_DEFUN([AC_PROG_EGREP],
+[AC_CACHE_CHECK([for egrep], [ac_cv_prog_egrep],
+ [if echo a | (grep -E '(a|b)') >/dev/null 2>&1
+ then ac_cv_prog_egrep='grep -E'
+ else ac_cv_prog_egrep='egrep'
+ fi])
+ EGREP=$ac_cv_prog_egrep
+ AC_SUBST([EGREP])
+])])
+
+
+# AC_PATH_TOOL_PREFIX
+# -------------------
+# find a file program which can recognise shared library
+AC_DEFUN([AC_PATH_TOOL_PREFIX],
+[AC_REQUIRE([AC_PROG_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="ifelse([$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 <<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
+
+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
+])# AC_PATH_TOOL_PREFIX
+
+
+# AC_PATH_MAGIC
+# -------------
+# find a file program which can recognise a shared library
+AC_DEFUN([AC_PATH_MAGIC],
+[AC_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
+ AC_PATH_TOOL_PREFIX(file, /usr/bin$PATH_SEPARATOR$PATH)
+ else
+ MAGIC_CMD=:
+ fi
+fi
+])# AC_PATH_MAGIC
+
+
+# AC_PROG_LD
+# ----------
+# find the pathname to the GNU or non-GNU linker
+AC_DEFUN([AC_PROG_LD],
+[AC_ARG_WITH([gnu-ld],
+ [AC_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])
+AC_REQUIRE([LT_AC_PROG_SED])dnl
+AC_REQUIRE([AC_PROG_CC])dnl
+AC_REQUIRE([AC_CANONICAL_HOST])dnl
+AC_REQUIRE([AC_CANONICAL_BUILD])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])
+AC_PROG_LD_GNU
+])# AC_PROG_LD
+
+
+# AC_PROG_LD_GNU
+# --------------
+AC_DEFUN([AC_PROG_LD_GNU],
+[AC_REQUIRE([AC_PROG_EGREP])dnl
+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
+])# AC_PROG_LD_GNU
+
+
+# AC_PROG_LD_RELOAD_FLAG
+# ----------------------
+# find reload flag for linker
+# -- PORTME Some linkers may need a different reload flag.
+AC_DEFUN([AC_PROG_LD_RELOAD_FLAG],
+[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
+ 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
+])# AC_PROG_LD_RELOAD_FLAG
+
+
+# AC_DEPLIBS_CHECK_METHOD
+# -----------------------
+# how to check for library dependencies
+# -- PORTME fill in with the dynamic library characteristics
+AC_DEFUN([AC_DEPLIBS_CHECK_METHOD],
+[AC_CACHE_CHECK([how to recognise 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
+aix4* | aix5*)
+ 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'.
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | kfreebsd*-gnu | 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
+ ;;
+
+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]) 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
+ ;;
+
+interix3*)
+ # 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*)
+ 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=unknown
+ ;;
+
+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
+ ;;
+
+solaris*)
+ 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
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+])
+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
+])# AC_DEPLIBS_CHECK_METHOD
+
+
+# AC_PROG_NM
+# ----------
+# find the pathname to a BSD-compatible name lister
+AC_DEFUN([AC_PROG_NM],
+[AC_CACHE_CHECK([for BSD-compatible 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
+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi])
+NM="$lt_cv_path_NM"
+])# AC_PROG_NM
+
+
+# AC_CHECK_LIBM
+# -------------
+# check for math library
+AC_DEFUN([AC_CHECK_LIBM],
+[AC_REQUIRE([AC_CANONICAL_HOST])dnl
+LIBM=
+case $host in
+*-*-beos* | *-*-cygwin* | *-*-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_CHECK_LIBM
+
+
+# AC_LIBLTDL_CONVENIENCE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl convenience library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-convenience to the configure arguments. Note that
+# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided,
+# it is assumed to be `libltdl'. LIBLTDL will be prefixed with
+# '${top_builddir}/' and LTDLINCL will be prefixed with '${top_srcdir}/'
+# (note the single quotes!). If your package is not flat and you're not
+# using automake, define top_builddir and top_srcdir appropriately in
+# the Makefiles.
+AC_DEFUN([AC_LIBLTDL_CONVENIENCE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ case $enable_ltdl_convenience in
+ no) AC_MSG_ERROR([this package needs a convenience libltdl]) ;;
+ "") enable_ltdl_convenience=yes
+ ac_configure_args="$ac_configure_args --enable-ltdl-convenience" ;;
+ esac
+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdlc.la
+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+ # For backwards non-gettext consistent compatibility...
+ INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_CONVENIENCE
+
+
+# AC_LIBLTDL_INSTALLABLE([DIRECTORY])
+# -----------------------------------
+# sets LIBLTDL to the link flags for the libltdl installable library and
+# LTDLINCL to the include flags for the libltdl header and adds
+# --enable-ltdl-install to the configure arguments. Note that
+# AC_CONFIG_SUBDIRS is not called here. If DIRECTORY is not provided,
+# and an installed libltdl is not found, it is assumed to be `libltdl'.
+# LIBLTDL will be prefixed with '${top_builddir}/'# and LTDLINCL with
+# '${top_srcdir}/' (note the single quotes!). If your package is not
+# flat and you're not using automake, define top_builddir and top_srcdir
+# appropriately in the Makefiles.
+# In the future, this macro may have to be called after AC_PROG_LIBTOOL.
+AC_DEFUN([AC_LIBLTDL_INSTALLABLE],
+[AC_BEFORE([$0],[AC_LIBTOOL_SETUP])dnl
+ AC_CHECK_LIB(ltdl, lt_dlinit,
+ [test x"$enable_ltdl_install" != xyes && enable_ltdl_install=no],
+ [if test x"$enable_ltdl_install" = xno; then
+ AC_MSG_WARN([libltdl not installed, but installation disabled])
+ else
+ enable_ltdl_install=yes
+ fi
+ ])
+ if test x"$enable_ltdl_install" = x"yes"; then
+ ac_configure_args="$ac_configure_args --enable-ltdl-install"
+ LIBLTDL='${top_builddir}/'ifelse($#,1,[$1],['libltdl'])/libltdl.la
+ LTDLINCL='-I${top_srcdir}/'ifelse($#,1,[$1],['libltdl'])
+ else
+ ac_configure_args="$ac_configure_args --enable-ltdl-install=no"
+ LIBLTDL="-lltdl"
+ LTDLINCL=
+ fi
+ # For backwards non-gettext consistent compatibility...
+ INCLTDL="$LTDLINCL"
+])# AC_LIBLTDL_INSTALLABLE
+
+
+# AC_LIBTOOL_CXX
+# --------------
+# enable support for C++ libraries
+AC_DEFUN([AC_LIBTOOL_CXX],
+[AC_REQUIRE([_LT_AC_LANG_CXX])
+])# AC_LIBTOOL_CXX
+
+
+# _LT_AC_LANG_CXX
+# ---------------
+AC_DEFUN([_LT_AC_LANG_CXX],
+[AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}CXX])
+])# _LT_AC_LANG_CXX
+
+# _LT_AC_PROG_CXXCPP
+# ------------------
+AC_DEFUN([_LT_AC_PROG_CXXCPP],
+[
+AC_REQUIRE([AC_PROG_CXX])
+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
+fi
+])# _LT_AC_PROG_CXXCPP
+
+# AC_LIBTOOL_F77
+# --------------
+# enable support for Fortran 77 libraries
+AC_DEFUN([AC_LIBTOOL_F77],
+[AC_REQUIRE([_LT_AC_LANG_F77])
+])# AC_LIBTOOL_F77
+
+
+# _LT_AC_LANG_F77
+# ---------------
+AC_DEFUN([_LT_AC_LANG_F77],
+[AC_REQUIRE([AC_PROG_F77])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}F77])
+])# _LT_AC_LANG_F77
+
+
+# AC_LIBTOOL_GCJ
+# --------------
+# enable support for GCJ libraries
+AC_DEFUN([AC_LIBTOOL_GCJ],
+[AC_REQUIRE([_LT_AC_LANG_GCJ])
+])# AC_LIBTOOL_GCJ
+
+
+# _LT_AC_LANG_GCJ
+# ---------------
+AC_DEFUN([_LT_AC_LANG_GCJ],
+[AC_PROVIDE_IFELSE([AC_PROG_GCJ],[],
+ [AC_PROVIDE_IFELSE([A][M_PROG_GCJ],[],
+ [AC_PROVIDE_IFELSE([LT_AC_PROG_GCJ],[],
+ [ifdef([AC_PROG_GCJ],[AC_REQUIRE([AC_PROG_GCJ])],
+ [ifdef([A][M_PROG_GCJ],[AC_REQUIRE([A][M_PROG_GCJ])],
+ [AC_REQUIRE([A][C_PROG_GCJ_OR_A][M_PROG_GCJ])])])])])])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}GCJ])
+])# _LT_AC_LANG_GCJ
+
+
+# AC_LIBTOOL_RC
+# -------------
+# enable support for Windows resource files
+AC_DEFUN([AC_LIBTOOL_RC],
+[AC_REQUIRE([LT_AC_PROG_RC])
+_LT_AC_SHELL_INIT([tagnames=${tagnames+${tagnames},}RC])
+])# AC_LIBTOOL_RC
+
+
+# AC_LIBTOOL_LANG_C_CONFIG
+# ------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_C_CONFIG], [_LT_AC_LANG_C_CONFIG])
+AC_DEFUN([_LT_AC_LANG_C_CONFIG],
+[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_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+_LT_AC_SYS_COMPILER
+
+# save warnings/boilerplate of simple test code
+_LT_COMPILER_BOILERPLATE
+_LT_LINKER_BOILERPLATE
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+AC_LIBTOOL_SYS_LIB_STRIP
+AC_LIBTOOL_DLOPEN_SELF
+
+# 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
+ ;;
+
+aix4* | aix5*)
+ 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])
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_C_CONFIG
+
+
+# AC_LIBTOOL_LANG_CXX_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_CXX_CONFIG], [_LT_AC_LANG_CXX_CONFIG(CXX)])
+AC_DEFUN([_LT_AC_LANG_CXX_CONFIG],
+[AC_LANG_PUSH(C++)
+AC_REQUIRE([AC_PROG_CXX])
+AC_REQUIRE([_LT_AC_PROG_CXXCPP])
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+
+# Dependencies to place before and after the object being linked:
+_LT_AC_TAGVAR(predep_objects, $1)=
+_LT_AC_TAGVAR(postdep_objects, $1)=
+_LT_AC_TAGVAR(predeps, $1)=
+_LT_AC_TAGVAR(postdeps, $1)=
+_LT_AC_TAGVAR(compiler_lib_search_path, $1)=
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *[[]]) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_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_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++"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+else
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+fi
+
+if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+ AC_PROG_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_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_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_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_AC_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_AC_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 "\-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_AC_TAGVAR(ld_shlibs, $1)=yes
+case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aix4* | aix5*)
+ 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]].*|aix5*)
+ 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_AC_TAGVAR(archive_cmds, $1)=''
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ 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
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ else
+ # We have old collect2
+ _LT_AC_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_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_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
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_AC_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_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ _LT_AC_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 echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_AC_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_AC_SYS_LIBPATH_AIX
+ _LT_AC_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_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ _LT_AC_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_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ _LT_AC_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_AC_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_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ if test "$GXX" = yes ; then
+ lt_int_apple_cc_single_mod=no
+ output_verbose_link_cmd='echo'
+ if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+ lt_int_apple_cc_single_mod=yes
+ fi
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ else
+ _LT_AC_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'
+ fi
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ freebsd[[12]]*)
+ # C++ shared libraries reported to be fairly broken before switch to ELF
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ freebsd-elf*)
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ ;;
+ gnu*)
+ ;;
+ hpux9*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_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_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ _LT_AC_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) | grep "[[-]]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${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_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ ;;
+ *)
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_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_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ aCC*)
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_AC_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; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib -fPIC ${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_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ interix3*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_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_AC_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_AC_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_AC_TAGVAR(archive_cmds, $1)='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -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_AC_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_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+ fi
+ fi
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+ esac
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+ linux*)
+ 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_AC_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_AC_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; echo $list'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath,$libdir'
+ _LT_AC_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_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc*)
+ # 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_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_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_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_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_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ pgCC*)
+ # Portland Group C++ compiler
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ _LT_AC_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'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}--export-dynamic'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ ;;
+ cxx*)
+ # Compaq C++
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_AC_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=`echo $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; echo $list'
+ ;;
+ esac
+ ;;
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ m88k*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_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::"'
+ ;;
+ openbsd2*)
+ # C++ shared libraries are fairly broken
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ openbsd*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ _LT_AC_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_AC_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_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd='echo'
+ ;;
+ osf3*)
+ 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_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -Bstatic -o $oldlib $oldobjs'
+
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_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=`echo $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; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_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" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_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 "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ 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_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='$CC -o $oldlib $oldobjs'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ cxx*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ _LT_AC_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=`echo $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; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_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 "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+ psos*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ lcc*)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_AC_TAGVAR(archive_cmds_need_lc,$1)=yes
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -zdefs'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The C++ compiler is used as linker so we must use $wl
+ # flag to pass the commands to the underlying system
+ # linker. We must also pass each convience library through
+ # to the system linker between allextract/defaultextract.
+ # The C++ compiler will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ output_verbose_link_cmd='echo'
+
+ # 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_AC_TAGVAR(old_archive_cmds, $1)='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_AC_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_AC_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_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-z ${wl}defs'
+ if $CC --version | grep -v '^2\.7' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared -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 \"\-L\""
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ _LT_AC_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 \"\-L\""
+ fi
+
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $wl$libdir'
+ fi
+ ;;
+ esac
+ ;;
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7* | sco3.2v5.0.[[024]]*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_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.
+ # 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.
+ # So that behaviour is only enabled if SCOABSPATH is set to a
+ # non-empty value in the environment. Most likely only useful for
+ # creating official distributions of packages.
+ # This is a hack until libtool officially supports absolute path
+ # names for shared libraries.
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$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_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ ;;
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+esac
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+_LT_AC_TAGVAR(GCC, $1)="$GXX"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_POSTDEP_PREDEP($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+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
+])# AC_LIBTOOL_LANG_CXX_CONFIG
+
+# AC_LIBTOOL_POSTDEP_PREDEP([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.
+AC_DEFUN([AC_LIBTOOL_POSTDEP_PREDEP],[
+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...
+ifelse([$1],[],[cat > conftest.$ac_ext <<EOF
+int a;
+void foo (void) { a = 0; }
+EOF
+],[$1],[CXX],[cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+EOF
+],[$1],[F77],[cat > conftest.$ac_ext <<EOF
+ subroutine foo
+ implicit none
+ integer*4 a
+ a=0
+ return
+ end
+EOF
+],[$1],[GCJ],[cat > conftest.$ac_ext <<EOF
+public class foo {
+ private int a;
+ public void bar (void) {
+ a = 0;
+ }
+};
+EOF
+])
+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
+
+ # The `*' in the case matches for architectures that use `case' in
+ # $output_verbose_cmd can trigger glob expansion during the loop
+ # eval without this substitution.
+ output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
+
+ for p in `eval $output_verbose_link_cmd`; do
+ case $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
+ else
+ prev=
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ case $p 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_AC_TAGVAR(compiler_lib_search_path, $1)"; then
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${prev}${p}"
+ else
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1)="${_LT_AC_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_AC_TAGVAR(postdeps, $1)"; then
+ _LT_AC_TAGVAR(postdeps, $1)="${prev}${p}"
+ else
+ _LT_AC_TAGVAR(postdeps, $1)="${_LT_AC_TAGVAR(postdeps, $1)} ${prev}${p}"
+ fi
+ fi
+ ;;
+
+ *.$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_AC_TAGVAR(predep_objects, $1)"; then
+ _LT_AC_TAGVAR(predep_objects, $1)="$p"
+ else
+ _LT_AC_TAGVAR(predep_objects, $1)="$_LT_AC_TAGVAR(predep_objects, $1) $p"
+ fi
+ else
+ if test -z "$_LT_AC_TAGVAR(postdep_objects, $1)"; then
+ _LT_AC_TAGVAR(postdep_objects, $1)="$p"
+ else
+ _LT_AC_TAGVAR(postdep_objects, $1)="$_LT_AC_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
+
+# PORTME: override above test on systems where it is broken
+ifelse([$1],[CXX],
+[case $host_os in
+interix3*)
+ # 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_AC_TAGVAR(predep_objects,$1)=
+ _LT_AC_TAGVAR(postdep_objects,$1)=
+ _LT_AC_TAGVAR(postdeps,$1)=
+ ;;
+
+solaris*)
+ case $cc_basename in
+ CC*)
+ # 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.
+ _LT_AC_TAGVAR(postdeps,$1)='-lCstd -lCrun'
+ ;;
+ esac
+ ;;
+esac
+])
+
+case " $_LT_AC_TAGVAR(postdeps, $1) " in
+*" -lc "*) _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no ;;
+esac
+])# AC_LIBTOOL_POSTDEP_PREDEP
+
+# AC_LIBTOOL_LANG_F77_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_F77_CONFIG], [_LT_AC_LANG_F77_CONFIG(F77)])
+AC_DEFUN([_LT_AC_LANG_F77_CONFIG],
+[AC_REQUIRE([AC_PROG_F77])
+AC_LANG_PUSH(Fortran 77)
+
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+_LT_AC_TAGVAR(allow_undefined_flag, $1)=
+_LT_AC_TAGVAR(always_export_symbols, $1)=no
+_LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_direct, $1)=no
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+_LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+_LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+_LT_AC_TAGVAR(hardcode_automatic, $1)=no
+_LT_AC_TAGVAR(module_cmds, $1)=
+_LT_AC_TAGVAR(module_expsym_cmds, $1)=
+_LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+_LT_AC_TAGVAR(no_undefined_flag, $1)=
+_LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+_LT_AC_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_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code=" subroutine t\n return\n end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code=" program t\n end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_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"
+CC=${F77-"f77"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+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
+ ;;
+aix4* | aix5*)
+ 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_AC_TAGVAR(GCC, $1)="$G77"
+_LT_AC_TAGVAR(LD, $1)="$LD"
+
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_POP
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_F77_CONFIG
+
+
+# AC_LIBTOOL_LANG_GCJ_CONFIG
+# --------------------------
+# Ensure that the configuration vars for the C compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_GCJ_CONFIG], [_LT_AC_LANG_GCJ_CONFIG(GCJ)])
+AC_DEFUN([_LT_AC_LANG_GCJ_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[[]] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+_LT_AC_SYS_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"
+CC=${GCJ-"gcj"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+_LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+
+_LT_AC_TAGVAR(old_archive_cmds, $1)=$old_archive_cmds
+
+AC_LIBTOOL_PROG_COMPILER_NO_RTTI($1)
+AC_LIBTOOL_PROG_COMPILER_PIC($1)
+AC_LIBTOOL_PROG_CC_C_O($1)
+AC_LIBTOOL_SYS_HARD_LINK_LOCKS($1)
+AC_LIBTOOL_PROG_LD_SHLIBS($1)
+AC_LIBTOOL_SYS_DYNAMIC_LINKER($1)
+AC_LIBTOOL_PROG_LD_HARDCODE_LIBPATH($1)
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_GCJ_CONFIG
+
+
+# AC_LIBTOOL_LANG_RC_CONFIG
+# -------------------------
+# Ensure that the configuration vars for the Windows resource compiler are
+# suitably defined. Those variables are subsequently used by
+# AC_LIBTOOL_CONFIG to write the compiler configuration to `libtool'.
+AC_DEFUN([AC_LIBTOOL_LANG_RC_CONFIG], [_LT_AC_LANG_RC_CONFIG(RC)])
+AC_DEFUN([_LT_AC_LANG_RC_CONFIG],
+[AC_LANG_SAVE
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+_LT_AC_TAGVAR(objext, $1)=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# 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_AC_SYS_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"
+CC=${RC-"windres"}
+compiler=$CC
+_LT_AC_TAGVAR(compiler, $1)=$CC
+_LT_CC_BASENAME([$compiler])
+_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)=yes
+
+AC_LIBTOOL_CONFIG($1)
+
+AC_LANG_RESTORE
+CC="$lt_save_CC"
+])# AC_LIBTOOL_LANG_RC_CONFIG
+
+
+# AC_LIBTOOL_CONFIG([TAGNAME])
+# ----------------------------
+# If TAGNAME is not passed, then 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
+# TAGNAME from the matching tagged config vars.
+AC_DEFUN([AC_LIBTOOL_CONFIG],
+[# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # 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
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ _LT_AC_TAGVAR(compiler, $1) \
+ _LT_AC_TAGVAR(CC, $1) \
+ _LT_AC_TAGVAR(LD, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1) \
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) \
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1) \
+ _LT_AC_TAGVAR(thread_safe_flag_spec, $1) \
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1) \
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1) \
+ _LT_AC_TAGVAR(old_archive_cmds, $1) \
+ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) \
+ _LT_AC_TAGVAR(predep_objects, $1) \
+ _LT_AC_TAGVAR(postdep_objects, $1) \
+ _LT_AC_TAGVAR(predeps, $1) \
+ _LT_AC_TAGVAR(postdeps, $1) \
+ _LT_AC_TAGVAR(compiler_lib_search_path, $1) \
+ _LT_AC_TAGVAR(archive_cmds, $1) \
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1) \
+ _LT_AC_TAGVAR(postinstall_cmds, $1) \
+ _LT_AC_TAGVAR(postuninstall_cmds, $1) \
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) \
+ _LT_AC_TAGVAR(allow_undefined_flag, $1) \
+ _LT_AC_TAGVAR(no_undefined_flag, $1) \
+ _LT_AC_TAGVAR(export_symbols_cmds, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1) \
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1) \
+ _LT_AC_TAGVAR(hardcode_automatic, $1) \
+ _LT_AC_TAGVAR(module_cmds, $1) \
+ _LT_AC_TAGVAR(module_expsym_cmds, $1) \
+ _LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1) \
+ _LT_AC_TAGVAR(exclude_expsyms, $1) \
+ _LT_AC_TAGVAR(include_expsyms, $1); do
+
+ case $var in
+ _LT_AC_TAGVAR(old_archive_cmds, $1) | \
+ _LT_AC_TAGVAR(old_archive_from_new_cmds, $1) | \
+ _LT_AC_TAGVAR(archive_cmds, $1) | \
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1) | \
+ _LT_AC_TAGVAR(module_cmds, $1) | \
+ _LT_AC_TAGVAR(module_expsym_cmds, $1) | \
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1) | \
+ _LT_AC_TAGVAR(export_symbols_cmds, $1) | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\[$]0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\[$]0 --fallback-echo"[$]/[$]0 --fallback-echo"/'`
+ ;;
+ esac
+
+ifelse([$1], [],
+ [cfgfile="${ofile}T"
+ trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+ $rm -f "$cfgfile"
+ AC_MSG_NOTICE([creating $ofile])],
+ [cfgfile="$ofile"])
+
+ cat <<__EOF__ >> "$cfgfile"
+ifelse([$1], [],
+[#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 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.
+
+# 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//"
+
+# 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
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG],
+[# ### BEGIN LIBTOOL TAG CONFIG: $tagname])
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$_LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# 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
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
+
+# Is the compiler the GNU C compiler?
+with_gcc=$_LT_AC_TAGVAR(GCC, $1)
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_[]_LT_AC_TAGVAR(LD, $1)
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_[]_LT_AC_TAGVAR(lt_cv_prog_compiler_c_o, $1)
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# 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
+
+# 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
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_static, $1)
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_[]_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_[]_LT_AC_TAGVAR(export_dynamic_flag_spec, $1)
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_[]_LT_AC_TAGVAR(whole_archive_flag_spec, $1)
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_[]_LT_AC_TAGVAR(thread_safe_flag_spec, $1)
+
+# Library versioning type.
+version_type=$version_type
+
+# 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
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_cmds, $1)
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_new_cmds, $1)
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_[]_LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_[]_LT_AC_TAGVAR(archive_cmds, $1)
+archive_expsym_cmds=$lt_[]_LT_AC_TAGVAR(archive_expsym_cmds, $1)
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_[]_LT_AC_TAGVAR(module_cmds, $1)
+module_expsym_cmds=$lt_[]_LT_AC_TAGVAR(module_expsym_cmds, $1)
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1)
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_[]_LT_AC_TAGVAR(predeps, $1)
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1)
+
+# 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
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_[]_LT_AC_TAGVAR(allow_undefined_flag, $1)
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_[]_LT_AC_TAGVAR(no_undefined_flag, $1)
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# 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
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$_LT_AC_TAGVAR(hardcode_action, $1)
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# Flag to hardcode \$libdir into a binary during linking.
+# This must work even if \$libdir does not exist.
+hardcode_libdir_flag_spec=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec, $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.
+hardcode_libdir_flag_spec_ld=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_[]_LT_AC_TAGVAR(hardcode_libdir_separator, $1)
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$_LT_AC_TAGVAR(hardcode_direct, $1)
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$_LT_AC_TAGVAR(hardcode_minus_L, $1)
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$_LT_AC_TAGVAR(hardcode_shlibpath_var, $1)
+
+# 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=$_LT_AC_TAGVAR(hardcode_automatic, $1)
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1)
+
+# 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
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$_LT_AC_TAGVAR(fix_srcfile_path, $1)"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$_LT_AC_TAGVAR(always_export_symbols, $1)
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_[]_LT_AC_TAGVAR(export_symbols_cmds, $1)
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_[]_LT_AC_TAGVAR(exclude_expsyms, $1)
+
+# Symbols that must always be exported.
+include_expsyms=$lt_[]_LT_AC_TAGVAR(include_expsyms, $1)
+
+ifelse([$1],[],
+[# ### END LIBTOOL CONFIG],
+[# ### END LIBTOOL TAG CONFIG: $tagname])
+
+__EOF__
+
+ifelse([$1],[], [
+ case $host_os in
+ aix3*)
+ cat <<\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
+EOF
+ ;;
+ esac
+
+ # 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)
+
+ mv -f "$cfgfile" "$ofile" || \
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+])
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+])# AC_LIBTOOL_CONFIG
+
+
+# AC_LIBTOOL_PROG_COMPILER_NO_RTTI([TAGNAME])
+# -------------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_NO_RTTI],
+[AC_REQUIRE([_LT_AC_SYS_COMPILER])dnl
+
+_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=
+
+if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)=' -fno-builtin'
+
+ AC_LIBTOOL_COMPILER_OPTION([if $compiler supports -fno-rtti -fno-exceptions],
+ lt_cv_prog_compiler_rtti_exceptions,
+ [-fno-rtti -fno-exceptions], [],
+ [_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_no_builtin_flag, $1) -fno-rtti -fno-exceptions"])
+fi
+])# AC_LIBTOOL_PROG_COMPILER_NO_RTTI
+
+
+# AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+# ---------------------------------
+AC_DEFUN([AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE],
+[AC_REQUIRE([AC_CANONICAL_HOST])
+AC_REQUIRE([AC_PROG_NM])
+AC_REQUIRE([AC_OBJEXT])
+# 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]]*\)'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \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\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[[BCDT]]'
+ ;;
+cygwin* | mingw* | pw32*)
+ symcode='[[ABCDGISTW]]'
+ ;;
+hpux*) # Its linker distinguishes data from code symbols
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDEGRST]]'
+ fi
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ ;;
+linux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[[ABCDGIRSTW]]'
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([[^ ]]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([[^ ]]*\) \([[^ ]]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ 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
+
+# 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
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[[ABCDGIRSTW]]' ;;
+esac
+
+# Try without a prefix undercore, 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.
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[[ ]]\($symcode$symcode*\)[[ ]][[ ]]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+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 <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+ cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ lt_ptr_t address;
+}
+lt_preloaded_symbols[[]] =
+{
+EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+ cat <<\EOF >> conftest.$ac_ext
+ {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$_LT_AC_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_save_LIBS"
+ CFLAGS="$lt_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 -f 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
+]) # AC_LIBTOOL_SYS_GLOBAL_SYMBOL_PIPE
+
+
+# AC_LIBTOOL_PROG_COMPILER_PIC([TAGNAME])
+# ---------------------------------------
+AC_DEFUN([AC_LIBTOOL_PROG_COMPILER_PIC],
+[_LT_AC_TAGVAR(lt_prog_compiler_wl, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=
+
+AC_MSG_CHECKING([for $compiler option to produce PIC])
+ ifelse([$1],[CXX],[
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_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_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+ amigaos*)
+ # 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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | os2* | pw32*)
+ # 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_AC_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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ interix3*)
+ # 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_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # 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*)
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix4* | aix5*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68*)
+ # Green Hills C++ Compiler
+ # _LT_AC_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
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ esac
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ if test "$host_cpu" != ia64; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ fi
+ ;;
+ aCC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ _LT_AC_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_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC*)
+ # KAI C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ icpc* | ecpc*)
+ # Intel C++
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ pgCC*)
+ # Portland Group C++ compiler.
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_AC_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_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd*)
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='--backend -Wl,'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ cxx*)
+ # Digital/Compaq C++
+ _LT_AC_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_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ lcc*)
+ # Lucid
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ case $cc_basename in
+ CC*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ esac
+ ;;
+ vxworks*)
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+],
+[
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_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_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # 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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # 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_AC_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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fno-common'
+ ;;
+
+ interix3*)
+ # 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_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # 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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ else
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-qnocommon'
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # 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_AC_TAGVAR(lt_prog_compiler_pic, $1)='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ _LT_AC_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_AC_TAGVAR(lt_prog_compiler_pic, $1)='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # PIC (with -KPIC) is the default.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ newsos6)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-fpic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+ ccc*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All Alpha code is PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ # All OSF/1 code is PIC.
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-non_shared'
+ ;;
+
+ solaris*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld ';;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Qoption ld '
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-PIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-Kconform_pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-KPIC'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ unicos*)
+ _LT_AC_TAGVAR(lt_prog_compiler_wl, $1)='-Wl,'
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+
+ uts4*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)='-pic'
+ _LT_AC_TAGVAR(lt_prog_compiler_static, $1)='-Bstatic'
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no
+ ;;
+ esac
+ fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)])
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)"; then
+ AC_LIBTOOL_COMPILER_OPTION([if $compiler PIC flag $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) works],
+ _LT_AC_TAGVAR(lt_prog_compiler_pic_works, $1),
+ [$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])], [],
+ [case $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1) in
+ "" | " "*) ;;
+ *) _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=" $_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)" ;;
+ esac],
+ [_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ _LT_AC_TAGVAR(lt_prog_compiler_can_build_shared, $1)=no])
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)=
+ ;;
+ *)
+ _LT_AC_TAGVAR(lt_prog_compiler_pic, $1)="$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)ifelse([$1],[],[ -DPIC],[ifelse([$1],[CXX],[ -DPIC],[])])"
+ ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$_LT_AC_TAGVAR(lt_prog_compiler_wl, $1) eval lt_tmp_static_flag=\"$_LT_AC_TAGVAR(lt_prog_compiler_static, $1)\"
+AC_LIBTOOL_LINKER_OPTION([if $compiler static flag $lt_tmp_static_flag works],
+ _LT_AC_TAGVAR(lt_prog_compiler_static_works, $1),
+ $lt_tmp_static_flag,
+ [],
+ [_LT_AC_TAGVAR(lt_prog_compiler_static, $1)=])
+])
+
+
+# AC_LIBTOOL_PROG_LD_SHLIBS([TAGNAME])
+# ------------------------------------
+# See if the linker supports building shared libraries.
+AC_DEFUN([AC_LIBTOOL_PROG_LD_SHLIBS],
+[AC_MSG_CHECKING([whether the $compiler linker ($LD) supports shared libraries])
+ifelse([$1],[CXX],[
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+ aix4* | aix5*)
+ # 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
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_AC_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_AC_TAGVAR(export_symbols_cmds, $1)="$ltdll_cmds"
+ ;;
+ cygwin* | mingw*)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[[BCDGRS]] /s/.* \([[^ ]]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([[^ ]]*\) [[^ ]]*/\1 DATA/;/^I /d;/^[[AITW]] /s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+],[
+ runpath_var=
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=no
+ _LT_AC_TAGVAR(archive_cmds, $1)=
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)=
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)=
+ _LT_AC_TAGVAR(old_archive_from_expsyms_cmds, $1)=
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ _LT_AC_TAGVAR(thread_safe_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)=
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=unknown
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=no
+ _LT_AC_TAGVAR(module_cmds, $1)=
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)=
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ _LT_AC_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_AC_TAGVAR(exclude_expsyms, $1)="_GLOBAL_OFFSET_TABLE_"
+ # 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.
+ extract_expsyms_cmds=
+ # Just being paranoid about ensuring that cc_basename is set.
+ _LT_CC_BASENAME([$compiler])
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # 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_AC_TAGVAR(ld_shlibs, $1)=yes
+ if test "$with_gnu_ld" = 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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}--rpath ${wl}$libdir'
+ _LT_AC_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_AC_TAGVAR(whole_archive_flag_spec, $1)="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ [[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
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, 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 modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1) is actually meaningless,
+ # as there is no search path for DLLs.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=no
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ _LT_AC_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'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ _LT_AC_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_AC_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_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ interix3*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_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_AC_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_AC_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'
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_addflag=
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$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' ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test $supports_anon_versioning = yes; then
+ _LT_AC_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 -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $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_AC_TAGVAR(ld_shlibs, $1)=no
+ cat <<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.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_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_AC_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_AC_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
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+ else
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ _LT_AC_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_AC_TAGVAR(ld_shlibs, $1)=no
+ fi
+ ;;
+ esac
+
+ if test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no; then
+ runpath_var=
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=
+ _LT_AC_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_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_TAGVAR(always_export_symbols, $1)=yes
+ _LT_AC_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_AC_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_AC_TAGVAR(hardcode_direct, $1)=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ 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
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ _LT_AC_TAGVAR(export_symbols_cmds, $1)='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\[$]2 == "T") || (\[$]2 == "D") || (\[$]2 == "B")) && ([substr](\[$]3,1,1) != ".")) { print \[$]3 } }'\'' | sort -u > $export_symbols'
+ else
+ _LT_AC_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]].*|aix5*)
+ 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_AC_TAGVAR(archive_cmds, $1)=''
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+
+ 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
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ else
+ # We have old collect2
+ _LT_AC_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_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_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
+
+ # It seems that -bexpall does not export symbols beginning with
+ # underscore (_), so it is better to generate a list of symbols to export.
+ _LT_AC_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_AC_TAGVAR(allow_undefined_flag, $1)='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ _LT_AC_SYS_LIBPATH_AIX
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-blibpath:$libdir:'"$aix_libpath"
+ _LT_AC_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 echo "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag"
+ else
+ if test "$host_cpu" = ia64; then
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-R $libdir:/usr/lib:/lib'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)="-z nodefs"
+ _LT_AC_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_AC_SYS_LIBPATH_AIX
+ _LT_AC_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_AC_TAGVAR(no_undefined_flag, $1)=' ${wl}-bernotok'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='$convenience'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ _LT_AC_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*)
+ _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ # see comment about different semantics on the GNU ld section
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+
+ bsdi[[45]]*)
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # 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.
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)=' '
+ _LT_AC_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_AC_TAGVAR(archive_cmds, $1)='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ _LT_AC_TAGVAR(old_archive_From_new_cmds, $1)='true'
+ # FIXME: Should let the user specify the lib program.
+ _LT_AC_TAGVAR(old_archive_cmds, $1)='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ _LT_AC_TAGVAR(fix_srcfile_path, $1)='`cygpath -w "$srcfile"`'
+ _LT_AC_TAGVAR(enable_shared_with_static_runtimes, $1)=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[[012]])
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_automatic, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=unsupported
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)=''
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ _LT_AC_TAGVAR(module_cmds, $1)='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ _LT_AC_TAGVAR(module_expsym_cmds, $1)='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ freebsd1*)
+ _LT_AC_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_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$rm $output_objdir/$soname~$CC -shared -fPIC ${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_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_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_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ esac
+ else
+ case $host_cpu in
+ hppa*64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ _LT_AC_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}+b ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='+b $libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+ *)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_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_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec_ld, $1)='-rpath $libdir'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ newsos6)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ openbsd*)
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-E'
+ else
+ case $host_os in
+ openbsd[[01]].* | openbsd2.[[0-7]] | openbsd2.[[0-7]].*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ ;;
+ *)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=unsupported
+ _LT_AC_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_AC_TAGVAR(old_archive_From_new_cmds, $1)='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' ${wl}-expect_unresolved ${wl}\*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='${wl}-rpath ${wl}$libdir'
+ else
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=' -expect_unresolved \*'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ _LT_AC_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~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_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_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-rpath $libdir'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=:
+ ;;
+
+ solaris*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)=' -z text'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ wlarc=''
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_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'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-R$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ case $host_os in
+ solaris2.[[0-5]] | solaris2.[[0-5]].*) ;;
+ *)
+ # The compiler driver will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl, iff we do not link with $LD.
+ # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ case $wlarc in
+ '')
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='-z allextract$convenience -z defaultextract' ;;
+ *)
+ _LT_AC_TAGVAR(whole_archive_flag_spec, $1)='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ esac ;;
+ esac
+ _LT_AC_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_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes
+ _LT_AC_TAGVAR(hardcode_minus_L, $1)=yes
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(reload_cmds, $1)='$CC -r -o $output$reload_objs'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no
+ ;;
+ motorola)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_direct, $1)=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ sysv4.3*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ _LT_AC_TAGVAR(ld_shlibs, $1)=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[[01]].[[10]]* | unixware7*)
+ _LT_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_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_AC_TAGVAR(no_undefined_flag, $1)='${wl}-z,text'
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)='${wl}-z,nodefs'
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ _LT_AC_TAGVAR(hardcode_libdir_separator, $1)=':'
+ _LT_AC_TAGVAR(link_all_deplibs, $1)=yes
+ _LT_AC_TAGVAR(export_dynamic_flag_spec, $1)='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ _LT_AC_TAGVAR(archive_cmds, $1)='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ _LT_AC_TAGVAR(archive_expsym_cmds, $1)='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ _LT_AC_TAGVAR(archive_cmds, $1)='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ _LT_AC_TAGVAR(hardcode_libdir_flag_spec, $1)='-L$libdir'
+ _LT_AC_TAGVAR(hardcode_shlibpath_var, $1)=no
+ ;;
+
+ *)
+ _LT_AC_TAGVAR(ld_shlibs, $1)=no
+ ;;
+ esac
+ fi
+])
+AC_MSG_RESULT([$_LT_AC_TAGVAR(ld_shlibs, $1)])
+test "$_LT_AC_TAGVAR(ld_shlibs, $1)" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)" in
+x|xyes)
+ # Assume -lc should be added
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $_LT_AC_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_MSG_CHECKING([whether -lc should be explicitly linked in])
+ $rm conftest*
+ printf "$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_AC_TAGVAR(lt_prog_compiler_wl, $1)
+ pic_flag=$_LT_AC_TAGVAR(lt_prog_compiler_pic, $1)
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$_LT_AC_TAGVAR(allow_undefined_flag, $1)
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=
+ if AC_TRY_EVAL(_LT_AC_TAGVAR(archive_cmds, $1) 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1)
+ then
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=no
+ else
+ _LT_AC_TAGVAR(archive_cmds_need_lc, $1)=yes
+ fi
+ _LT_AC_TAGVAR(allow_undefined_flag, $1)=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ AC_MSG_RESULT([$_LT_AC_TAGVAR(archive_cmds_need_lc, $1)])
+ ;;
+ esac
+ fi
+ ;;
+esac
+])# AC_LIBTOOL_PROG_LD_SHLIBS
+
+
+# _LT_AC_FILE_LTDLL_C
+# -------------------
+# Be careful that the start marker always follows a newline.
+AC_DEFUN([_LT_AC_FILE_LTDLL_C], [
+# /* ltdll.c starts here */
+# #define WIN32_LEAN_AND_MEAN
+# #include <windows.h>
+# #undef WIN32_LEAN_AND_MEAN
+# #include <stdio.h>
+#
+# #ifndef __CYGWIN__
+# # ifdef __CYGWIN32__
+# # define __CYGWIN__ __CYGWIN32__
+# # endif
+# #endif
+#
+# #ifdef __cplusplus
+# extern "C" {
+# #endif
+# BOOL APIENTRY DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved);
+# #ifdef __cplusplus
+# }
+# #endif
+#
+# #ifdef __CYGWIN__
+# #include <cygwin/cygwin_dll.h>
+# DECLARE_CYGWIN_DLL( DllMain );
+# #endif
+# HINSTANCE __hDllInstance_base;
+#
+# BOOL APIENTRY
+# DllMain (HINSTANCE hInst, DWORD reason, LPVOID reserved)
+# {
+# __hDllInstance_base = hInst;
+# return TRUE;
+# }
+# /* ltdll.c ends here */
+])# _LT_AC_FILE_LTDLL_C
+
+
+# _LT_AC_TAGVAR(VARNAME, [TAGNAME])
+# ---------------------------------
+AC_DEFUN([_LT_AC_TAGVAR], [ifelse([$2], [], [$1], [$1_$2])])
+
+
+# old names
+AC_DEFUN([AM_PROG_LIBTOOL], [AC_PROG_LIBTOOL])
+AC_DEFUN([AM_ENABLE_SHARED], [AC_ENABLE_SHARED($@)])
+AC_DEFUN([AM_ENABLE_STATIC], [AC_ENABLE_STATIC($@)])
+AC_DEFUN([AM_DISABLE_SHARED], [AC_DISABLE_SHARED($@)])
+AC_DEFUN([AM_DISABLE_STATIC], [AC_DISABLE_STATIC($@)])
+AC_DEFUN([AM_PROG_LD], [AC_PROG_LD])
+AC_DEFUN([AM_PROG_NM], [AC_PROG_NM])
+
+# This is just to silence aclocal about the macro not being used
+ifelse([AC_DISABLE_FAST_INSTALL])
+
+AC_DEFUN([LT_AC_PROG_GCJ],
+[AC_CHECK_TOOL(GCJ, gcj, no)
+ test "x${GCJFLAGS+set}" = xset || GCJFLAGS="-g -O2"
+ AC_SUBST(GCJFLAGS)
+])
+
+AC_DEFUN([LT_AC_PROG_RC],
+[AC_CHECK_TOOL(RC, windres, no)
+])
+
+# 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. #
+# LT_AC_PROG_SED
+# --------------
+# Check for a fully-functional sed program, that truncates
+# as few characters as possible. Prefer GNU sed if found.
+AC_DEFUN([LT_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])
+])
+
+# pkg.m4 - Macros to locate and utilise pkg-config. -*- Autoconf -*-
+#
+# 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])dnl
+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.
+#
+#
+# Similar to PKG_CHECK_MODULES, make sure that the first instance of
+# this or PKG_CHECK_MODULES is called, or make sure 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_ifval([$2], [$2], [:])
+m4_ifvaln([$3], [else
+ $3])dnl
+fi])
+
+
+# _PKG_CONFIG([VARIABLE], [COMMAND], [MODULES])
+# ---------------------------------------------
+m4_define([_PKG_CONFIG],
+[if test -n "$PKG_CONFIG"; then
+ if test -n "$$1"; then
+ pkg_cv_[]$1="$$1"
+ else
+ PKG_CHECK_EXISTS([$3],
+ [pkg_cv_[]$1=`$PKG_CONFIG --[]$2 "$3" 2>/dev/null`],
+ [pkg_failed=yes])
+ fi
+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
+ _PKG_SHORT_ERRORS_SUPPORTED
+ if test $_pkg_short_errors_supported = yes; then
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --short-errors --errors-to-stdout --print-errors "$2"`
+ else
+ $1[]_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "$2"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$$1[]_PKG_ERRORS" >&AS_MESSAGE_LOG_FD
+
+ ifelse([$4], , [AC_MSG_ERROR(dnl
+[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
+])],
+ [AC_MSG_RESULT([no])
+ $4])
+elif test $pkg_failed = untried; then
+ ifelse([$4], , [AC_MSG_FAILURE(dnl
+[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://www.freedesktop.org/software/pkgconfig>.])],
+ [$4])
+else
+ $1[]_CFLAGS=$pkg_cv_[]$1[]_CFLAGS
+ $1[]_LIBS=$pkg_cv_[]$1[]_LIBS
+ AC_MSG_RESULT([yes])
+ ifelse([$3], , :, [$3])
+fi[]dnl
+])# PKG_CHECK_MODULES
+
+# ulonglong.m4 serial 6
+dnl Copyright (C) 1999-2006 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_UNSIGNED_LONG_LONG_INT if 'unsigned long long int' works.
+# This fixes a bug in Autoconf 2.60, but can be removed once we
+# assume 2.61 everywhere.
+
+# 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_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[unsigned long long int ull = 18446744073709551615ULL;
+ typedef int a[(18446744073709551615ULL <= (unsigned long long int) -1
+ ? 1 : -1)];
+ int i = 63;]],
+ [[unsigned long long int ullmax = 18446744073709551615ull;
+ return (ull << 63 | ull >> 63 | ull << i | ull >> i
+ | ullmax / ull | ullmax % ull);]])],
+ [ac_cv_type_unsigned_long_long_int=yes],
+ [ac_cv_type_unsigned_long_long_int=no])])
+ 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
+])
+
+# This macro is obsolescent and should go away soon.
+AC_DEFUN([gl_AC_TYPE_UNSIGNED_LONG_LONG],
+[
+ AC_REQUIRE([AC_TYPE_UNSIGNED_LONG_LONG_INT])
+ ac_cv_type_unsigned_long_long=$ac_cv_type_unsigned_long_long_int
+ if test $ac_cv_type_unsigned_long_long = yes; then
+ AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1,
+ [Define if you have the 'unsigned long long' type.])
+ fi
+])
+
+# Copyright (C) 2002, 2003, 2005, 2006 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.
+
+# 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.10'
+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.10], [],
+ [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 AC_INIT_AUTOMAKE.
+AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
+[AM_AUTOMAKE_VERSION([1.10])dnl
+_AM_AUTOCONF_VERSION(m4_PACKAGE_VERSION)])
+
+# AM_AUX_DIR_EXPAND -*- Autoconf -*-
+
+# Copyright (C) 2001, 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.
+
+# 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
+# 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_CONDITIONAL(NAME, SHELL-CONDITION)
+# -------------------------------------
+# Define a conditional.
+AC_DEFUN([AM_CONDITIONAL],
+[AC_PREREQ(2.52)dnl
+ ifelse([$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
+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
+# 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
+
+# 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
+
+ifelse([$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'.
+ 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
+ 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
+
+ case $depmode in
+ 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
+ ;;
+ none) break ;;
+ esac
+ # 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.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} 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 sub/conftest.${OBJEXT-o} 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,
+[ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors])
+if test "x$enable_dependency_tracking" != xno; then
+ am_depcomp="$ac_aux_dir/depcomp"
+ AMDEPBACKSLASH='\'
+fi
+AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno])
+AC_SUBST([AMDEPBACKSLASH])dnl
+_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl
+])
+
+# Generate code to set up dependency tracking. -*- Autoconf -*-
+
+# Copyright (C) 1999, 2000, 2001, 2002, 2003, 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 3
+
+# _AM_OUTPUT_DEPENDENCY_COMMANDS
+# ------------------------------
+AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
+[for mf in $CONFIG_FILES; 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 10q "$mf" | grep '^#.*generated by automake' > /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 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 12
+
+# 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.60])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], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,,
+ [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)
+AM_PROG_INSTALL_SH
+AM_PROG_INSTALL_STRIP
+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
+])
+])
+
+
+# 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_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $1 | $1:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $1" >`AS_DIRNAME([$1])`/stamp-h[]$_am_stamp_count])
+
+# Copyright (C) 2001, 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.
+
+# AM_PROG_INSTALL_SH
+# ------------------
+# Define $install_sh.
+AC_DEFUN([AM_PROG_INSTALL_SH],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+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 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_MAKE_INCLUDE()
+# -----------------
+# Check to see how make treats includes.
+AC_DEFUN([AM_MAKE_INCLUDE],
+[am_make=${MAKE-make}
+cat > confinc << 'END'
+am__doit:
+ @echo done
+.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
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+ am__include=include
+ am__quote=
+ _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ fi
+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
+# 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_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
+ac_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']`
+if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != 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
+# 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_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
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# 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 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.
+
+# 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 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_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],
+[AC_FOREACH([_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
+# 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_SANITY_CHECK
+# ---------------
+AC_DEFUN([AM_SANITY_CHECK],
+[AC_MSG_CHECKING([whether build environment is sane])
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# 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 (
+ 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
+ rm -f conftest.file
+ 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
+
+ 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)])
+
+# Copyright (C) 2001, 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.
+
+# 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 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.
+
+# _AM_SUBST_NOTMAKE(VARIABLE)
+# ---------------------------
+# Prevent Automake from outputing VARIABLE = @VARIABLE@ in Makefile.in.
+# This macro is traced by Automake.
+AC_DEFUN([_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/absolute-header.m4])
+m4_include([m4/alloca.m4])
+m4_include([m4/assert.m4])
+m4_include([m4/atexit.m4])
+m4_include([m4/calloc.m4])
+m4_include([m4/close-stream.m4])
+m4_include([m4/closeout.m4])
+m4_include([m4/codeset.m4])
+m4_include([m4/config-h.m4])
+m4_include([m4/dirname.m4])
+m4_include([m4/dos.m4])
+m4_include([m4/double-slash-root.m4])
+m4_include([m4/error.m4])
+m4_include([m4/exitfail.m4])
+m4_include([m4/extensions.m4])
+m4_include([m4/fpending.m4])
+m4_include([m4/free.m4])
+m4_include([m4/getopt.m4])
+m4_include([m4/gettext.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/inline.m4])
+m4_include([m4/inttypes-pri.m4])
+m4_include([m4/inttypes.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/localcharset.m4])
+m4_include([m4/long-options.m4])
+m4_include([m4/longlong.m4])
+m4_include([m4/mbrtowc.m4])
+m4_include([m4/mbstate_t.m4])
+m4_include([m4/memchr.m4])
+m4_include([m4/memcmp.m4])
+m4_include([m4/memcpy.m4])
+m4_include([m4/memmove.m4])
+m4_include([m4/memset.m4])
+m4_include([m4/nls.m4])
+m4_include([m4/po.m4])
+m4_include([m4/progtest.m4])
+m4_include([m4/quotearg.m4])
+m4_include([m4/regex.m4])
+m4_include([m4/rename.m4])
+m4_include([m4/rpmatch.m4])
+m4_include([m4/safe-read.m4])
+m4_include([m4/safe-write.m4])
+m4_include([m4/ssize_t.m4])
+m4_include([m4/stdarg.m4])
+m4_include([m4/stdbool.m4])
+m4_include([m4/stdint.m4])
+m4_include([m4/stdlib_h.m4])
+m4_include([m4/strcspn.m4])
+m4_include([m4/string_h.m4])
+m4_include([m4/strndup.m4])
+m4_include([m4/strnlen.m4])
+m4_include([m4/strtod.m4])
+m4_include([m4/strtol.m4])
+m4_include([m4/unistd_h.m4])
+m4_include([m4/utimbuf.m4])
+m4_include([m4/utime.m4])
+m4_include([m4/utimes-null.m4])
+m4_include([m4/wchar.m4])
+m4_include([m4/wctype.m4])
+m4_include([m4/wint_t.m4])
+m4_include([m4/xalloc.m4])
+m4_include([m4/xstrndup.m4])
diff --git a/parted-1.8.7/build-aux/compile b/parted-1.8.7/build-aux/compile
new file mode 100755
index 0000000..1b1d232
--- /dev/null
+++ b/parted-1.8.7/build-aux/compile
@@ -0,0 +1,142 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand `-c -o'.
+
+scriptversion=2005-05-14.22
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005 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, 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.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+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 $?
+ ;;
+esac
+
+ofile=
+cfile=
+eat=
+
+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 -e 's|^.*/||' -e '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
+ mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+ 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-end: "$"
+# End:
diff --git a/parted-1.8.7/build-aux/config.guess b/parted-1.8.7/build-aux/config.guess
new file mode 100755
index 0000000..0f0fe71
--- /dev/null
+++ b/parted-1.8.7/build-aux/config.guess
@@ -0,0 +1,1516 @@
+#! /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 Free Software Foundation,
+# Inc.
+
+timestamp='2007-03-06'
+
+# 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 <per@bothner.com>.
+# Please send patches to <config-patches@gnu.org>. Submit a context
+# diff and a properly formatted ChangeLog entry.
+#
+# This script attempts to guess a canonical system name similar to
+# config.sub. If it succeeds, it prints the system name on stdout, and
+# exits with 0. Otherwise, it exits with 1.
+#
+# The plan is that this can be called by configure scripts if you
+# don't specify an explicit build system type.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION]
+
+Output the configuration name of the system \`$me' is run on.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <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
+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 __ELF__ >/dev/null
+ then
+ # Once all utilities can be ECOFF (netbsdecoff) or a.out (netbsdaout).
+ # Return netbsd for either. FIX?
+ os=netbsd
+ else
+ os=netbsdelf
+ fi
+ ;;
+ *)
+ os=netbsd
+ ;;
+ esac
+ # The OS release
+ # Debian GNU/NetBSD machines have a different userland, and
+ # thus, need a distinct triplet. However, they do not need
+ # kernel version information, so it can be replaced with a
+ # suitable tag, in the style of linux-gnu.
+ case "${UNAME_VERSION}" in
+ Debian*)
+ release='-gnu'
+ ;;
+ *)
+ release=`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
+ ;;
+ esac
+ # Since CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM:
+ # contains redundant information, the shorter form:
+ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
+ echo "${machine}-${os}${release}"
+ exit ;;
+ *:OpenBSD:*:*)
+ UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+ echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
+ exit ;;
+ *:ekkoBSD:*:*)
+ echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
+ exit ;;
+ *: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'`
+ exit ;;
+ Alpha\ *:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # Should we change UNAME_MACHINE based on the output of uname instead
+ # of the specific Alpha model?
+ echo alpha-pc-interix
+ exit ;;
+ 21064:Windows_NT:50:3)
+ echo alpha-dec-winnt3.5
+ exit ;;
+ Amiga*:UNIX_System_V:4.0:*)
+ echo m68k-unknown-sysv4
+ exit ;;
+ *:[Aa]miga[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-amigaos
+ exit ;;
+ *:[Mm]orph[Oo][Ss]:*:*)
+ echo ${UNAME_MACHINE}-unknown-morphos
+ exit ;;
+ *:OS/390:*:*)
+ echo i370-ibm-openedition
+ exit ;;
+ *:z/VM:*:*)
+ echo s390-ibm-zvmoe
+ exit ;;
+ *:OS400:*:*)
+ echo powerpc-ibm-os400
+ exit ;;
+ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
+ echo arm-acorn-riscix${UNAME_RELEASE}
+ exit ;;
+ arm:riscos:*:*|arm:RISCOS:*:*)
+ echo arm-unknown-riscos
+ exit ;;
+ SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
+ echo hppa1.1-hitachi-hiuxmpp
+ exit ;;
+ Pyramid*:OSx*:*:* | MIS*:OSx*:*:* | MIS*:SMP_DC-OSx*:*:*)
+ # akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
+ if test "`(/bin/universe) 2>/dev/null`" = att ; then
+ echo pyramid-pyramid-sysv3
+ else
+ echo pyramid-pyramid-bsd
+ fi
+ exit ;;
+ NILE*:*:*:dcosx)
+ echo pyramid-pyramid-svr4
+ exit ;;
+ DRS?6000:unix:4.0:6*)
+ echo sparc-icl-nx6
+ exit ;;
+ DRS?6000:UNIX_SV:4.2*:7* | DRS?6000:isis:4.2*:7*)
+ case `/usr/bin/uname -p` in
+ sparc) echo sparc-icl-nx7; exit ;;
+ esac ;;
+ sun4H:SunOS:5.*:*)
+ echo sparc-hal-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
+ echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ i86pc:SunOS:5.*:*)
+ echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:6*:*)
+ # According to config.sub, this is the proper way to canonicalize
+ # SunOS6. Hard to guess exactly what SunOS6 will be like, but
+ # it's likely to be more like Solaris than SunOS4.
+ echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ sun4*:SunOS:*:*)
+ case "`/usr/bin/arch -k`" in
+ Series*|S4*)
+ UNAME_RELEASE=`uname -v`
+ ;;
+ esac
+ # Japanese Language versions have a version number like `4.1.3-JL'.
+ echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
+ exit ;;
+ sun3*:SunOS:*:*)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ exit ;;
+ sun*:*:4.2BSD:*)
+ UNAME_RELEASE=`(sed 1q /etc/motd | awk '{print substr($5,1,3)}') 2>/dev/null`
+ test "x${UNAME_RELEASE}" = "x" && UNAME_RELEASE=3
+ case "`/bin/arch`" in
+ sun3)
+ echo m68k-sun-sunos${UNAME_RELEASE}
+ ;;
+ sun4)
+ echo sparc-sun-sunos${UNAME_RELEASE}
+ ;;
+ esac
+ exit ;;
+ aushp:SunOS:*:*)
+ echo sparc-auspex-sunos${UNAME_RELEASE}
+ exit ;;
+ # The situation for MiNT is a little confusing. The machine name
+ # can be virtually everything (everything which is not
+ # "atarist" or "atariste" at least should have a processor
+ # > m68000). The system name ranges from "MiNT" over "FreeMiNT"
+ # to the lowercase version "mint" (or "freemint"). Finally
+ # the system name "TOS" denotes a system which is actually not
+ # MiNT. But MiNT is downward compatible to TOS, so this should
+ # be no problem.
+ atarist[e]:*MiNT:*:* | atarist[e]:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ atari*:*MiNT:*:* | atari*:*mint:*:* | atarist[e]:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ *falcon*:*MiNT:*:* | *falcon*:*mint:*:* | *falcon*:*TOS:*:*)
+ echo m68k-atari-mint${UNAME_RELEASE}
+ exit ;;
+ milan*:*MiNT:*:* | milan*:*mint:*:* | *milan*:*TOS:*:*)
+ echo m68k-milan-mint${UNAME_RELEASE}
+ exit ;;
+ hades*:*MiNT:*:* | hades*:*mint:*:* | *hades*:*TOS:*:*)
+ echo m68k-hades-mint${UNAME_RELEASE}
+ exit ;;
+ *:*MiNT:*:* | *:*mint:*:* | *:*TOS:*:*)
+ echo m68k-unknown-mint${UNAME_RELEASE}
+ exit ;;
+ m68k:machten:*:*)
+ echo m68k-apple-machten${UNAME_RELEASE}
+ exit ;;
+ powerpc:machten:*:*)
+ echo powerpc-apple-machten${UNAME_RELEASE}
+ exit ;;
+ RISC*:Mach:*:*)
+ echo mips-dec-mach_bsd4.3
+ exit ;;
+ RISC*:ULTRIX:*:*)
+ echo mips-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ VAX*:ULTRIX*:*:*)
+ echo vax-dec-ultrix${UNAME_RELEASE}
+ exit ;;
+ 2020:CLIX:*:* | 2430:CLIX:*:*)
+ echo clipper-intergraph-clix${UNAME_RELEASE}
+ exit ;;
+ mips:*:*:UMIPS | mips:*:*:RISCos)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+#ifdef __cplusplus
+#include <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:*:[45])
+ IBM_CPU_ID=`/usr/sbin/lsdev -C -c processor -S available | sed 1q | awk '{ print $1 }'`
+ if /usr/sbin/lsattr -El ${IBM_CPU_ID} | grep ' POWER' >/dev/null 2>&1; then
+ IBM_ARCH=rs6000
+ else
+ IBM_ARCH=powerpc
+ fi
+ if [ -x /usr/bin/oslevel ] ; then
+ IBM_REV=`/usr/bin/oslevel`
+ else
+ IBM_REV=${UNAME_VERSION}.${UNAME_RELEASE}
+ fi
+ echo ${IBM_ARCH}-ibm-aix${IBM_REV}
+ exit ;;
+ *:AIX:*:*)
+ echo rs6000-ibm-aix
+ exit ;;
+ ibmrt:4.4BSD:*|romp-ibm:BSD:*)
+ echo romp-ibm-bsd4.4
+ exit ;;
+ ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC BSD and
+ echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
+ exit ;; # report: romp-ibm BSD 4.3
+ *:BOSX:*:*)
+ echo rs6000-bull-bosx
+ exit ;;
+ DPX/2?00:B.O.S.:*:*)
+ echo m68k-bull-sysv3
+ exit ;;
+ 9000/[34]??:4.3bsd:1.*:*)
+ echo m68k-hp-bsd
+ exit ;;
+ hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
+ echo m68k-hp-bsd4.4
+ exit ;;
+ 9000/[34678]??:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ case "${UNAME_MACHINE}" in
+ 9000/31? ) HP_ARCH=m68000 ;;
+ 9000/[34]?? ) HP_ARCH=m68k ;;
+ 9000/[678][0-9][0-9])
+ if [ -x /usr/bin/getconf ]; then
+ sc_cpu_version=`/usr/bin/getconf SC_CPU_VERSION 2>/dev/null`
+ sc_kernel_bits=`/usr/bin/getconf SC_KERNEL_BITS 2>/dev/null`
+ case "${sc_cpu_version}" in
+ 523) HP_ARCH="hppa1.0" ;; # CPU_PA_RISC1_0
+ 528) HP_ARCH="hppa1.1" ;; # CPU_PA_RISC1_1
+ 532) # CPU_PA_RISC2_0
+ case "${sc_kernel_bits}" in
+ 32) HP_ARCH="hppa2.0n" ;;
+ 64) HP_ARCH="hppa2.0w" ;;
+ '') HP_ARCH="hppa2.0" ;; # HP-UX 10.20
+ esac ;;
+ esac
+ fi
+ if [ "${HP_ARCH}" = "" ]; then
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+
+ #define _HPUX_SOURCE
+ #include <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 __LP64__ >/dev/null
+ then
+ HP_ARCH="hppa2.0w"
+ else
+ HP_ARCH="hppa64"
+ fi
+ fi
+ echo ${HP_ARCH}-hp-hpux${HPUX_REV}
+ exit ;;
+ ia64:HP-UX:*:*)
+ HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
+ echo ia64-hp-hpux${HPUX_REV}
+ exit ;;
+ 3050*:HI-UX:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <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*:[3456]*)
+ case ${UNAME_MACHINE} in
+ x86)
+ echo i586-pc-interix${UNAME_RELEASE}
+ exit ;;
+ EM64T | authenticamd)
+ echo x86_64-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 ;;
+ i*:Windows_NT*:* | Pentium*:Windows_NT*:*)
+ # How do we know it's Interix rather than the generic POSIX subsystem?
+ # It also conflicts with pre-2.0 versions of AT&T UWIN. Should we
+ # UNAME_MACHINE based on the output of uname instead of i386?
+ echo i586-pc-interix
+ exit ;;
+ i*:UWIN*:*)
+ echo ${UNAME_MACHINE}-pc-uwin
+ exit ;;
+ amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
+ echo x86_64-unknown-cygwin
+ exit ;;
+ p*:CYGWIN*:*)
+ echo powerpcle-unknown-cygwin
+ exit ;;
+ prep*:SunOS:5.*:*)
+ echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
+ exit ;;
+ *:GNU:*:*)
+ # the GNU system
+ echo `echo ${UNAME_MACHINE}|sed -e 's,[-/].*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
+ exit ;;
+ *:GNU/*:*:*)
+ # other systems with GNU libc and userland
+ echo ${UNAME_MACHINE}-unknown-`echo ${UNAME_SYSTEM} | sed 's,^[^/]*/,,' | tr '[A-Z]' '[a-z]'``echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`-gnu
+ exit ;;
+ i*86:Minix:*:*)
+ echo ${UNAME_MACHINE}-pc-minix
+ exit ;;
+ arm*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ 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 ;;
+ ia64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m32r*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ m68*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ mips:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips
+ #undef mipsel
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mipsel
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^CPU/{
+ s: ::g
+ p
+ }'`"
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ mips64:Linux:*:*)
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #undef CPU
+ #undef mips64
+ #undef mips64el
+ #if defined(__MIPSEL__) || defined(__MIPSEL) || defined(_MIPSEL) || defined(MIPSEL)
+ CPU=mips64el
+ #else
+ #if defined(__MIPSEB__) || defined(__MIPSEB) || defined(_MIPSEB) || defined(MIPSEB)
+ CPU=mips64
+ #else
+ CPU=
+ #endif
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^CPU/{
+ s: ::g
+ p
+ }'`"
+ test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
+ ;;
+ or32:Linux:*:*)
+ echo or32-unknown-linux-gnu
+ exit ;;
+ ppc:Linux:*:*)
+ echo powerpc-unknown-linux-gnu
+ exit ;;
+ ppc64:Linux:*:*)
+ echo powerpc64-unknown-linux-gnu
+ exit ;;
+ alpha:Linux:*:*)
+ case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in
+ EV5) UNAME_MACHINE=alphaev5 ;;
+ EV56) UNAME_MACHINE=alphaev56 ;;
+ PCA56) UNAME_MACHINE=alphapca56 ;;
+ PCA57) UNAME_MACHINE=alphapca56 ;;
+ EV6) UNAME_MACHINE=alphaev6 ;;
+ EV67) UNAME_MACHINE=alphaev67 ;;
+ EV68*) UNAME_MACHINE=alphaev68 ;;
+ esac
+ objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
+ if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
+ echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
+ exit ;;
+ parisc:Linux:*:* | hppa:Linux:*:*)
+ # Look for CPU level
+ case `grep '^cpu[^a-z]*:' /proc/cpuinfo 2>/dev/null | cut -d' ' -f2` in
+ PA7*) echo hppa1.1-unknown-linux-gnu ;;
+ PA8*) echo hppa2.0-unknown-linux-gnu ;;
+ *) echo hppa-unknown-linux-gnu ;;
+ esac
+ exit ;;
+ parisc64:Linux:*:* | hppa64:Linux:*:*)
+ echo hppa64-unknown-linux-gnu
+ exit ;;
+ s390:Linux:*:* | s390x:Linux:*:*)
+ echo ${UNAME_MACHINE}-ibm-linux
+ exit ;;
+ sh64*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sh*:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ sparc:Linux:*:* | sparc64:Linux:*:*)
+ echo ${UNAME_MACHINE}-unknown-linux-gnu
+ exit ;;
+ vax:Linux:*:*)
+ echo ${UNAME_MACHINE}-dec-linux-gnu
+ exit ;;
+ x86_64:Linux:*:*)
+ echo x86_64-unknown-linux-gnu
+ exit ;;
+ xtensa:Linux:*:*)
+ echo xtensa-unknown-linux-gnu
+ exit ;;
+ i*86:Linux:*:*)
+ # The BFD linker knows what the default object file format is, so
+ # first see if it will tell us. cd to the root directory to prevent
+ # problems with other programs or directories called `ld' in the path.
+ # Set LC_ALL=C to ensure ld outputs messages in English.
+ ld_supported_targets=`cd /; LC_ALL=C ld --help 2>&1 \
+ | sed -ne '/supported targets:/!d
+ s/[ ][ ]*/ /g
+ s/.*supported targets: *//
+ s/ .*//
+ p'`
+ case "$ld_supported_targets" in
+ elf32-i386)
+ TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
+ ;;
+ a.out-i386-linux)
+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
+ exit ;;
+ coff-i386)
+ echo "${UNAME_MACHINE}-pc-linux-gnucoff"
+ exit ;;
+ "")
+ # Either a pre-BFD a.out linker (linux-gnuoldld) or
+ # one that does not give us useful --help.
+ echo "${UNAME_MACHINE}-pc-linux-gnuoldld"
+ exit ;;
+ esac
+ # Determine whether the default compiler is a.out or elf
+ eval $set_cc_for_build
+ sed 's/^ //' << EOF >$dummy.c
+ #include <features.h>
+ #ifdef __ELF__
+ # ifdef __GLIBC__
+ # if __GLIBC__ >= 2
+ LIBC=gnu
+ # else
+ LIBC=gnulibc1
+ # endif
+ # else
+ LIBC=gnulibc1
+ # endif
+ #else
+ #if defined(__INTEL_COMPILER) || defined(__PGI) || defined(__SUNPRO_C) || defined(__SUNPRO_CC)
+ LIBC=gnu
+ #else
+ LIBC=gnuaout
+ #endif
+ #endif
+ #ifdef __dietlibc__
+ LIBC=dietlibc
+ #endif
+EOF
+ eval "`$CC_FOR_BUILD -E $dummy.c 2>/dev/null | sed -n '
+ /^LIBC/{
+ s: ::g
+ p
+ }'`"
+ test x"${LIBC}" != x && {
+ echo "${UNAME_MACHINE}-pc-linux-${LIBC}"
+ exit
+ }
+ test x"${TENTATIVE}" != x && { echo "${TENTATIVE}"; exit; }
+ ;;
+ i*86:DYNIX/ptx:4*:*)
+ # ptx 4.0 does uname -s correctly, with DYNIX/ptx in there.
+ # earlier versions are messed up and put the nodename in both
+ # sysname and nodename.
+ echo i386-sequent-sysv4
+ exit ;;
+ i*86:UNIX_SV:4.2MP:2.*)
+ # Unixware is an offshoot of SVR4, but it has its own version
+ # number series starting with 2...
+ # I am not positive that other SVR4 systems won't match this,
+ # I just have to hope. -- rms.
+ # Use sysv4.2uw... so that sysv4* matches it.
+ echo ${UNAME_MACHINE}-pc-sysv4.2uw${UNAME_VERSION}
+ exit ;;
+ i*86:OS/2:*:*)
+ # If we were able to find `uname', then EMX Unix compatibility
+ # is probably installed.
+ echo ${UNAME_MACHINE}-pc-os2-emx
+ exit ;;
+ i*86:XTS-300:*:STOP)
+ echo ${UNAME_MACHINE}-unknown-stop
+ exit ;;
+ i*86:atheos:*:*)
+ echo ${UNAME_MACHINE}-unknown-atheos
+ exit ;;
+ i*86:syllable:*:*)
+ echo ${UNAME_MACHINE}-pc-syllable
+ exit ;;
+ i*86:LynxOS:2.*:* | i*86:LynxOS:3.[01]*:* | i*86:LynxOS:4.0*:*)
+ echo i386-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ i*86:*DOS:*:*)
+ echo ${UNAME_MACHINE}-pc-msdosdjgpp
+ exit ;;
+ i*86:*:4.*:* | i*86:SYSTEM_V:4.*:*)
+ UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'`
+ if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
+ echo ${UNAME_MACHINE}-univel-sysv${UNAME_REL}
+ else
+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
+ fi
+ exit ;;
+ i*86:*:5:[678]*)
+ # UnixWare 7.x, OpenUNIX and OpenServer 6.
+ case `/bin/uname -X | grep "^Machine"` in
+ *486*) UNAME_MACHINE=i486 ;;
+ *Pentium) UNAME_MACHINE=i586 ;;
+ *Pent*|*Celeron) UNAME_MACHINE=i686 ;;
+ esac
+ echo ${UNAME_MACHINE}-unknown-sysv${UNAME_RELEASE}${UNAME_SYSTEM}${UNAME_VERSION}
+ exit ;;
+ i*86:*:3.2:*)
+ if test -f /usr/options/cb.name; then
+ UNAME_REL=`sed -n 's/.*Version //p' </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 i386.
+ echo i386-pc-msdosdjgpp
+ exit ;;
+ Intel:Mach:3*:*)
+ echo i386-pc-mach3
+ exit ;;
+ paragon:*:*:*)
+ echo i860-intel-osf1
+ exit ;;
+ i860:*:4.*:*) # i860-SVR4
+ if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
+ echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
+ else # Add other i860-SVR4 vendors below as they are discovered.
+ echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
+ fi
+ exit ;;
+ mini*:CTIX:SYS*5:*)
+ # "miniframe"
+ echo m68010-convergent-sysv
+ exit ;;
+ mc68k:UNIX:SYSTEM5:3.51m)
+ echo m68k-convergent-sysv
+ exit ;;
+ M680?0:D-NIX:5.3:*)
+ echo m68k-diab-dnix
+ exit ;;
+ M68*:*:R3V[5678]*:*)
+ test -r /sysV68 && { echo 'm68k-motorola-sysv'; exit; } ;;
+ 3[345]??:*:4.0:3.0 | 3[34]??A:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 3[34]??/*:*:4.0:3.0 | 4400:*:4.0:3.0 | 4850:*:4.0:3.0 | SKA40:*:4.0:3.0 | SDS2:*:4.0:3.0 | SHG2:*:4.0:3.0 | S7501*:*:4.0:3.0)
+ OS_REL=''
+ test -r /etc/.relid \
+ && OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4.3${OS_REL}; exit; }
+ /bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
+ && { echo i586-ncr-sysv4.3${OS_REL}; exit; } ;;
+ 3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
+ /bin/uname -p 2>/dev/null | grep 86 >/dev/null \
+ && { echo i486-ncr-sysv4; exit; } ;;
+ m68*:LynxOS:2.*:* | m68*:LynxOS:3.0*:*)
+ echo m68k-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ mc68030:UNIX_System_V:4.*:*)
+ echo m68k-atari-sysv4
+ exit ;;
+ TSUNAMI:LynxOS:2.*:*)
+ echo sparc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ rs6000:LynxOS:2.*:*)
+ echo rs6000-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ PowerPC:LynxOS:2.*:* | PowerPC:LynxOS:3.[01]*:* | PowerPC:LynxOS:4.0*:*)
+ echo powerpc-unknown-lynxos${UNAME_RELEASE}
+ exit ;;
+ SM[BE]S:UNIX_SV:*:*)
+ echo mips-dde-sysv${UNAME_RELEASE}
+ exit ;;
+ RM*:ReliantUNIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ RM*:SINIX-*:*:*)
+ echo mips-sni-sysv4
+ exit ;;
+ *:SINIX-*:*:*)
+ if uname -p 2>/dev/null >/dev/null ; then
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ echo ${UNAME_MACHINE}-sni-sysv4
+ else
+ echo ns32k-sni-sysv
+ fi
+ exit ;;
+ PENTIUM:*:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
+ # says <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 ;;
+ 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
+ unknown) UNAME_PROCESSOR=powerpc ;;
+ esac
+ echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
+ exit ;;
+ *:procnto*:*:* | *:QNX:[0123456789]*:*)
+ UNAME_PROCESSOR=`uname -p`
+ if test "$UNAME_PROCESSOR" = "x86"; then
+ UNAME_PROCESSOR=i386
+ UNAME_MACHINE=pc
+ fi
+ echo ${UNAME_PROCESSOR}-${UNAME_MACHINE}-nto-qnx${UNAME_RELEASE}
+ exit ;;
+ *:QNX:*:4*)
+ echo i386-pc-qnx
+ exit ;;
+ NSE-?:NONSTOP_KERNEL:*:*)
+ echo nse-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ NSR-?:NONSTOP_KERNEL:*:*)
+ echo nsr-tandem-nsk${UNAME_RELEASE}
+ exit ;;
+ *:NonStop-UX:*:*)
+ echo mips-compaq-nonstopux
+ exit ;;
+ BS2000:POSIX*:*:*)
+ echo bs2000-siemens-sysv
+ exit ;;
+ DS/*:UNIX_System_V:*:*)
+ echo ${UNAME_MACHINE}-${UNAME_SYSTEM}-${UNAME_RELEASE}
+ exit ;;
+ *:Plan9:*:*)
+ # "uname -m" is not consistent, so use $cputype instead. 386
+ # is converted to i386 for consistency with other x86
+ # operating systems.
+ if test "$cputype" = "386"; then
+ UNAME_MACHINE=i386
+ else
+ UNAME_MACHINE="$cputype"
+ fi
+ echo ${UNAME_MACHINE}-unknown-plan9
+ exit ;;
+ *:TOPS-10:*:*)
+ echo pdp10-unknown-tops10
+ exit ;;
+ *:TENEX:*:*)
+ echo pdp10-unknown-tenex
+ exit ;;
+ KS10:TOPS-20:*:* | KL10:TOPS-20:*:* | TYPE4:TOPS-20:*:*)
+ echo pdp10-dec-tops20
+ exit ;;
+ XKL-1:TOPS-20:*:* | TYPE5:TOPS-20:*:*)
+ echo pdp10-xkl-tops20
+ exit ;;
+ *:TOPS-20:*:*)
+ echo pdp10-unknown-tops20
+ exit ;;
+ *:ITS:*:*)
+ echo pdp10-unknown-its
+ exit ;;
+ SEI:*:*:SEIUX)
+ echo mips-sei-seiux${UNAME_RELEASE}
+ exit ;;
+ *:DragonFly:*:*)
+ echo ${UNAME_MACHINE}-unknown-dragonfly`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
+ exit ;;
+ *:*VMS:*:*)
+ UNAME_MACHINE=`(uname -p) 2>/dev/null`
+ case "${UNAME_MACHINE}" in
+ A*) echo alpha-dec-vms ; exit ;;
+ I*) echo ia64-dec-vms ; exit ;;
+ V*) echo vax-dec-vms ; exit ;;
+ esac ;;
+ *:XENIX:*:SysV)
+ echo i386-pc-xenix
+ exit ;;
+ i*86:skyos:*:*)
+ echo ${UNAME_MACHINE}-pc-skyos`echo ${UNAME_RELEASE}` | sed -e 's/ .*$//'
+ exit ;;
+ i*86:rdos:*:*)
+ echo ${UNAME_MACHINE}-pc-rdos
+ 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://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.guess
+and
+ http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/config/config/config.sub
+
+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/parted-1.8.7/build-aux/config.rpath b/parted-1.8.7/build-aux/config.rpath
new file mode 100755
index 0000000..e082db6
--- /dev/null
+++ b/parted-1.8.7/build-aux/config.rpath
@@ -0,0 +1,660 @@
+#! /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-2006 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 AC_LIBTOOL_PROG_COMPILER_PIC.
+
+wl=
+if test "$GCC" = yes; then
+ wl='-Wl,'
+else
+ case "$host_os" in
+ aix*)
+ wl='-Wl,'
+ ;;
+ darwin*)
+ case $cc_basename in
+ xlc*)
+ wl='-Wl,'
+ ;;
+ esac
+ ;;
+ mingw* | pw32* | os2*)
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ wl='-Wl,'
+ ;;
+ irix5* | irix6* | nonstopux*)
+ wl='-Wl,'
+ ;;
+ newsos6)
+ ;;
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ wl='-Wl,'
+ ;;
+ pgcc | pgf77 | pgf90)
+ wl='-Wl,'
+ ;;
+ ccc*)
+ wl='-Wl,'
+ ;;
+ como)
+ wl='-lopt='
+ ;;
+ *)
+ case `$CC -V 2>&1 | sed 5q` in
+ *Sun\ C*)
+ wl='-Wl,'
+ ;;
+ esac
+ ;;
+ esac
+ ;;
+ osf3* | osf4* | osf5*)
+ wl='-Wl,'
+ ;;
+ sco3.2v5*)
+ ;;
+ solaris*)
+ wl='-Wl,'
+ ;;
+ sunos4*)
+ wl='-Qoption ld '
+ ;;
+ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*)
+ wl='-Wl,'
+ ;;
+ sysv4*MP*)
+ ;;
+ unicos*)
+ wl='-Wl,'
+ ;;
+ uts4*)
+ ;;
+ esac
+fi
+
+# Code taken from libtool.m4's AC_LIBTOOL_PROG_LD_SHLIBS.
+
+hardcode_libdir_flag_spec=
+hardcode_libdir_separator=
+hardcode_direct=no
+hardcode_minus_L=no
+
+case "$host_os" in
+ cygwin* | mingw* | pw32*)
+ # 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
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ fi
+ ;;
+ amigaos*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we cannot use
+ # them.
+ ld_shlibs=no
+ ;;
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ :
+ else
+ ld_shlibs=no
+ fi
+ ;;
+ cygwin* | mingw* | pw32*)
+ # 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
+ ;;
+ interix3*)
+ hardcode_direct=no
+ hardcode_libdir_flag_spec='${wl}-rpath,$libdir'
+ ;;
+ linux*)
+ 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
+ ;;
+ aix4* | aix5*)
+ 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].*|aix5*)
+ 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
+ hardcode_direct=yes
+ 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*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ hardcode_minus_L=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs=no
+ ;;
+ bsdi[45]*)
+ ;;
+ cygwin* | mingw* | pw32*)
+ # 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 test "$GCC" = yes ; then
+ :
+ else
+ case $cc_basename in
+ xlc*)
+ ;;
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+ fi
+ ;;
+ dgux*)
+ hardcode_libdir_flag_spec='-L$libdir'
+ ;;
+ freebsd1*)
+ ld_shlibs=no
+ ;;
+ freebsd2.2*)
+ hardcode_libdir_flag_spec='-R$libdir'
+ hardcode_direct=yes
+ ;;
+ freebsd2*)
+ hardcode_direct=yes
+ hardcode_minus_L=yes
+ ;;
+ freebsd* | kfreebsd*-gnu | 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=:
+ ;;
+ openbsd*)
+ 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
+ ;;
+ 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*)
+ ;;
+ 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 AC_LIBTOOL_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'
+ ;;
+ aix4* | aix5*)
+ library_names_spec='$libname$shrext'
+ ;;
+ amigaos*)
+ library_names_spec='$libname.a'
+ ;;
+ beos*)
+ library_names_spec='$libname$shrext'
+ ;;
+ bsdi[45]*)
+ library_names_spec='$libname$shrext'
+ ;;
+ cygwin* | mingw* | pw32*)
+ 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'
+ ;;
+ freebsd1*)
+ ;;
+ kfreebsd*-gnu)
+ 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'
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $host_cpu in
+ ia64*)
+ shrext=.so
+ ;;
+ hppa*64*)
+ shrext=.sl
+ ;;
+ *)
+ shrext=.sl
+ ;;
+ esac
+ library_names_spec='$libname$shrext'
+ ;;
+ interix3*)
+ 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*)
+ 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'
+ ;;
+ 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'
+ ;;
+ 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/parted-1.8.7/build-aux/config.sub b/parted-1.8.7/build-aux/config.sub
new file mode 100755
index 0000000..c060f44
--- /dev/null
+++ b/parted-1.8.7/build-aux/config.sub
@@ -0,0 +1,1626 @@
+#! /bin/sh
+# Configuration validation subroutine script.
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
+# 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation,
+# Inc.
+
+timestamp='2007-04-29'
+
+# 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 ChangeLog entry.
+#
+# Configuration subroutine to validate and canonicalize a configuration type.
+# Supply the specified configuration type as an argument.
+# If it is invalid, we print an error message on stderr and exit with code 1.
+# Otherwise, we print the canonical config type on stdout and succeed.
+
+# This file is supposed to be the same for all GNU packages
+# and recognize all the CPU types, system types and aliases
+# that are meaningful with *any* GNU software.
+# Each package is responsible for reporting which valid configurations
+# it does not support. The user should be able to distinguish
+# a failure to support a valid configuration from a meaningless
+# configuration.
+
+# The goal of this file is to map all the various variations of a given
+# machine specification into a single specification in the form:
+# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
+# or in some cases, the newer four-part form:
+# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
+# It is wrong to echo any other type of specification.
+
+me=`echo "$0" | sed -e 's,.*/,,'`
+
+usage="\
+Usage: $0 [OPTION] CPU-MFR-OPSYS
+ $0 [OPTION] ALIAS
+
+Canonicalize a configuration name.
+
+Operation modes:
+ -h, --help print this help, then exit
+ -t, --time-stamp print date of last modification, then exit
+ -v, --version print version number, then exit
+
+Report bugs and patches to <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
+Free Software Foundation, Inc.
+
+This is free software; see the source for copying conditions. There is NO
+warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+
+help="
+Try \`$me --help' for more information."
+
+# Parse command line
+while test $# -gt 0 ; do
+ case $1 in
+ --time-stamp | --time* | -t )
+ echo "$timestamp" ; exit ;;
+ --version | -v )
+ echo "$version" ; exit ;;
+ --help | --h* | -h )
+ echo "$usage"; exit ;;
+ -- ) # Stop option processing
+ shift; break ;;
+ - ) # Use stdin as input.
+ break ;;
+ -* )
+ echo "$me: invalid option $1$help"
+ exit 1 ;;
+
+ *local*)
+ # First pass through any local machine types.
+ echo $1
+ exit ;;
+
+ * )
+ break ;;
+ esac
+done
+
+case $# in
+ 0) echo "$me: missing argument$help" >&2
+ exit 1;;
+ 1) ;;
+ *) echo "$me: too many arguments$help" >&2
+ exit 1;;
+esac
+
+# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
+# Here we must recognize all the valid KERNEL-OS combinations.
+maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
+case $maybe_os in
+ nto-qnx* | linux-gnu* | linux-dietlibc | linux-newlib* | linux-uclibc* | \
+ uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | knetbsd*-gnu* | netbsd*-gnu* | \
+ storm-chaos* | os2-emx* | rtmk-nova*)
+ os=-$maybe_os
+ basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
+ ;;
+ *)
+ basic_machine=`echo $1 | sed 's/-[^-]*$//'`
+ if [ $basic_machine != $1 ]
+ then os=`echo $1 | sed 's/.*-/-/'`
+ else os=; fi
+ ;;
+esac
+
+### Let's recognize common machines as not being operating systems so
+### that things like config.sub decstation-3100 work. We also
+### recognize some manufacturers as not being operating systems, so we
+### can provide default operating systems below.
+case $os in
+ -sun*os*)
+ # Prevent following clause from handling this invalid input.
+ ;;
+ -dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
+ -att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
+ -unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
+ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
+ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
+ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
+ -apple | -axis | -knuth | -cray)
+ os=
+ basic_machine=$1
+ ;;
+ -sim | -cisco | -oki | -wec | -winbond)
+ os=
+ basic_machine=$1
+ ;;
+ -scout)
+ ;;
+ -wrs)
+ os=-vxworks
+ basic_machine=$1
+ ;;
+ -chorusos*)
+ os=-chorusos
+ basic_machine=$1
+ ;;
+ -chorusrdb)
+ os=-chorusrdb
+ basic_machine=$1
+ ;;
+ -hiux*)
+ os=-hiuxwe2
+ ;;
+ -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 \
+ | m32c | m32r | m32rle | m68000 | m68k | m88k \
+ | maxq | mb | microblaze | mcore | mep \
+ | mips | mipsbe | mipseb | mipsel | mipsle \
+ | mips16 \
+ | mips64 | mips64el \
+ | mips64vr | mips64vrel \
+ | mips64orion | mips64orionel \
+ | mips64vr4100 | mips64vr4100el \
+ | mips64vr4300 | mips64vr4300el \
+ | mips64vr5000 | mips64vr5000el \
+ | mips64vr5900 | mips64vr5900el \
+ | mipsisa32 | mipsisa32el \
+ | mipsisa32r2 | mipsisa32r2el \
+ | mipsisa64 | mipsisa64el \
+ | mipsisa64r2 | mipsisa64r2el \
+ | mipsisa64sb1 | mipsisa64sb1el \
+ | mipsisa64sr71k | mipsisa64sr71kel \
+ | mipstx39 | mipstx39el \
+ | mn10200 | mn10300 \
+ | mt \
+ | msp430 \
+ | nios | nios2 \
+ | ns16k | ns32k \
+ | or32 \
+ | pdp10 | pdp11 | pj | pjl \
+ | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
+ | pyramid \
+ | score \
+ | sh | sh[1234] | sh[24]a | 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 | strongarm \
+ | tahoe | thumb | tic4x | tic80 | tron \
+ | v850 | v850e \
+ | we32k \
+ | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \
+ | z8k)
+ basic_machine=$basic_machine-unknown
+ ;;
+ m6811 | m68hc11 | m6812 | m68hc12)
+ # Motorola 68HC11/12.
+ basic_machine=$basic_machine-unknown
+ os=-none
+ ;;
+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
+ ;;
+ ms1)
+ basic_machine=mt-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-* | c54x-* | c55x-* | c6x-* \
+ | 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-* \
+ | m32c-* | m32r-* | m32rle-* \
+ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
+ | m88110-* | m88k-* | maxq-* | mcore-* \
+ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
+ | mips16-* \
+ | mips64-* | mips64el-* \
+ | mips64vr-* | mips64vrel-* \
+ | mips64orion-* | mips64orionel-* \
+ | mips64vr4100-* | mips64vr4100el-* \
+ | mips64vr4300-* | mips64vr4300el-* \
+ | mips64vr5000-* | mips64vr5000el-* \
+ | mips64vr5900-* | mips64vr5900el-* \
+ | mipsisa32-* | mipsisa32el-* \
+ | mipsisa32r2-* | mipsisa32r2el-* \
+ | mipsisa64-* | mipsisa64el-* \
+ | mipsisa64r2-* | mipsisa64r2el-* \
+ | mipsisa64sb1-* | mipsisa64sb1el-* \
+ | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+ | mipstx39-* | mipstx39el-* \
+ | mmix-* \
+ | mt-* \
+ | msp430-* \
+ | nios-* | nios2-* \
+ | none-* | np1-* | ns16k-* | ns32k-* \
+ | orion-* \
+ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
+ | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
+ | pyramid-* \
+ | romp-* | rs6000-* \
+ | sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \
+ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
+ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \
+ | sparclite-* \
+ | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \
+ | tahoe-* | thumb-* \
+ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \
+ | tron-* \
+ | v850-* | v850e-* | vax-* \
+ | we32k-* \
+ | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \
+ | xstormy16-* | xtensa-* \
+ | ymp-* \
+ | z8k-*)
+ ;;
+ # Recognize the various machine names and aliases which stand
+ # for a CPU type and a company and sometimes even an OS.
+ 386bsd)
+ basic_machine=i386-unknown
+ os=-bsd
+ ;;
+ 3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
+ basic_machine=m68000-att
+ ;;
+ 3b*)
+ basic_machine=we32k-att
+ ;;
+ a29khif)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ abacus)
+ basic_machine=abacus-unknown
+ ;;
+ adobe68k)
+ basic_machine=m68010-adobe
+ os=-scout
+ ;;
+ alliant | fx80)
+ basic_machine=fx80-alliant
+ ;;
+ altos | altos3068)
+ basic_machine=m68k-altos
+ ;;
+ am29k)
+ basic_machine=a29k-none
+ os=-bsd
+ ;;
+ amd64)
+ basic_machine=x86_64-pc
+ ;;
+ amd64-*)
+ basic_machine=x86_64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ amdahl)
+ basic_machine=580-amdahl
+ os=-sysv
+ ;;
+ amiga | amiga-*)
+ basic_machine=m68k-unknown
+ ;;
+ amigaos | amigados)
+ basic_machine=m68k-unknown
+ os=-amigaos
+ ;;
+ amigaunix | amix)
+ basic_machine=m68k-unknown
+ os=-sysv4
+ ;;
+ apollo68)
+ basic_machine=m68k-apollo
+ os=-sysv
+ ;;
+ apollo68bsd)
+ basic_machine=m68k-apollo
+ os=-bsd
+ ;;
+ aux)
+ basic_machine=m68k-apple
+ os=-aux
+ ;;
+ balance)
+ basic_machine=ns32k-sequent
+ os=-dynix
+ ;;
+ c90)
+ basic_machine=c90-cray
+ os=-unicos
+ ;;
+ convex-c1)
+ basic_machine=c1-convex
+ os=-bsd
+ ;;
+ convex-c2)
+ basic_machine=c2-convex
+ os=-bsd
+ ;;
+ convex-c32)
+ basic_machine=c32-convex
+ os=-bsd
+ ;;
+ convex-c34)
+ basic_machine=c34-convex
+ os=-bsd
+ ;;
+ convex-c38)
+ basic_machine=c38-convex
+ os=-bsd
+ ;;
+ cray | j90)
+ basic_machine=j90-cray
+ os=-unicos
+ ;;
+ craynv)
+ basic_machine=craynv-cray
+ os=-unicosmp
+ ;;
+ cr16c)
+ basic_machine=cr16c-unknown
+ os=-elf
+ ;;
+ crds | unos)
+ basic_machine=m68k-crds
+ ;;
+ crisv32 | crisv32-* | etraxfs*)
+ basic_machine=crisv32-axis
+ ;;
+ cris | cris-* | etrax*)
+ basic_machine=cris-axis
+ ;;
+ crx)
+ basic_machine=crx-unknown
+ os=-elf
+ ;;
+ da30 | da30-*)
+ basic_machine=m68k-da30
+ ;;
+ decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
+ basic_machine=mips-dec
+ ;;
+ decsystem10* | dec10*)
+ basic_machine=pdp10-dec
+ os=-tops10
+ ;;
+ decsystem20* | dec20*)
+ basic_machine=pdp10-dec
+ os=-tops20
+ ;;
+ delta | 3300 | motorola-3300 | motorola-delta \
+ | 3300-motorola | delta-motorola)
+ basic_machine=m68k-motorola
+ ;;
+ delta88)
+ basic_machine=m88k-motorola
+ os=-sysv3
+ ;;
+ djgpp)
+ basic_machine=i586-pc
+ os=-msdosdjgpp
+ ;;
+ dpx20 | dpx20-*)
+ basic_machine=rs6000-bull
+ os=-bosx
+ ;;
+ dpx2* | dpx2*-bull)
+ basic_machine=m68k-bull
+ os=-sysv3
+ ;;
+ ebmon29k)
+ basic_machine=a29k-amd
+ os=-ebmon
+ ;;
+ elxsi)
+ basic_machine=elxsi-elxsi
+ os=-bsd
+ ;;
+ encore | umax | mmax)
+ basic_machine=ns32k-encore
+ ;;
+ es1800 | OSE68k | ose68k | ose | OSE)
+ basic_machine=m68k-ericsson
+ os=-ose
+ ;;
+ fx2800)
+ basic_machine=i860-alliant
+ ;;
+ genix)
+ basic_machine=ns32k-ns
+ ;;
+ gmicro)
+ basic_machine=tron-gmicro
+ os=-sysv
+ ;;
+ go32)
+ basic_machine=i386-pc
+ os=-go32
+ ;;
+ h3050r* | hiux*)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ h8300hms)
+ basic_machine=h8300-hitachi
+ os=-hms
+ ;;
+ h8300xray)
+ basic_machine=h8300-hitachi
+ os=-xray
+ ;;
+ h8500hms)
+ basic_machine=h8500-hitachi
+ os=-hms
+ ;;
+ harris)
+ basic_machine=m88k-harris
+ os=-sysv3
+ ;;
+ hp300-*)
+ basic_machine=m68k-hp
+ ;;
+ hp300bsd)
+ basic_machine=m68k-hp
+ os=-bsd
+ ;;
+ hp300hpux)
+ basic_machine=m68k-hp
+ os=-hpux
+ ;;
+ hp3k9[0-9][0-9] | hp9[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k2[0-9][0-9] | hp9k31[0-9])
+ basic_machine=m68000-hp
+ ;;
+ hp9k3[2-9][0-9])
+ basic_machine=m68k-hp
+ ;;
+ hp9k6[0-9][0-9] | hp6[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hp9k7[0-79][0-9] | hp7[0-79][0-9])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k78[0-9] | hp78[0-9])
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[67]1 | hp8[67]1 | hp9k80[24] | hp80[24] | hp9k8[78]9 | hp8[78]9 | hp9k893 | hp893)
+ # FIXME: really hppa2.0-hp
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][13679] | hp8[0-9][13679])
+ basic_machine=hppa1.1-hp
+ ;;
+ hp9k8[0-9][0-9] | hp8[0-9][0-9])
+ basic_machine=hppa1.0-hp
+ ;;
+ hppa-next)
+ os=-nextstep3
+ ;;
+ hppaosf)
+ basic_machine=hppa1.1-hp
+ os=-osf
+ ;;
+ hppro)
+ basic_machine=hppa1.1-hp
+ os=-proelf
+ ;;
+ i370-ibm* | ibm*)
+ basic_machine=i370-ibm
+ ;;
+# I'm not sure what "Sysv32" means. Should this be sysv3.2?
+ i*86v32)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv32
+ ;;
+ i*86v4*)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv4
+ ;;
+ i*86v)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-sysv
+ ;;
+ i*86sol2)
+ basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
+ os=-solaris2
+ ;;
+ i386mach)
+ basic_machine=i386-mach
+ os=-mach
+ ;;
+ i386-vsta | vsta)
+ basic_machine=i386-unknown
+ os=-vsta
+ ;;
+ iris | iris4d)
+ basic_machine=mips-sgi
+ case $os in
+ -irix*)
+ ;;
+ *)
+ os=-irix4
+ ;;
+ esac
+ ;;
+ isi68 | isi)
+ basic_machine=m68k-isi
+ os=-sysv
+ ;;
+ m88k-omron*)
+ basic_machine=m88k-omron
+ ;;
+ magnum | m3230)
+ basic_machine=mips-mips
+ os=-sysv
+ ;;
+ merlin)
+ basic_machine=ns32k-utek
+ os=-sysv
+ ;;
+ mingw32)
+ basic_machine=i386-pc
+ os=-mingw32
+ ;;
+ 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
+ ;;
+ nsr-tandem)
+ basic_machine=nsr-tandem
+ ;;
+ op50n-* | op60c-*)
+ basic_machine=hppa1.1-oki
+ os=-proelf
+ ;;
+ openrisc | openrisc-*)
+ basic_machine=or32-unknown
+ ;;
+ os400)
+ basic_machine=powerpc-ibm
+ os=-os400
+ ;;
+ OSE68000 | ose68000)
+ basic_machine=m68000-ericsson
+ os=-ose
+ ;;
+ os68k)
+ basic_machine=m68k-none
+ os=-os68k
+ ;;
+ pa-hitachi)
+ basic_machine=hppa1.1-hitachi
+ os=-hiuxwe2
+ ;;
+ paragon)
+ basic_machine=i860-intel
+ os=-osf
+ ;;
+ pbd)
+ basic_machine=sparc-tti
+ ;;
+ pbb)
+ basic_machine=m68k-tti
+ ;;
+ pc532 | pc532-*)
+ basic_machine=ns32k-pc532
+ ;;
+ 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) basic_machine=powerpc-unknown
+ ;;
+ ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppcle | powerpclittle | ppc-le | powerpc-little)
+ basic_machine=powerpcle-unknown
+ ;;
+ ppcle-* | powerpclittle-*)
+ basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64) basic_machine=powerpc64-unknown
+ ;;
+ ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ppc64le | powerpc64little | ppc64-le | powerpc64-little)
+ basic_machine=powerpc64le-unknown
+ ;;
+ ppc64le-* | powerpc64little-*)
+ basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'`
+ ;;
+ ps2)
+ basic_machine=i386-ibm
+ ;;
+ pw32)
+ basic_machine=i586-unknown
+ os=-pw32
+ ;;
+ 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
+ ;;
+ sun2)
+ basic_machine=m68000-sun
+ ;;
+ sun2os3)
+ basic_machine=m68000-sun
+ os=-sunos3
+ ;;
+ sun2os4)
+ basic_machine=m68000-sun
+ os=-sunos4
+ ;;
+ sun3os3)
+ basic_machine=m68k-sun
+ os=-sunos3
+ ;;
+ sun3os4)
+ basic_machine=m68k-sun
+ os=-sunos4
+ ;;
+ sun4os3)
+ basic_machine=sparc-sun
+ os=-sunos3
+ ;;
+ sun4os4)
+ basic_machine=sparc-sun
+ os=-sunos4
+ ;;
+ sun4sol2)
+ basic_machine=sparc-sun
+ os=-solaris2
+ ;;
+ sun3 | sun3-*)
+ basic_machine=m68k-sun
+ ;;
+ sun4)
+ basic_machine=sparc-sun
+ ;;
+ sun386 | sun386i | roadrunner)
+ basic_machine=i386-sun
+ ;;
+ sv1)
+ basic_machine=sv1-cray
+ os=-unicos
+ ;;
+ symmetry)
+ basic_machine=i386-sequent
+ os=-dynix
+ ;;
+ t3e)
+ basic_machine=alphaev5-cray
+ os=-unicos
+ ;;
+ t90)
+ basic_machine=t90-cray
+ os=-unicos
+ ;;
+ tic54x | c54x*)
+ basic_machine=tic54x-unknown
+ os=-coff
+ ;;
+ tic55x | c55x*)
+ basic_machine=tic55x-unknown
+ os=-coff
+ ;;
+ tic6x | c6x*)
+ basic_machine=tic6x-unknown
+ os=-coff
+ ;;
+ tx39)
+ basic_machine=mipstx39-unknown
+ ;;
+ tx39el)
+ basic_machine=mipstx39el-unknown
+ ;;
+ toad1)
+ basic_machine=pdp10-xkl
+ os=-tops20
+ ;;
+ tower | tower-32)
+ basic_machine=m68k-ncr
+ ;;
+ tpf)
+ basic_machine=s390x-ibm
+ os=-tpf
+ ;;
+ udi29k)
+ basic_machine=a29k-amd
+ os=-udi
+ ;;
+ ultra3)
+ basic_machine=a29k-nyu
+ os=-sym1
+ ;;
+ v810 | necv810)
+ basic_machine=v810-nec
+ os=-none
+ ;;
+ vaxv)
+ basic_machine=vax-dec
+ os=-sysv
+ ;;
+ vms)
+ basic_machine=vax-dec
+ os=-vms
+ ;;
+ vpp*|vx|vx-*)
+ basic_machine=f301-fujitsu
+ ;;
+ vxworks960)
+ basic_machine=i960-wrs
+ os=-vxworks
+ ;;
+ vxworks68)
+ basic_machine=m68k-wrs
+ os=-vxworks
+ ;;
+ vxworks29k)
+ basic_machine=a29k-wrs
+ os=-vxworks
+ ;;
+ w65*)
+ basic_machine=w65-wdc
+ os=-none
+ ;;
+ w89k-*)
+ basic_machine=hppa1.1-winbond
+ os=-proelf
+ ;;
+ xbox)
+ basic_machine=i686-pc
+ os=-mingw32
+ ;;
+ xps | xps100)
+ basic_machine=xps100-honeywell
+ ;;
+ ymp)
+ basic_machine=ymp-cray
+ os=-unicos
+ ;;
+ z8k-*-coff)
+ basic_machine=z8k-unknown
+ os=-sim
+ ;;
+ none)
+ basic_machine=none-none
+ os=-none
+ ;;
+
+# Here we handle the default manufacturer of certain CPU types. It is in
+# some cases the only manufacturer, in others, it is the most popular.
+ w89k)
+ basic_machine=hppa1.1-winbond
+ ;;
+ op50n)
+ basic_machine=hppa1.1-oki
+ ;;
+ op60c)
+ basic_machine=hppa1.1-oki
+ ;;
+ romp)
+ basic_machine=romp-ibm
+ ;;
+ mmix)
+ basic_machine=mmix-knuth
+ ;;
+ rs6000)
+ basic_machine=rs6000-ibm
+ ;;
+ vax)
+ basic_machine=vax-dec
+ ;;
+ pdp10)
+ # there are many clones, so DEC is not a safe bet
+ basic_machine=pdp10-unknown
+ ;;
+ pdp11)
+ basic_machine=pdp11-dec
+ ;;
+ we32k)
+ basic_machine=we32k-att
+ ;;
+ sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
+ basic_machine=sh-unknown
+ ;;
+ sparc | sparcv8 | sparcv9 | sparcv9b | 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.
+ -solaris1 | -solaris1.*)
+ os=`echo $os | sed -e 's|solaris1|sunos4|'`
+ ;;
+ -solaris)
+ os=-solaris2
+ ;;
+ -svr4*)
+ os=-sysv4
+ ;;
+ -unixware*)
+ os=-sysv4.2uw
+ ;;
+ -gnu/linux*)
+ os=`echo $os | sed -e 's|gnu/linux|linux-gnu|'`
+ ;;
+ # First accept the basic system types.
+ # The portable systems comes first.
+ # Each alternative MUST END IN A *, to match a version number.
+ # -sysv* is not here because it comes later, after sysvr4.
+ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
+ | -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
+ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
+ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
+ | -aos* \
+ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
+ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
+ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \
+ | -openbsd* | -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* \
+ | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
+ | -mingw32* | -linux-gnu* | -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*)
+ # Remember, each alternative MUST END IN *, to match a version number.
+ ;;
+ -qnx*)
+ case $basic_machine in
+ x86-* | i*86-*)
+ ;;
+ *)
+ os=-nto$os
+ ;;
+ esac
+ ;;
+ -nto-qnx*)
+ ;;
+ -nto*)
+ os=`echo $os | sed -e 's|nto|nto-qnx|'`
+ ;;
+ -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
+ | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
+ | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
+ ;;
+ -mac*)
+ os=`echo $os | sed -e 's|mac|macos|'`
+ ;;
+ -linux-dietlibc)
+ os=-linux-dietlibc
+ ;;
+ -linux*)
+ os=`echo $os | sed -e 's|linux|linux-gnu|'`
+ ;;
+ -sunos5*)
+ os=`echo $os | sed -e 's|sunos5|solaris2|'`
+ ;;
+ -sunos6*)
+ os=`echo $os | sed -e 's|sunos6|solaris3|'`
+ ;;
+ -opened*)
+ os=-openedition
+ ;;
+ -os400*)
+ os=-os400
+ ;;
+ -wince*)
+ os=-wince
+ ;;
+ -osfrose*)
+ os=-osfrose
+ ;;
+ -osf*)
+ os=-osf
+ ;;
+ -utek*)
+ os=-bsd
+ ;;
+ -dynix*)
+ os=-bsd
+ ;;
+ -acis*)
+ os=-aos
+ ;;
+ -atheos*)
+ os=-atheos
+ ;;
+ -syllable*)
+ os=-syllable
+ ;;
+ -386bsd)
+ os=-bsd
+ ;;
+ -ctix* | -uts*)
+ os=-sysv
+ ;;
+ -nova*)
+ os=-rtmk-nova
+ ;;
+ -ns2 )
+ os=-nextstep2
+ ;;
+ -nsk*)
+ os=-nsk
+ ;;
+ # Preserve the version number of sinix5.
+ -sinix5.*)
+ os=`echo $os | sed -e 's|sinix|sysv|'`
+ ;;
+ -sinix*)
+ os=-sysv4
+ ;;
+ -tpf*)
+ os=-tpf
+ ;;
+ -triton*)
+ os=-sysv3
+ ;;
+ -oss*)
+ os=-sysv3
+ ;;
+ -svr4)
+ os=-sysv4
+ ;;
+ -svr3)
+ os=-sysv3
+ ;;
+ -sysvr4)
+ os=-sysv4
+ ;;
+ # This must come after -sysvr4.
+ -sysv*)
+ ;;
+ -ose*)
+ os=-ose
+ ;;
+ -es1800*)
+ os=-ose
+ ;;
+ -xenix)
+ os=-xenix
+ ;;
+ -*mint | -mint[0-9]* | -*MiNT | -MiNT[0-9]*)
+ os=-mint
+ ;;
+ -aros*)
+ os=-aros
+ ;;
+ -kaos*)
+ os=-kaos
+ ;;
+ -zvmoe)
+ os=-zvmoe
+ ;;
+ -none)
+ ;;
+ *)
+ # Get rid of the `-' at the beginning of $os.
+ os=`echo $os | sed 's/[^-]*-//'`
+ echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
+ exit 1
+ ;;
+esac
+else
+
+# Here we handle the default operating systems that come with various machines.
+# The value should be what the vendor currently ships out the door with their
+# machine or put another way, the most popular os provided with the machine.
+
+# Note that if you're going to try to match "-MANUFACTURER" here (say,
+# "-sun"), then you have to tell the case statement up towards the top
+# that MANUFACTURER isn't an operating system. Otherwise, code above
+# will signal an error saying that MANUFACTURER isn't an operating
+# system, and we'll never get to this point.
+
+case $basic_machine in
+ score-*)
+ os=-elf
+ ;;
+ spu-*)
+ os=-elf
+ ;;
+ *-acorn)
+ os=-riscix1.2
+ ;;
+ arm*-rebel)
+ os=-linux
+ ;;
+ arm*-semi)
+ os=-aout
+ ;;
+ c4x-* | tic4x-*)
+ os=-coff
+ ;;
+ # This must come before the *-dec entry.
+ pdp10-*)
+ os=-tops20
+ ;;
+ pdp11-*)
+ os=-none
+ ;;
+ *-dec | vax-*)
+ os=-ultrix4.2
+ ;;
+ m68*-apollo)
+ os=-domain
+ ;;
+ i386-sun)
+ os=-sunos4.0.2
+ ;;
+ m68000-sun)
+ os=-sunos3
+ # This also exists in the configure program, but was not the
+ # default.
+ # os=-sunos4
+ ;;
+ m68*-cisco)
+ os=-aout
+ ;;
+ 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
+ ;;
+ -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/parted-1.8.7/build-aux/depcomp b/parted-1.8.7/build-aux/depcomp
new file mode 100755
index 0000000..e5f9736
--- /dev/null
+++ b/parted-1.8.7/build-aux/depcomp
@@ -0,0 +1,589 @@
+#! /bin/sh
+# depcomp - compile a program generating dependencies as side-effects
+
+scriptversion=2007-03-29.01
+
+# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007 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, 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 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
+
+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.
+## 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"
+ ;;
+
+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"
+ ;;
+
+#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 $1 != '--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 $1 != '--mode=compile'; do
+ shift
+ done
+ shift
+ fi
+ # X makedepend
+ shift
+ cleared=no
+ for arg in "$@"; do
+ case $cleared in
+ no)
+ set ""; shift
+ cleared=yes ;;
+ esac
+ 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.
+ -*|$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"
+ cat < "$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 $1 != '--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, regardless of -o,
+ # because we must use -o when running libtool.
+ "$@" || exit $?
+ IFS=" "
+ for arg
+ do
+ case "$arg" in
+ "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
+ set fnord "$@"
+ shift
+ shift
+ ;;
+ *)
+ set fnord "$@" "$arg"
+ shift
+ shift
+ ;;
+ esac
+ done
+ "$@" -E |
+ sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
+ rm -f "$depfile"
+ echo "$object : \\" > "$depfile"
+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
+ echo " " >> "$depfile"
+ . "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
+ rm -f "$tmpdepfile"
+ ;;
+
+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-end: "$"
+# End:
diff --git a/parted-1.8.7/build-aux/install-sh b/parted-1.8.7/build-aux/install-sh
new file mode 100755
index 0000000..a5897de
--- /dev/null
+++ b/parted-1.8.7/build-aux/install-sh
@@ -0,0 +1,519 @@
+#!/bin/sh
+# install - install a program, script, or datafile
+
+scriptversion=2006-12-25.00
+
+# 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
+ 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
+ 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
+ trap '(exit $?); exit' 1 2 13 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 starting with `-'.
+ 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
+ # Protect names starting with `-'.
+ case $dst in
+ -*) dst=./$dst;;
+ esac
+
+ # 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 -z "$d" && 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-end: "$"
+# End:
diff --git a/parted-1.8.7/build-aux/ltmain.sh b/parted-1.8.7/build-aux/ltmain.sh
new file mode 100644
index 0000000..d70dc75
--- /dev/null
+++ b/parted-1.8.7/build-aux/ltmain.sh
@@ -0,0 +1,6909 @@
+# ltmain.sh - Provide generalized library-building support services.
+# NOTE: Changing this file will not affect anything until you rerun configure.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
+# Free Software Foundation, Inc.
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 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.
+
+basename="s,^.*/,,g"
+
+# Work around backward compatibility issue on IRIX 6.5. On IRIX 6.4+, sh
+# is ksh but when the shell is invoked as "sh" and the current value of
+# the _XPG environment variable is not equal to 1 (one), the special
+# positional parameter $0, within a function call, is the name of the
+# function.
+progpath="$0"
+
+# The name of this program:
+progname=`echo "$progpath" | $SED $basename`
+modename="$progname"
+
+# Global variables:
+EXIT_SUCCESS=0
+EXIT_FAILURE=1
+
+PROGRAM=ltmain.sh
+PACKAGE=libtool
+VERSION=1.5.22
+TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
+
+# Be Bourne compatible (taken from Autoconf:_AS_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
+
+# Check that we have a working $echo.
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t'; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell, and then maybe $echo will work.
+ exec $SHELL "$progpath" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+$*
+EOF
+ exit $EXIT_SUCCESS
+fi
+
+default_mode=
+help="Try \`$progname --help' for more information."
+magic="%%%MAGIC variable%%%"
+mkdir="mkdir"
+mv="mv -f"
+rm="rm -f"
+
+# 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'
+# 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
+ SP2NL='tr \040 \012'
+ NL2SP='tr \015\012 \040\040'
+ ;;
+ *) # EBCDIC based system
+ SP2NL='tr \100 \n'
+ NL2SP='tr \r\n \100\100'
+ ;;
+esac
+
+# NLS nuisances.
+# Only set LANG and LC_ALL to C if already set.
+# These must not be set unconditionally because not all systems understand
+# e.g. LANG=C (notably SCO).
+# We save the old values to restore during execute mode.
+for lt_var in LANG 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
+ fi"
+done
+
+# Make sure IFS has a sensible default
+lt_nl='
+'
+IFS=" $lt_nl"
+
+if test "$build_libtool_libs" != yes && test "$build_old_libs" != yes; then
+ $echo "$modename: not configured to build any kind of library" 1>&2
+ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+ exit $EXIT_FAILURE
+fi
+
+# Global variables.
+mode=$default_mode
+nonopt=
+prev=
+prevopt=
+run=
+show="$echo"
+show_help=
+execute_dlfiles=
+duplicate_deps=no
+preserve_args=
+lo2o="s/\\.lo\$/.${objext}/"
+o2lo="s/\\.${objext}\$/.lo/"
+extracted_archives=
+extracted_serial=0
+
+#####################################
+# Shell function definitions:
+# This seems to be the best place for them
+
+# 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 "$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" || {
+ $echo "cannot create temporary directory \`$my_tmpdir'" 1>&2
+ exit $EXIT_FAILURE
+ }
+ fi
+
+ $echo "X$my_tmpdir" | $Xsed
+}
+
+
+# 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.
+func_win32_libid ()
+{
+ 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
+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
+ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+ win32_nmres=`eval $NM -f posix -A $1 | \
+ $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_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 ()
+{
+ if test -n "$available_tags" && test -z "$tagname"; then
+ CC_quoted=
+ for arg in $CC; do
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ CC_quoted="$CC_quoted $arg"
+ done
+ 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 "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*) ;;
+ # 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.
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ CC_quoted="$CC_quoted $arg"
+ done
+ case "$@ " in
+ " $CC "* | "$CC "* | " `$echo $CC` "* | "`$echo $CC` "* | " $CC_quoted"* | "$CC_quoted "* | " `$echo $CC_quoted` "* | "`$echo $CC_quoted` "*)
+ # 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
+ $echo "$modename: unable to infer tagged configuration"
+ $echo "$modename: specify a tag with \`--tag'" 1>&2
+ exit $EXIT_FAILURE
+# else
+# $echo "$modename: using $tagname tagged configuration"
+ fi
+ ;;
+ esac
+ fi
+}
+
+
+# func_extract_an_archive dir oldlib
+func_extract_an_archive ()
+{
+ f_ex_an_ar_dir="$1"; shift
+ f_ex_an_ar_oldlib="$1"
+
+ $show "(cd $f_ex_an_ar_dir && $AR x $f_ex_an_ar_oldlib)"
+ $run eval "(cd \$f_ex_an_ar_dir && $AR x \$f_ex_an_ar_oldlib)" || exit $?
+ if ($AR t "$f_ex_an_ar_oldlib" | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ $echo "$modename: ERROR: object name conflicts: $f_ex_an_ar_dir/$f_ex_an_ar_oldlib" 1>&2
+ exit $EXIT_FAILURE
+ fi
+}
+
+# func_extract_archives gentop oldlib ...
+func_extract_archives ()
+{
+ my_gentop="$1"; shift
+ my_oldlibs=${1+"$@"}
+ my_oldobjs=""
+ my_xlib=""
+ my_xabs=""
+ my_xdir=""
+ my_status=""
+
+ $show "${rm}r $my_gentop"
+ $run ${rm}r "$my_gentop"
+ $show "$mkdir $my_gentop"
+ $run $mkdir "$my_gentop"
+ my_status=$?
+ if test "$my_status" -ne 0 && test ! -d "$my_gentop"; then
+ exit $my_status
+ fi
+
+ 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
+ my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
+ my_xlib_u=$my_xlib
+ while :; do
+ case " $extracted_archives " in
+ *" $my_xlib_u "*)
+ extracted_serial=`expr $extracted_serial + 1`
+ 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"
+
+ $show "${rm}r $my_xdir"
+ $run ${rm}r "$my_xdir"
+ $show "$mkdir $my_xdir"
+ $run $mkdir "$my_xdir"
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "$my_xdir"; then
+ exit $exit_status
+ fi
+ case $host in
+ *-darwin*)
+ $show "Extracting $my_xabs"
+ # Do not bother doing anything if just a dry run
+ if test -z "$run"; then
+ darwin_orig_dir=`pwd`
+ cd $my_xdir || exit $?
+ darwin_archive=$my_xabs
+ darwin_curdir=`pwd`
+ darwin_base_archive=`$echo "X$darwin_archive" | $Xsed -e 's%^.*/%%'`
+ darwin_arches=`lipo -info "$darwin_archive" 2>/dev/null | $EGREP Architectures 2>/dev/null`
+ if test -n "$darwin_arches"; then
+ darwin_arches=`echo "$darwin_arches" | $SED -e 's/.*are://'`
+ darwin_arch=
+ $show "$darwin_base_archive has multiple architectures $darwin_arches"
+ for darwin_arch in $darwin_arches ; do
+ 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 have a bunch of thin objects, gotta fatten them up :)
+ darwin_filelist=`find unfat-$$ -type f -name \*.o -print -o -name \*.lo -print| xargs basename | sort -u | $NL2SP`
+ darwin_file=
+ darwin_files=
+ for darwin_file in $darwin_filelist; do
+ darwin_files=`find unfat-$$ -name $darwin_file -print | $NL2SP`
+ lipo -create -output "$darwin_file" $darwin_files
+ done # $darwin_filelist
+ ${rm}r unfat-$$
+ cd "$darwin_orig_dir"
+ else
+ cd "$darwin_orig_dir"
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ fi # $darwin_arches
+ fi # $run
+ ;;
+ *)
+ func_extract_an_archive "$my_xdir" "$my_xabs"
+ ;;
+ esac
+ my_oldobjs="$my_oldobjs "`find $my_xdir -name \*.$objext -print -o -name \*.lo -print | $NL2SP`
+ done
+ func_extract_archives_result="$my_oldobjs"
+}
+# End of Shell function definitions
+#####################################
+
+# Darwin sucks
+eval std_shrext=\"$shrext_cmds\"
+
+disable_libs=no
+
+# Parse our command line options once, thoroughly.
+while test "$#" -gt 0
+do
+ arg="$1"
+ shift
+
+ case $arg in
+ -*=*) optarg=`$echo "X$arg" | $Xsed -e 's/[-_a-zA-Z0-9]*=//'` ;;
+ *) optarg= ;;
+ esac
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ execute_dlfiles)
+ execute_dlfiles="$execute_dlfiles $arg"
+ ;;
+ tag)
+ tagname="$arg"
+ preserve_args="${preserve_args}=$arg"
+
+ # Check whether tagname contains only valid characters
+ case $tagname in
+ *[!-_A-Za-z0-9,/]*)
+ $echo "$progname: invalid tag name: $tagname" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ case $tagname in
+ CC)
+ # Don't test for the "default" C tag, as we know, it's there, but
+ # not specially marked.
+ ;;
+ *)
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "$progpath" > /dev/null; then
+ taglist="$taglist $tagname"
+ # Evaluate the configuration.
+ eval "`${SED} -n -e '/^# ### BEGIN LIBTOOL TAG CONFIG: '$tagname'$/,/^# ### END LIBTOOL TAG CONFIG: '$tagname'$/p' < $progpath`"
+ else
+ $echo "$progname: ignoring unknown tag $tagname" 1>&2
+ fi
+ ;;
+ esac
+ ;;
+ *)
+ eval "$prev=\$arg"
+ ;;
+ esac
+
+ prev=
+ prevopt=
+ continue
+ fi
+
+ # Have we seen a non-optional argument yet?
+ case $arg in
+ --help)
+ show_help=yes
+ ;;
+
+ --version)
+ $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+ $echo
+ $echo "Copyright (C) 2005 Free Software Foundation, Inc."
+ $echo "This is free software; see the source for copying conditions. There is NO"
+ $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+ exit $?
+ ;;
+
+ --config)
+ ${SED} -e '1,/^# ### BEGIN LIBTOOL CONFIG/d' -e '/^# ### END LIBTOOL CONFIG/,$d' $progpath
+ # Now print the configurations for the tags.
+ for tagname in $taglist; do
+ ${SED} -n -e "/^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$/,/^# ### END LIBTOOL TAG CONFIG: $tagname$/p" < "$progpath"
+ done
+ exit $?
+ ;;
+
+ --debug)
+ $echo "$progname: enabling shell trace mode"
+ set -x
+ preserve_args="$preserve_args $arg"
+ ;;
+
+ --dry-run | -n)
+ run=:
+ ;;
+
+ --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 $?
+ ;;
+
+ --finish) mode="finish" ;;
+
+ --mode) prevopt="--mode" prev=mode ;;
+ --mode=*) mode="$optarg" ;;
+
+ --preserve-dup-deps) duplicate_deps="yes" ;;
+
+ --quiet | --silent)
+ show=:
+ preserve_args="$preserve_args $arg"
+ ;;
+
+ --tag)
+ prevopt="--tag"
+ prev=tag
+ preserve_args="$preserve_args --tag"
+ ;;
+ --tag=*)
+ set tag "$optarg" ${1+"$@"}
+ shift
+ prev=tag
+ preserve_args="$preserve_args --tag"
+ ;;
+
+ -dlopen)
+ prevopt="-dlopen"
+ prev=execute_dlfiles
+ ;;
+
+ -*)
+ $echo "$modename: unrecognized option \`$arg'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+
+ *)
+ nonopt="$arg"
+ break
+ ;;
+ esac
+done
+
+if test -n "$prevopt"; then
+ $echo "$modename: option \`$prevopt' requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+fi
+
+case $disable_libs in
+no)
+ ;;
+shared)
+ build_libtool_libs=no
+ build_old_libs=yes
+ ;;
+static)
+ build_old_libs=`case $build_libtool_libs in yes) echo no;; *) echo yes;; esac`
+ ;;
+esac
+
+# 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=
+
+if test -z "$show_help"; then
+
+ # Infer the operation mode.
+ if test -z "$mode"; then
+ $echo "*** Warning: inferring the mode of operation is deprecated." 1>&2
+ $echo "*** Future versions of Libtool will require --mode=MODE be specified." 1>&2
+ case $nonopt in
+ *cc | cc* | *++ | gcc* | *-gcc* | g++* | xlc*)
+ mode=link
+ for arg
+ do
+ case $arg in
+ -c)
+ mode=compile
+ break
+ ;;
+ esac
+ done
+ ;;
+ *db | *dbx | *strace | *truss)
+ mode=execute
+ ;;
+ *install*|cp|mv)
+ mode=install
+ ;;
+ *rm)
+ mode=uninstall
+ ;;
+ *)
+ # If we have no mode, but dlfiles were specified, then do execute mode.
+ test -n "$execute_dlfiles" && mode=execute
+
+ # Just use the default operation mode.
+ if test -z "$mode"; then
+ if test -n "$nonopt"; then
+ $echo "$modename: warning: cannot infer operation mode from \`$nonopt'" 1>&2
+ else
+ $echo "$modename: warning: cannot infer operation mode without MODE-ARGS" 1>&2
+ fi
+ fi
+ ;;
+ esac
+ fi
+
+ # Only execute mode is allowed to have -dlopen flags.
+ if test -n "$execute_dlfiles" && test "$mode" != execute; then
+ $echo "$modename: unrecognized option \`-dlopen'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Change the help message to a mode-specific one.
+ generic_help="$help"
+ help="Try \`$modename --help --mode=$mode' for more information."
+
+ # These modes are in order of execution frequency so that they run quickly.
+ case $mode in
+ # libtool compile mode
+ compile)
+ modename="$modename: compile"
+ # 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=
+
+ 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)
+ if test -n "$libobj" ; then
+ $echo "$modename: you cannot specify \`-o' more than once" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ arg_mode=target
+ continue
+ ;;
+
+ -static | -prefer-pic | -prefer-non-pic)
+ later="$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,*)
+ args=`$echo "X$arg" | $Xsed -e "s/^-Wc,//"`
+ lastarg=
+ save_ifs="$IFS"; IFS=','
+ for arg in $args; do
+ IFS="$save_ifs"
+
+ # Double-quote args containing other shell metacharacters.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, so we specify it separately.
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ lastarg="$lastarg $arg"
+ done
+ IFS="$save_ifs"
+ lastarg=`$echo "X$lastarg" | $Xsed -e "s/^ //"`
+
+ # Add the arguments to base_compile.
+ base_compile="$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.
+ lastarg=`$echo "X$lastarg" | $Xsed -e "$sed_quote_subst"`
+
+ case $lastarg in
+ # Double-quote args containing other shell metacharacters.
+ # Many Bourne shells cannot handle close brackets correctly
+ # in scan sets, and some SunOS ksh mistreat backslash-escaping
+ # in scan sets (worked around with variable expansion),
+ # and furthermore cannot handle '|' '&' '(' ')' in scan sets
+ # at all, so we specify them separately.
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ lastarg="\"$lastarg\""
+ ;;
+ esac
+
+ base_compile="$base_compile $lastarg"
+ done # for arg
+
+ case $arg_mode in
+ arg)
+ $echo "$modename: you must specify an argument for -Xcompile"
+ exit $EXIT_FAILURE
+ ;;
+ target)
+ $echo "$modename: you must specify a target with \`-o'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ *)
+ # Get the name of the library object.
+ [ -z "$libobj" ] && libobj=`$echo "X$srcfile" | $Xsed -e 's%^.*/%%'`
+ ;;
+ esac
+
+ # Recognize several different file suffixes.
+ # If the user specifies -o file.o, it is replaced with file.lo
+ xform='[cCFSifmso]'
+ case $libobj in
+ *.ada) xform=ada ;;
+ *.adb) xform=adb ;;
+ *.ads) xform=ads ;;
+ *.asm) xform=asm ;;
+ *.c++) xform=c++ ;;
+ *.cc) xform=cc ;;
+ *.ii) xform=ii ;;
+ *.class) xform=class ;;
+ *.cpp) xform=cpp ;;
+ *.cxx) xform=cxx ;;
+ *.f90) xform=f90 ;;
+ *.for) xform=for ;;
+ *.java) xform=java ;;
+ *.obj) xform=obj ;;
+ esac
+
+ libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+
+ case $libobj in
+ *.lo) obj=`$echo "X$libobj" | $Xsed -e "$lo2o"` ;;
+ *)
+ $echo "$modename: cannot determine name of library object from \`$libobj'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ func_infer_tag $base_compile
+
+ for arg in $later; do
+ case $arg in
+ -static)
+ build_old_libs=yes
+ continue
+ ;;
+
+ -prefer-pic)
+ pic_mode=yes
+ continue
+ ;;
+
+ -prefer-non-pic)
+ pic_mode=no
+ continue
+ ;;
+ esac
+ done
+
+ qlibobj=`$echo "X$libobj" | $Xsed -e "$sed_quote_subst"`
+ case $qlibobj in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ qlibobj="\"$qlibobj\"" ;;
+ esac
+ test "X$libobj" != "X$qlibobj" \
+ && $echo "X$libobj" | grep '[]~#^*{};<>?"'"'"' &()|`$[]' \
+ && $echo "$modename: libobj name \`$libobj' may not contain shell special characters."
+ objname=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+ xdir=`$echo "X$obj" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$obj"; then
+ xdir=
+ else
+ xdir=$xdir/
+ fi
+ lobj=${xdir}$objdir/$objname
+
+ if test -z "$base_compile"; then
+ $echo "$modename: you must specify a compilation command" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # 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
+
+ $run $rm $removelist
+ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+
+ # On Cygwin there's no "real" PIC flag so we must build both object types
+ case $host_os in
+ cygwin* | mingw* | pw32* | os2*)
+ 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 "X$srcfile" | $Xsed -e 's%^.*/%%' -e 's%\.[^.]*$%%'`.${objext}
+ lockfile="$output_obj.lock"
+ removelist="$removelist $output_obj $lockfile"
+ trap "$run $rm $removelist; exit $EXIT_FAILURE" 1 2 15
+ 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 $run ln "$progpath" "$lockfile" 2>/dev/null; do
+ $show "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."
+
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+ $echo "$srcfile" > "$lockfile"
+ fi
+
+ if test -n "$fix_srcfile_path"; then
+ eval srcfile=\"$fix_srcfile_path\"
+ fi
+ qsrcfile=`$echo "X$srcfile" | $Xsed -e "$sed_quote_subst"`
+ case $qsrcfile in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ qsrcfile="\"$qsrcfile\"" ;;
+ esac
+
+ $run $rm "$libobj" "${libobj}T"
+
+ # Create a libtool object file (analogous to a ".la" file),
+ # but don't create it if we're doing a dry run.
+ test -z "$run" && cat > ${libobj}T <<EOF
+# $libobj - a libtool object file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# Please DO NOT delete this file!
+# It is necessary for linking the library.
+
+# Name of the PIC object.
+EOF
+
+ # 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
+
+ if test ! -d "${xdir}$objdir"; then
+ $show "$mkdir ${xdir}$objdir"
+ $run $mkdir ${xdir}$objdir
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "${xdir}$objdir"; then
+ exit $exit_status
+ fi
+ fi
+
+ if test -z "$output_obj"; then
+ # Place PIC objects in $objdir
+ command="$command -o $lobj"
+ fi
+
+ $run $rm "$lobj" "$output_obj"
+
+ $show "$command"
+ if $run eval "$command"; then :
+ else
+ test -n "$output_obj" && $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ 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."
+
+ $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
+ $show "$mv $output_obj $lobj"
+ if $run $mv $output_obj $lobj; then :
+ else
+ error=$?
+ $run $rm $removelist
+ exit $error
+ fi
+ fi
+
+ # Append the name of the PIC object to the libtool object file.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object='$objdir/$objname'
+
+EOF
+
+ # Allow error messages only from the first compilation.
+ if test "$suppress_opt" = yes; then
+ suppress_output=' >/dev/null 2>&1'
+ fi
+ else
+ # No PIC object so indicate it doesn't exist in the libtool
+ # object file.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+pic_object=none
+
+EOF
+ 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"
+ else
+ command="$base_compile $qsrcfile $pic_flag"
+ fi
+ if test "$compiler_c_o" = yes; then
+ command="$command -o $obj"
+ fi
+
+ # Suppress compiler output if we already did a PIC compilation.
+ command="$command$suppress_output"
+ $run $rm "$obj" "$output_obj"
+ $show "$command"
+ if $run eval "$command"; then :
+ else
+ $run $rm $removelist
+ exit $EXIT_FAILURE
+ fi
+
+ 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."
+
+ $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
+ $show "$mv $output_obj $obj"
+ if $run $mv $output_obj $obj; then :
+ else
+ error=$?
+ $run $rm $removelist
+ exit $error
+ fi
+ fi
+
+ # Append the name of the non-PIC object the libtool object file.
+ # Only append if the libtool object file exists.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object='$objname'
+
+EOF
+ else
+ # Append the name of the non-PIC object the libtool object file.
+ # Only append if the libtool object file exists.
+ test -z "$run" && cat >> ${libobj}T <<EOF
+# Name of the non-PIC object.
+non_pic_object=none
+
+EOF
+ fi
+
+ $run $mv "${libobj}T" "${libobj}"
+
+ # Unlock the critical section if it was locked
+ if test "$need_locks" != no; then
+ $run $rm "$lockfile"
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool link mode
+ link | relink)
+ modename="$modename: link"
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ # 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=
+
+ avoid_version=no
+ dlfiles=
+ dlprefiles=
+ dlself=no
+ export_dynamic=no
+ export_symbols=
+ export_symbols_regex=
+ generated=
+ libobjs=
+ ltlibs=
+ module=no
+ no_install=no
+ objs=
+ non_pic_objects=
+ notinst_path= # paths that contain not-installed libtool libraries
+ 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
+
+ func_infer_tag $base_compile
+
+ # We need to know -static, to get the right output filenames.
+ for arg
+ do
+ case $arg in
+ -all-static | -static | -static-libtool-libs)
+ case $arg in
+ -all-static)
+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+ $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+ 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
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ qarg=\"`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`\" ### testsuite: skip nested quoting test
+ ;;
+ *) qarg=$arg ;;
+ esac
+ libtool_args="$libtool_args $qarg"
+
+ # If the previous option needs an argument, assign it.
+ if test -n "$prev"; then
+ case $prev in
+ output)
+ compile_command="$compile_command @OUTPUT@"
+ finalize_command="$finalize_command @OUTPUT@"
+ ;;
+ esac
+
+ case $prev in
+ dlfiles|dlprefiles)
+ if test "$preload" = no; then
+ # Add the symbol object into the linking commands.
+ compile_command="$compile_command @SYMFILE@"
+ finalize_command="$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
+ dlfiles="$dlfiles $arg"
+ else
+ dlprefiles="$dlprefiles $arg"
+ fi
+ prev=
+ continue
+ ;;
+ esac
+ ;;
+ expsyms)
+ export_symbols="$arg"
+ if test ! -f "$arg"; then
+ $echo "$modename: symbol file \`$arg' does not exist"
+ exit $EXIT_FAILURE
+ fi
+ prev=
+ continue
+ ;;
+ expsyms_regex)
+ export_symbols_regex="$arg"
+ prev=
+ continue
+ ;;
+ inst_prefix)
+ inst_prefix_dir="$arg"
+ prev=
+ continue
+ ;;
+ precious_regex)
+ precious_files_regex="$arg"
+ prev=
+ continue
+ ;;
+ release)
+ release="-$arg"
+ prev=
+ continue
+ ;;
+ objectlist)
+ if test -f "$arg"; then
+ save_arg=$arg
+ moreargs=
+ for fil in `cat $save_arg`
+ do
+# moreargs="$moreargs $fil"
+ arg=$fil
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ # If there is no directory component, then add one.
+ case $arg in
+ */* | *\\*) . $arg ;;
+ *) . ./$arg ;;
+ esac
+
+ if test -z "$pic_object" || \
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none && \
+ test "$non_pic_object" = none; then
+ $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ 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
+ dlfiles="$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.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ libobjs="$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
+ non_pic_objects="$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"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if test -z "$run"; then
+ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+ exit $EXIT_FAILURE
+ else
+ # Dry-run case.
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+ libobjs="$libobjs $pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ fi
+ done
+ else
+ $echo "$modename: link input file \`$save_arg' does not exist"
+ exit $EXIT_FAILURE
+ fi
+ arg=$save_arg
+ prev=
+ continue
+ ;;
+ rpath | xrpath)
+ # We need an absolute path.
+ case $arg in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ $echo "$modename: only absolute run-paths are allowed" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ if test "$prev" = rpath; then
+ case "$rpath " in
+ *" $arg "*) ;;
+ *) rpath="$rpath $arg" ;;
+ esac
+ else
+ case "$xrpath " in
+ *" $arg "*) ;;
+ *) xrpath="$xrpath $arg" ;;
+ esac
+ fi
+ prev=
+ continue
+ ;;
+ xcompiler)
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ compile_command="$compile_command $qarg"
+ finalize_command="$finalize_command $qarg"
+ continue
+ ;;
+ xlinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $wl$qarg"
+ prev=
+ compile_command="$compile_command $wl$qarg"
+ finalize_command="$finalize_command $wl$qarg"
+ continue
+ ;;
+ xcclinker)
+ linker_flags="$linker_flags $qarg"
+ compiler_flags="$compiler_flags $qarg"
+ prev=
+ compile_command="$compile_command $qarg"
+ finalize_command="$finalize_command $qarg"
+ continue
+ ;;
+ shrext)
+ shrext_cmds="$arg"
+ prev=
+ continue
+ ;;
+ darwin_framework|darwin_framework_skip)
+ test "$prev" = "darwin_framework" && compiler_flags="$compiler_flags $arg"
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ prev=
+ 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
+ compile_command="$compile_command $link_static_flag"
+ finalize_command="$finalize_command $link_static_flag"
+ fi
+ continue
+ ;;
+
+ -allow-undefined)
+ # FIXME: remove this flag sometime in the future.
+ $echo "$modename: \`-allow-undefined' is deprecated because it is the default" 1>&2
+ continue
+ ;;
+
+ -avoid-version)
+ avoid_version=yes
+ 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
+ $echo "$modename: more than one -exported-symbols argument is not allowed"
+ exit $EXIT_FAILURE
+ fi
+ if test "X$arg" = "X-export-symbols"; then
+ prev=expsyms
+ else
+ prev=expsyms_regex
+ fi
+ continue
+ ;;
+
+ -framework|-arch|-isysroot)
+ case " $CC " in
+ *" ${arg} ${1} "* | *" ${arg} ${1} "*)
+ prev=darwin_framework_skip ;;
+ *) compiler_flags="$compiler_flags $arg"
+ prev=darwin_framework ;;
+ esac
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ 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*)
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ ;;
+ esac
+ continue
+ ;;
+
+ -L*)
+ dir=`$echo "X$arg" | $Xsed -e 's/^-L//'`
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ $echo "$modename: cannot determine absolute directory name of \`$dir'" 1>&2
+ absdir="$dir"
+ notinst_path="$notinst_path $dir"
+ fi
+ dir="$absdir"
+ ;;
+ esac
+ case "$deplibs " in
+ *" -L$dir "*) ;;
+ *)
+ deplibs="$deplibs -L$dir"
+ lib_search_path="$lib_search_path $dir"
+ ;;
+ esac
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ testbindir=`$echo "X$dir" | $Xsed -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$dir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$dir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ *) dllsearchpath="$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*)
+ # 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
+ deplibs="$deplibs -framework System"
+ 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
+ deplibs="$deplibs $arg"
+ continue
+ ;;
+
+ # Tru64 UNIX uses -model [arg] to determine the layout of C++
+ # classes, name mangling, and exception handling.
+ -model)
+ compile_command="$compile_command $arg"
+ compiler_flags="$compiler_flags $arg"
+ finalize_command="$finalize_command $arg"
+ prev=xcompiler
+ continue
+ ;;
+
+ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
+ compiler_flags="$compiler_flags $arg"
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ continue
+ ;;
+
+ -module)
+ module=yes
+ continue
+ ;;
+
+ # -64, -mips[0-9] enable 64-bit mode on the SGI compiler
+ # -r[0-9][0-9]* specifies the processor on the SGI compiler
+ # -xarch=*, -xtarget=* enable 64-bit mode on the Sun compiler
+ # +DA*, +DD* enable 64-bit mode on the HP compiler
+ # -q* pass through compiler args for the IBM compiler
+ # -m* pass through architecture-specific compiler args for GCC
+ # -m*, -t[45]*, -txscale* pass through architecture-specific
+ # compiler args for GCC
+ # -pg pass through profiling flag for GCC
+ # @file GCC response files
+ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \
+ -t[45]*|-txscale*|@*)
+
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ compiler_flags="$compiler_flags $arg"
+ continue
+ ;;
+
+ -shrext)
+ prev=shrext
+ continue
+ ;;
+
+ -no-fast-install)
+ fast_install=no
+ continue
+ ;;
+
+ -no-install)
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ # The PATH hackery in wrapper scripts is required on Windows
+ # in order for the loader to find any dlls it needs.
+ $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+ $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+ 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*)
+ dir=`$echo "X$arg" | $Xsed -e 's/^-R//'`
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ $echo "$modename: only absolute run-paths are allowed" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ 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
+ ;;
+
+ -Wc,*)
+ args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wc,//'`
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ case $flag in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ flag="\"$flag\""
+ ;;
+ esac
+ arg="$arg $wl$flag"
+ compiler_flags="$compiler_flags $flag"
+ done
+ IFS="$save_ifs"
+ arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+ ;;
+
+ -Wl,*)
+ args=`$echo "X$arg" | $Xsed -e "$sed_quote_subst" -e 's/^-Wl,//'`
+ arg=
+ save_ifs="$IFS"; IFS=','
+ for flag in $args; do
+ IFS="$save_ifs"
+ case $flag in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ flag="\"$flag\""
+ ;;
+ esac
+ arg="$arg $wl$flag"
+ compiler_flags="$compiler_flags $wl$flag"
+ linker_flags="$linker_flags $flag"
+ done
+ IFS="$save_ifs"
+ arg=`$echo "X$arg" | $Xsed -e "s/^ //"`
+ ;;
+
+ -Xcompiler)
+ prev=xcompiler
+ continue
+ ;;
+
+ -Xlinker)
+ prev=xlinker
+ continue
+ ;;
+
+ -XCClinker)
+ prev=xcclinker
+ continue
+ ;;
+
+ # Some other compiler flag.
+ -* | +*)
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ ;;
+
+ *.$objext)
+ # A standard object.
+ objs="$objs $arg"
+ ;;
+
+ *.lo)
+ # A libtool-controlled object.
+
+ # Check to see that this really is a libtool object.
+ if (${SED} -e '2q' $arg | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ pic_object=
+ non_pic_object=
+
+ # Read the .lo file
+ # If there is no directory component, then add one.
+ case $arg in
+ */* | *\\*) . $arg ;;
+ *) . ./$arg ;;
+ esac
+
+ if test -z "$pic_object" || \
+ test -z "$non_pic_object" ||
+ test "$pic_object" = none && \
+ test "$non_pic_object" = none; then
+ $echo "$modename: cannot find name of object for \`$arg'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ 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
+ dlfiles="$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.
+ dlprefiles="$dlprefiles $pic_object"
+ prev=
+ fi
+
+ # A PIC object.
+ libobjs="$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
+ non_pic_objects="$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"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ else
+ # Only an error if not doing a dry-run.
+ if test -z "$run"; then
+ $echo "$modename: \`$arg' is not a valid libtool object" 1>&2
+ exit $EXIT_FAILURE
+ else
+ # Dry-run case.
+
+ # Extract subdirectory from the argument.
+ xdir=`$echo "X$arg" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$xdir" = "X$arg"; then
+ xdir=
+ else
+ xdir="$xdir/"
+ fi
+
+ pic_object=`$echo "X${xdir}${objdir}/${arg}" | $Xsed -e "$lo2o"`
+ non_pic_object=`$echo "X${xdir}${arg}" | $Xsed -e "$lo2o"`
+ libobjs="$libobjs $pic_object"
+ non_pic_objects="$non_pic_objects $non_pic_object"
+ fi
+ fi
+ ;;
+
+ *.$libext)
+ # An archive.
+ deplibs="$deplibs $arg"
+ old_deplibs="$old_deplibs $arg"
+ continue
+ ;;
+
+ *.la)
+ # A libtool-controlled library.
+
+ if test "$prev" = dlfiles; then
+ # This library was specified with -dlopen.
+ dlfiles="$dlfiles $arg"
+ prev=
+ elif test "$prev" = dlprefiles; then
+ # The library was specified with -dlpreopen.
+ dlprefiles="$dlprefiles $arg"
+ prev=
+ else
+ deplibs="$deplibs $arg"
+ 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.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ ;;
+ esac # arg
+
+ # Now actually substitute the argument into the commands.
+ if test -n "$arg"; then
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ fi
+ done # argument parsing loop
+
+ if test -n "$prev"; then
+ $echo "$modename: the \`$prevarg' option requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then
+ eval arg=\"$export_dynamic_flag_spec\"
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+ fi
+
+ oldlibs=
+ # calculate the name of the file, without its directory
+ outputname=`$echo "X$output" | $Xsed -e 's%^.*/%%'`
+ libobjs_save="$libobjs"
+
+ if test -n "$shlibpath_var"; then
+ # get the directories listed in $shlibpath_var
+ eval shlib_search_path=\`\$echo \"X\${$shlibpath_var}\" \| \$Xsed -e \'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\"
+
+ output_objdir=`$echo "X$output" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$output_objdir" = "X$output"; then
+ output_objdir="$objdir"
+ else
+ output_objdir="$output_objdir/$objdir"
+ fi
+ # Create the object directory.
+ if test ! -d "$output_objdir"; then
+ $show "$mkdir $output_objdir"
+ $run $mkdir $output_objdir
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "$output_objdir"; then
+ exit $exit_status
+ fi
+ fi
+
+ # Determine the type of output
+ case $output in
+ "")
+ $echo "$modename: you must specify an output file" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ *.$libext) linkmode=oldlib ;;
+ *.lo | *.$objext) linkmode=obj ;;
+ *.la) linkmode=lib ;;
+ *) linkmode=prog ;; # Anything else should be a program.
+ esac
+
+ case $host in
+ *cygwin* | *mingw* | *pw32*)
+ # don't eliminate duplications in $postdeps and $predeps
+ duplicate_compiler_generated_deps=yes
+ ;;
+ *)
+ duplicate_compiler_generated_deps=$duplicate_deps
+ ;;
+ 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 test "X$duplicate_deps" = "Xyes" ; then
+ case "$libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ libs="$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 test "X$duplicate_compiler_generated_deps" = "Xyes" ; then
+ for pre_post_dep in $predeps $postdeps; do
+ case "$pre_post_deps " in
+ *" $pre_post_dep "*) specialdeplibs="$specialdeplibs $pre_post_deps" ;;
+ esac
+ pre_post_deps="$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
+ case $linkmode in
+ lib)
+ passes="conv link"
+ for file in $dlfiles $dlprefiles; do
+ case $file in
+ *.la) ;;
+ *)
+ $echo "$modename: libraries can \`-dlopen' only libtool libraries: $file" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ 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
+ 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 "$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)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ compiler_flags="$compiler_flags $deplib"
+ fi
+ continue
+ ;;
+ -l*)
+ if test "$linkmode" != lib && test "$linkmode" != prog; then
+ $echo "$modename: warning: \`-l' is ignored for archives/objects" 1>&2
+ continue
+ fi
+ name=`$echo "X$deplib" | $Xsed -e 's/^-l//'`
+ for searchdir in $newlib_search_path $lib_search_path $sys_lib_search_path $shlib_search_path; 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 (${SED} -e '2q' $lib |
+ grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ library_names=
+ old_library=
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+ 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
+ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$ladir" = "X$lib" && ladir="."
+ 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
+ -L*)
+ case $linkmode in
+ lib)
+ deplibs="$deplib $deplibs"
+ test "$pass" = conv && continue
+ newdependency_libs="$deplib $newdependency_libs"
+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+ ;;
+ 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
+ newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`
+ ;;
+ *)
+ $echo "$modename: warning: \`-L' is ignored for archives/objects" 1>&2
+ ;;
+ esac # linkmode
+ continue
+ ;; # -L
+ -R*)
+ if test "$pass" = link; then
+ dir=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
+ # Make sure the xrpath contains only unique directories.
+ case "$xrpath " in
+ *" $dir "*) ;;
+ *) xrpath="$xrpath $dir" ;;
+ esac
+ fi
+ deplibs="$deplib $deplibs"
+ continue
+ ;;
+ *.la) lib="$deplib" ;;
+ *.$libext)
+ if test "$pass" = conv; then
+ deplibs="$deplib $deplibs"
+ continue
+ fi
+ case $linkmode in
+ lib)
+ valid_a_lib=no
+ case $deplibs_check_method in
+ match_pattern*)
+ set dummy $deplibs_check_method
+ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ 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 used here."
+ else
+ $echo
+ $echo "*** Warning: Linking the shared library $output against the"
+ $echo "*** static library $deplib is not portable!"
+ deplibs="$deplib $deplibs"
+ fi
+ 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.
+ newdlprefiles="$newdlprefiles $deplib"
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+ else
+ newdlfiles="$newdlfiles $deplib"
+ fi
+ fi
+ continue
+ ;;
+ %DEPLIBS%)
+ alldeplibs=yes
+ continue
+ ;;
+ esac # case $deplib
+ if test "$found" = yes || test -f "$lib"; then :
+ else
+ $echo "$modename: cannot find the library \`$lib' or unhandled argument \`$deplib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $lib | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ ladir=`$echo "X$lib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$ladir" = "X$lib" && ladir="."
+
+ dlname=
+ dlopen=
+ dlpreopen=
+ libdir=
+ library_names=
+ old_library=
+ # 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
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+
+ if test "$linkmode,$pass" = "lib,link" ||
+ test "$linkmode,$pass" = "prog,scan" ||
+ { test "$linkmode" != prog && test "$linkmode" != lib; }; then
+ test -n "$dlopen" && dlfiles="$dlfiles $dlopen"
+ test -n "$dlpreopen" && dlprefiles="$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
+ $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ # It is a libtool convenience library, so add in its objects.
+ convenience="$convenience $ladir/$objdir/$old_library"
+ old_convenience="$old_convenience $ladir/$objdir/$old_library"
+ tmp_libs=
+ for deplib in $dependency_libs; do
+ deplibs="$deplib $deplibs"
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+ elif test "$linkmode" != prog && test "$linkmode" != lib; then
+ $echo "$modename: \`$lib' is not a convenience library" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ continue
+ fi # $pass = conv
+
+
+ # Get the name of the library we link against.
+ linklib=
+ for l in $old_library $library_names; do
+ linklib="$l"
+ done
+ if test -z "$linklib"; then
+ $echo "$modename: cannot find name of link library for \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # This library was specified with -dlopen.
+ if test "$pass" = dlopen; then
+ if test -z "$libdir"; then
+ $echo "$modename: cannot -dlopen a convenience library: \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ 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.
+ dlprefiles="$dlprefiles $lib $dependency_libs"
+ else
+ newdlfiles="$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
+ $echo "$modename: warning: cannot determine absolute directory name of \`$ladir'" 1>&2
+ $echo "$modename: passing it literally to the linker, although it might fail" 1>&2
+ abs_ladir="$ladir"
+ fi
+ ;;
+ esac
+ laname=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+
+ # Find the relevant object directory and library name.
+ if test "X$installed" = Xyes; then
+ if test ! -f "$libdir/$linklib" && test -f "$abs_ladir/$linklib"; then
+ $echo "$modename: warning: library \`$lib' was moved." 1>&2
+ dir="$ladir"
+ absdir="$abs_ladir"
+ libdir="$abs_ladir"
+ else
+ dir="$libdir"
+ absdir="$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
+ notinst_path="$notinst_path $abs_ladir"
+ else
+ dir="$ladir/$objdir"
+ absdir="$abs_ladir/$objdir"
+ # Remove this search path later
+ notinst_path="$notinst_path $abs_ladir"
+ fi
+ fi # $installed = yes
+ name=`$echo "X$laname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+
+ # This library was specified with -dlpreopen.
+ if test "$pass" = dlpreopen; then
+ if test -z "$libdir"; then
+ $echo "$modename: cannot -dlpreopen a convenience library: \`$lib'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ # Prefer using a static library (so that no silly _DYNAMIC symbols
+ # are required to link).
+ if test -n "$old_library"; then
+ newdlprefiles="$newdlprefiles $dir/$old_library"
+ # Otherwise, use the dlname, so that lt_dlopen finds it.
+ elif test -n "$dlname"; then
+ newdlprefiles="$newdlprefiles $dir/$dlname"
+ else
+ newdlprefiles="$newdlprefiles $dir/$linklib"
+ fi
+ 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
+ newlib_search_path="$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*) newlib_search_path="$newlib_search_path "`$echo "X$deplib" | $Xsed -e 's/^-L//'`;; ### testsuite: skip nested quoting test
+ 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 test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$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
+ *" $dir "*) ;;
+ *" $absdir "*) ;;
+ *) temp_rpath="$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 "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$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
+ if test "$installed" = no; then
+ notinst_deplibs="$notinst_deplibs $lib"
+ need_relink=yes
+ fi
+ # This is a shared library
+
+ # Warn about portability, can't link against -module's on
+ # some systems (darwin)
+ if 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 "*) ;;
+ *) compile_rpath="$compile_rpath $absdir"
+ esac
+ ;;
+ esac
+ case " $sys_lib_dlsearch_path " in
+ *" $libdir "*) ;;
+ *)
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$finalize_rpath $libdir"
+ esac
+ ;;
+ esac
+ fi
+
+ if test -n "$old_archive_from_expsyms_cmds"; then
+ # figure out the soname
+ set dummy $library_names
+ realname="$2"
+ shift; 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*)
+ major=`expr $current - $age`
+ versuffix="-$major"
+ ;;
+ esac
+ eval soname=\"$soname_spec\"
+ else
+ soname="$realname"
+ fi
+
+ # Make a new name for the extract_expsyms_cmds to use
+ soroot="$soname"
+ soname=`$echo $soroot | ${SED} -e 's/^.*\///'`
+ newlib="libimp-`$echo $soname | ${SED} 's/^lib//;s/\.dll$//'`.a"
+
+ # If the library has no export list, then create one now
+ if test -f "$output_objdir/$soname-def"; then :
+ else
+ $show "extracting exported symbol list from \`$soname'"
+ save_ifs="$IFS"; IFS='~'
+ cmds=$extract_expsyms_cmds
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+
+ # Create $newlib
+ if test -f "$output_objdir/$newlib"; then :; else
+ $show "generating import library for \`$soname'"
+ save_ifs="$IFS"; IFS='~'
+ cmds=$old_archive_from_expsyms_cmds
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ 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 "$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 module then we can not link against
+ # it, someone is ignoring the new warnings I added
+ if /usr/bin/file -L $add 2> /dev/null |
+ $EGREP ": [^:]* bundle" >/dev/null ; 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
+ 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; 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
+ [\\/]*)
+ add_dir="$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
+ $echo "$modename: configuration error: unsupported hardcode properties"
+ exit $EXIT_FAILURE
+ fi
+
+ if test -n "$add_shlibpath"; then
+ case :$compile_shlibpath: in
+ *":$add_shlibpath:"*) ;;
+ *) compile_shlibpath="$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:"*) ;;
+ *) finalize_shlibpath="$finalize_shlibpath$libdir:" ;;
+ esac
+ fi
+ fi
+ fi
+
+ if test "$linkmode" = prog || test "$mode" = relink; then
+ add_shlibpath=
+ add_dir=
+ add=
+ # Finalize command for both is simple: just hardcode it.
+ if test "$hardcode_direct" = yes; 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:"*) ;;
+ *) finalize_shlibpath="$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
+ [\\/]*)
+ add_dir="$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*) temp_xrpath=`$echo "X$libdir" | $Xsed -e 's/^-R//'`
+ case " $xrpath " in
+ *" $temp_xrpath "*) ;;
+ *) xrpath="$xrpath $temp_xrpath";;
+ esac;;
+ *) temp_deplibs="$temp_deplibs $libdir";;
+ esac
+ done
+ dependency_libs="$temp_deplibs"
+ fi
+
+ newlib_search_path="$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"
+ if test "X$duplicate_deps" = "Xyes" ; then
+ case "$tmp_libs " in
+ *" $deplib "*) specialdeplibs="$specialdeplibs $deplib" ;;
+ esac
+ fi
+ tmp_libs="$tmp_libs $deplib"
+ done
+
+ if test "$link_all_deplibs" != no; then
+ # Add the search paths of all dependency libraries
+ for deplib in $dependency_libs; do
+ case $deplib in
+ -L*) path="$deplib" ;;
+ *.la)
+ dir=`$echo "X$deplib" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$deplib" && dir="."
+ # We need an absolute path.
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*) absdir="$dir" ;;
+ *)
+ absdir=`cd "$dir" && pwd`
+ if test -z "$absdir"; then
+ $echo "$modename: warning: cannot determine absolute directory name of \`$dir'" 1>&2
+ absdir="$dir"
+ fi
+ ;;
+ esac
+ if grep "^installed=no" $deplib > /dev/null; then
+ path="$absdir/$objdir"
+ else
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ if test "$absdir" != "$libdir"; then
+ $echo "$modename: warning: \`$deplib' seems to be moved" 1>&2
+ fi
+ path="$absdir"
+ fi
+ depdepl=
+ case $host in
+ *-*-darwin*)
+ # we do not want to link against static libs,
+ # but need to link against shared
+ 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 "$path/$depdepl" ; then
+ depdepl="$path/$depdepl"
+ fi
+ # do not add paths which are already there
+ case " $newlib_search_path " in
+ *" $path "*) ;;
+ *) newlib_search_path="$newlib_search_path $path";;
+ esac
+ fi
+ path=""
+ ;;
+ *)
+ path="-L$path"
+ ;;
+ esac
+ ;;
+ -l*)
+ case $host in
+ *-*-darwin*)
+ # Again, we only want to link against shared libraries
+ eval tmp_libs=`$echo "X$deplib" | $Xsed -e "s,^\-l,,"`
+ for tmp in $newlib_search_path ; do
+ if test -f "$tmp/lib$tmp_libs.dylib" ; then
+ eval depdepl="$tmp/lib$tmp_libs.dylib"
+ break
+ fi
+ done
+ path=""
+ ;;
+ *) continue ;;
+ esac
+ ;;
+ *) continue ;;
+ esac
+ case " $deplibs " in
+ *" $path "*) ;;
+ *) deplibs="$path $deplibs" ;;
+ esac
+ case " $deplibs " in
+ *" $depdepl "*) ;;
+ *) deplibs="$depdepl $deplibs" ;;
+ esac
+ done
+ fi # link_all_deplibs != no
+ fi # linkmode = lib
+ done # for deplib in $libs
+ 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 "*) ;;
+ *) lib_search_path="$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 "*) ;;
+ *) tmp_libs="$tmp_libs $deplib" ;;
+ esac
+ ;;
+ *) tmp_libs="$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
+ tmp_libs="$tmp_libs $i"
+ fi
+ done
+ dependency_libs=$tmp_libs
+ done # for pass
+ if test "$linkmode" = prog; then
+ dlfiles="$newdlfiles"
+ dlprefiles="$newdlprefiles"
+ fi
+
+ case $linkmode in
+ oldlib)
+ if test -n "$deplibs"; then
+ $echo "$modename: warning: \`-l' and \`-L' are ignored for archives" 1>&2
+ fi
+
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$rpath"; then
+ $echo "$modename: warning: \`-rpath' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$xrpath"; then
+ $echo "$modename: warning: \`-R' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info/-version-number' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for archives" 1>&2
+ fi
+
+ if test -n "$export_symbols" || test -n "$export_symbols_regex"; then
+ $echo "$modename: warning: \`-export-symbols' is ignored for archives" 1>&2
+ fi
+
+ # Now set the variables for building old libraries.
+ build_libtool_libs=no
+ oldlibs="$output"
+ objs="$objs$old_deplibs"
+ ;;
+
+ lib)
+ # Make sure we only generate libraries of the form `libNAME.la'.
+ case $outputname in
+ lib*)
+ name=`$echo "X$outputname" | $Xsed -e 's/\.la$//' -e 's/^lib//'`
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ ;;
+ *)
+ if test "$module" = no; then
+ $echo "$modename: libtool library \`$output' must begin with \`lib'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ if test "$need_lib_prefix" != no; then
+ # Add the "lib" prefix for modules if required
+ name=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+ eval shared_ext=\"$shrext_cmds\"
+ eval libname=\"$libname_spec\"
+ else
+ libname=`$echo "X$outputname" | $Xsed -e 's/\.la$//'`
+ fi
+ ;;
+ esac
+
+ if test -n "$objs"; then
+ if test "$deplibs_check_method" != pass_all; then
+ $echo "$modename: cannot build libtool library \`$output' from non-libtool objects on this host:$objs" 2>&1
+ exit $EXIT_FAILURE
+ else
+ $echo
+ $echo "*** Warning: Linking the shared library $output against the non-libtool"
+ $echo "*** objects $objs is not portable!"
+ libobjs="$libobjs $objs"
+ fi
+ fi
+
+ if test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen self' is ignored for libtool libraries" 1>&2
+ fi
+
+ set dummy $rpath
+ if test "$#" -gt 2; then
+ $echo "$modename: warning: ignoring multiple \`-rpath's for a libtool library" 1>&2
+ fi
+ install_libdir="$2"
+
+ 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
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info/-version-number' is ignored for convenience libraries" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for convenience libraries" 1>&2
+ fi
+ else
+
+ # Parse the version information argument.
+ save_ifs="$IFS"; IFS=':'
+ set dummy $vinfo 0 0 0
+ IFS="$save_ifs"
+
+ if test -n "$8"; then
+ $echo "$modename: too many parameters to \`-version-info'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # 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="$2"
+ number_minor="$3"
+ number_revision="$4"
+ #
+ # 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)
+ current=`expr $number_major + $number_minor`
+ age="$number_minor"
+ revision="$number_revision"
+ ;;
+ freebsd-aout|freebsd-elf|sunos)
+ current="$number_major"
+ revision="$number_minor"
+ age="0"
+ ;;
+ irix|nonstopux)
+ current=`expr $number_major + $number_minor - 1`
+ age="$number_minor"
+ revision="$number_minor"
+ ;;
+ esac
+ ;;
+ no)
+ current="$2"
+ revision="$3"
+ age="$4"
+ ;;
+ 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]) ;;
+ *)
+ $echo "$modename: CURRENT \`$current' must be a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ 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]) ;;
+ *)
+ $echo "$modename: REVISION \`$revision' must be a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ 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]) ;;
+ *)
+ $echo "$modename: AGE \`$age' must be a nonnegative integer" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ if test "$age" -gt "$current"; then
+ $echo "$modename: AGE \`$age' is greater than the current interface number \`$current'" 1>&2
+ $echo "$modename: \`$vinfo' is not valid version information" 1>&2
+ exit $EXIT_FAILURE
+ 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
+ major=.`expr $current - $age`
+ versuffix="$major.$age.$revision"
+ # Darwin ld doesn't like 0 for these options...
+ minor_current=`expr $current + 1`
+ verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
+ ;;
+
+ freebsd-aout)
+ major=".$current"
+ versuffix=".$current.$revision";
+ ;;
+
+ freebsd-elf)
+ major=".$current"
+ versuffix=".$current";
+ ;;
+
+ irix | nonstopux)
+ major=`expr $current - $age + 1`
+
+ 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
+ iface=`expr $revision - $loop`
+ loop=`expr $loop - 1`
+ verstring="$verstring_prefix$major.$iface:$verstring"
+ done
+
+ # Before this point, $major must not contain `.'.
+ major=.$major
+ versuffix="$major.$revision"
+ ;;
+
+ linux)
+ major=.`expr $current - $age`
+ versuffix="$major.$age.$revision"
+ ;;
+
+ osf)
+ major=.`expr $current - $age`
+ 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
+ iface=`expr $current - $loop`
+ loop=`expr $loop - 1`
+ verstring="$verstring:${iface}.0"
+ done
+
+ # Make executables depend on our current version.
+ verstring="$verstring:${current}.0"
+ ;;
+
+ sunos)
+ major=".$current"
+ versuffix=".$current.$revision"
+ ;;
+
+ windows)
+ # Use '-' rather than '.', since we only want one
+ # extension on DOS 8.3 filesystems.
+ major=`expr $current - $age`
+ versuffix="-$major"
+ ;;
+
+ *)
+ $echo "$modename: unknown library version type \`$version_type'" 1>&2
+ $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ 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
+ $echo "$modename: warning: undefined symbols not allowed in $host shared libraries" 1>&2
+ build_libtool_libs=no
+ build_old_libs=yes
+ fi
+ else
+ # Don't allow undefined symbols.
+ allow_undefined_flag="$no_undefined_flag"
+ fi
+ fi
+
+ if test "$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)
+ ;;
+ $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
+ removelist="$removelist $p"
+ ;;
+ *) ;;
+ esac
+ done
+ if test -n "$removelist"; then
+ $show "${rm}r $removelist"
+ $run ${rm}r $removelist
+ fi
+ fi
+
+ # Now set the variables for building old libraries.
+ if test "$build_old_libs" = yes && test "$build_libtool_libs" != convenience ; then
+ oldlibs="$oldlibs $output_objdir/$libname.$libext"
+
+ # Transform .lo files to .o files.
+ oldobjs="$objs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}'$/d' -e "$lo2o" | $NL2SP`
+ fi
+
+ # Eliminate all temporary directories.
+# for path in $notinst_path; do
+# lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
+# deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
+# dependency_libs=`$echo "$dependency_libs " | ${SED} -e "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
+ temp_xrpath="$temp_xrpath -R$libdir"
+ case "$finalize_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_rpath="$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 "*) ;;
+ *) dlfiles="$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 "*) ;;
+ *) dlprefiles="$dlprefiles $lib" ;;
+ esac
+ done
+
+ if test "$build_libtool_libs" = yes; then
+ if test -n "$rpath"; then
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-beos*)
+ # these systems don't actually have a c library (as such)!
+ ;;
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # Rhapsody C library is in the System framework
+ deplibs="$deplibs -framework System"
+ ;;
+ *-*-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
+ deplibs="$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.
+ $rm conftest.c
+ cat > conftest.c <<EOF
+ int main() { return 0; }
+EOF
+ $rm conftest
+ if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+ ldd_output=`ldd conftest`
+ for i in $deplibs; do
+ name=`expr $i : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+ newdeplibs="$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
+ deplib_match=$2
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$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
+ else
+ newdeplibs="$newdeplibs $i"
+ fi
+ 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
+ name=`expr $i : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ $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 "*)
+ newdeplibs="$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
+ deplib_match=$2
+ if test `expr "$ldd_output" : ".*$deplib_match"` -ne 0 ; then
+ newdeplibs="$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
+ else
+ newdeplibs="$newdeplibs $i"
+ fi
+ done
+ fi
+ ;;
+ file_magic*)
+ set dummy $deplibs_check_method
+ file_magic_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ for a_deplib in $deplibs; do
+ name=`expr $a_deplib : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$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
+ # 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 "X$potlib" | $Xsed -e 's,[^/]*$,,'`"$potliblink";;
+ esac
+ done
+ if eval $file_magic_cmd \"\$potlib\" 2>/dev/null \
+ | ${SED} 10q \
+ | $EGREP "$file_magic_regex" > /dev/null; then
+ newdeplibs="$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
+ else
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ fi
+ done # Gone through all deplibs.
+ ;;
+ match_pattern*)
+ set dummy $deplibs_check_method
+ match_pattern_regex=`expr "$deplibs_check_method" : "$2 \(.*\)"`
+ for a_deplib in $deplibs; do
+ name=`expr $a_deplib : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+ if test -n "$name" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $a_deplib "*)
+ newdeplibs="$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
+ newdeplibs="$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
+ else
+ # Add a -L argument.
+ newdeplibs="$newdeplibs $a_deplib"
+ fi
+ done # Gone through all deplibs.
+ ;;
+ none | unknown | *)
+ newdeplibs=""
+ tmp_deplibs=`$echo "X $deplibs" | $Xsed -e 's/ -lc$//' \
+ -e '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 "X $tmp_deplibs" | ${SED} -e "1s,^X,," -e "s,$i,,"`
+ done
+ fi
+ if $echo "X $tmp_deplibs" | $Xsed -e 's/[ ]//g' \
+ | grep . >/dev/null; then
+ $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
+ fi
+ ;;
+ 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 is the System framework
+ newdeplibs=`$echo "X $newdeplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ ;;
+ 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
+
+
+ # 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 "*)
+ new_libs="$new_libs -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ ;;
+ *) new_libs="$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 "$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
+ 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"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ dep_rpath="$dep_rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$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
+ rpath="$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 "$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
+ realname="$2"
+ shift; 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
+ linknames="$linknames $link"
+ done
+
+ # Use standard objects if they are pic
+ test -z "$pic_flag" && libobjs=`$echo "X$libobjs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ if test "$always_export_symbols" = yes || test -n "$export_symbols_regex"; then
+ $show "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $run $rm $export_symbols
+ cmds=$export_symbols_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ if len=`expr "X$cmd" : ".*"` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ skipped_export=false
+ else
+ # The command line is too long to execute in one step.
+ $show "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"; then
+ $show "$EGREP -e \"$export_symbols_regex\" \"$export_symbols\" > \"${export_symbols}T\""
+ $run eval '$EGREP -e "$export_symbols_regex" "$export_symbols" > "${export_symbols}T"'
+ $show "$mv \"${export_symbols}T\" \"$export_symbols\""
+ $run eval '$mv "${export_symbols}T" "$export_symbols"'
+ fi
+ fi
+ fi
+
+ if test -n "$export_symbols" && test -n "$include_expsyms"; then
+ $run eval '$echo "X$include_expsyms" | $SP2NL >> "$export_symbols"'
+ fi
+
+ tmp_deplibs=
+ for test_deplib in $deplibs; do
+ case " $convenience " in
+ *" $test_deplib "*) ;;
+ *)
+ tmp_deplibs="$tmp_deplibs $test_deplib"
+ ;;
+ esac
+ done
+ deplibs="$tmp_deplibs"
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+ save_libobjs=$libobjs
+ eval libobjs=\"\$libobjs $whole_archive_flag_spec\"
+ else
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $convenience
+ libobjs="$libobjs $func_extract_archives_result"
+ fi
+ fi
+
+ if test "$thread_safe" = yes && test -n "$thread_safe_flag_spec"; then
+ eval flag=\"$thread_safe_flag_spec\"
+ linker_flags="$linker_flags $flag"
+ fi
+
+ # Make a backup of the uninstalled library when relinking
+ if test "$mode" = relink; then
+ $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:" &&
+ len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ :
+ else
+ # The command line is too long to link in one step, link piecewise.
+ $echo "creating reloadable object files..."
+
+ # 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
+ output_la=`$echo "X$output" | $Xsed -e "$basename"`
+
+ # Clear the reloadable object creation command queue and
+ # initialize k to one.
+ test_cmds=
+ concat_cmds=
+ objlist=
+ delfiles=
+ last_robj=
+ k=1
+ output=$output_objdir/$output_la-${k}.$objext
+ # Loop over the list of objects to be linked.
+ for obj in $save_libobjs
+ do
+ eval test_cmds=\"$reload_cmds $objlist $last_robj\"
+ if test "X$objlist" = X ||
+ { len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+ test "$len" -le "$max_cmd_len"; }; then
+ objlist="$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.
+ eval concat_cmds=\"$reload_cmds $objlist $last_robj\"
+ else
+ # All subsequent reloadable object files will link in
+ # the last one created.
+ eval concat_cmds=\"\$concat_cmds~$reload_cmds $objlist $last_robj\"
+ fi
+ last_robj=$output_objdir/$output_la-${k}.$objext
+ k=`expr $k + 1`
+ output=$output_objdir/$output_la-${k}.$objext
+ objlist=$obj
+ len=1
+ 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~
+ eval concat_cmds=\"\${concat_cmds}$reload_cmds $objlist $last_robj\"
+
+ if ${skipped_export-false}; then
+ $show "generating symbol list for \`$libname.la'"
+ export_symbols="$output_objdir/$libname.exp"
+ $run $rm $export_symbols
+ libobjs=$output
+ # Append the command to create the export file.
+ eval concat_cmds=\"\$concat_cmds~$export_symbols_cmds\"
+ fi
+
+ # Set up a command to remove the reloadable object files
+ # after they are used.
+ i=0
+ while test "$i" -lt "$k"
+ do
+ i=`expr $i + 1`
+ delfiles="$delfiles $output_objdir/$output_la-${i}.$objext"
+ done
+
+ $echo "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"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+
+ 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\"
+ 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
+
+ # Append the command to remove the reloadable object files
+ # to the just-reset $cmds.
+ eval cmds=\"\$cmds~\$rm $delfiles\"
+ fi
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(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 "$mode" = relink; then
+ $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
+ $show "${rm}r $gentop"
+ $run ${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
+ $show "(cd $output_objdir && $rm $linkname && $LN_S $realname $linkname)"
+ $run 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 "$deplibs"; then
+ $echo "$modename: warning: \`-l' and \`-L' are ignored for objects" 1>&2
+ fi
+
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ $echo "$modename: warning: \`-dlopen' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$rpath"; then
+ $echo "$modename: warning: \`-rpath' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$xrpath"; then
+ $echo "$modename: warning: \`-R' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info' is ignored for objects" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for objects" 1>&2
+ fi
+
+ case $output in
+ *.lo)
+ if test -n "$objs$old_deplibs"; then
+ $echo "$modename: cannot build library object \`$output' from non-libtool objects" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ libobj="$output"
+ obj=`$echo "X$output" | $Xsed -e "$lo2o"`
+ ;;
+ *)
+ libobj=
+ obj="$output"
+ ;;
+ esac
+
+ # Delete the old objects.
+ $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 "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
+ else
+ gentop="$output_objdir/${obj}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $convenience
+ reload_conv_objs="$reload_objs $func_extract_archives_result"
+ fi
+ fi
+
+ # Create the old-style object.
+ reload_objs="$objs$old_deplibs "`$echo "X$libobjs" | $SP2NL | $Xsed -e '/\.'${libext}$'/d' -e '/\.lib$/d' -e "$lo2o" | $NL2SP`" $reload_conv_objs" ### testsuite: skip nested quoting test
+
+ output="$obj"
+ cmds=$reload_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+
+ # Exit if we aren't doing a library object file.
+ if test -z "$libobj"; then
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
+ exit $EXIT_SUCCESS
+ fi
+
+ if test "$build_libtool_libs" != yes; then
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${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"
+ # $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"
+ cmds=$reload_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ fi
+
+ if test -n "$gentop"; then
+ $show "${rm}r $gentop"
+ $run ${rm}r $gentop
+ fi
+
+ exit $EXIT_SUCCESS
+ ;;
+
+ prog)
+ case $host in
+ *cygwin*) output=`$echo $output | ${SED} -e 's,.exe$,,;s,$,.exe,'` ;;
+ esac
+ if test -n "$vinfo"; then
+ $echo "$modename: warning: \`-version-info' is ignored for programs" 1>&2
+ fi
+
+ if test -n "$release"; then
+ $echo "$modename: warning: \`-release' is ignored for programs" 1>&2
+ fi
+
+ if test "$preload" = yes; then
+ if test "$dlopen_support" = unknown && test "$dlopen_self" = unknown &&
+ test "$dlopen_self_static" = unknown; then
+ $echo "$modename: warning: \`AC_LIBTOOL_DLOPEN' not used. Assuming no dlopen support."
+ fi
+ fi
+
+ case $host in
+ *-*-rhapsody* | *-*-darwin1.[012])
+ # On Rhapsody replace the C library is the System framework
+ compile_deplibs=`$echo "X $compile_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ finalize_deplibs=`$echo "X $finalize_deplibs" | $Xsed -e 's/ -lc / -framework System /'`
+ ;;
+ esac
+
+ case $host in
+ *darwin*)
+ # Don't allow lazy linking, it breaks C++ global constructors
+ if test "$tagname" = CXX ; then
+ compile_command="$compile_command ${wl}-bind_at_load"
+ finalize_command="$finalize_command ${wl}-bind_at_load"
+ fi
+ ;;
+ 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 "*)
+ new_libs="$new_libs -L$path/$objdir" ;;
+ esac
+ ;;
+ esac
+ done
+ for deplib in $compile_deplibs; do
+ case $deplib in
+ -L*)
+ case " $new_libs " in
+ *" $deplib "*) ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ ;;
+ *) new_libs="$new_libs $deplib" ;;
+ esac
+ done
+ compile_deplibs="$new_libs"
+
+
+ compile_command="$compile_command $compile_deplibs"
+ finalize_command="$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 "*) ;;
+ *) finalize_rpath="$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"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$perm_rpath " in
+ *" $libdir "*) ;;
+ *) perm_rpath="$perm_rpath $libdir" ;;
+ esac
+ fi
+ case $host in
+ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
+ testbindir=`$echo "X$libdir" | $Xsed -e 's*/lib$*/bin*'`
+ case :$dllsearchpath: in
+ *":$libdir:"*) ;;
+ *) dllsearchpath="$dllsearchpath:$libdir";;
+ esac
+ case :$dllsearchpath: in
+ *":$testbindir:"*) ;;
+ *) dllsearchpath="$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"*)
+ ;;
+ *)
+ hardcode_libdirs="$hardcode_libdirs$hardcode_libdir_separator$libdir"
+ ;;
+ esac
+ fi
+ else
+ eval flag=\"$hardcode_libdir_flag_spec\"
+ rpath="$rpath $flag"
+ fi
+ elif test -n "$runpath_var"; then
+ case "$finalize_perm_rpath " in
+ *" $libdir "*) ;;
+ *) finalize_perm_rpath="$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 "X$compile_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ fi
+
+ dlsyms=
+ if test -n "$dlfiles$dlprefiles" || test "$dlself" != no; then
+ if test -n "$NM" && test -n "$global_symbol_pipe"; then
+ dlsyms="${outputname}S.c"
+ else
+ $echo "$modename: not configured to extract global symbols from dlpreopened files" 1>&2
+ fi
+ fi
+
+ if test -n "$dlsyms"; then
+ case $dlsyms in
+ "") ;;
+ *.c)
+ # Discover the nlist of each of the dlfiles.
+ nlist="$output_objdir/${outputname}.nm"
+
+ $show "$rm $nlist ${nlist}S ${nlist}T"
+ $run $rm "$nlist" "${nlist}S" "${nlist}T"
+
+ # Parse the name list into a source file.
+ $show "creating $output_objdir/$dlsyms"
+
+ test -z "$run" && $echo > "$output_objdir/$dlsyms" "\
+/* $dlsyms - symbol resolution table for \`$outputname' dlsym emulation. */
+/* Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP */
+
+#ifdef __cplusplus
+extern \"C\" {
+#endif
+
+/* Prevent the only kind of declaration conflicts we can make. */
+#define lt_preloaded_symbols some_other_symbol
+
+/* External symbol declarations for the compiler. */\
+"
+
+ if test "$dlself" = yes; then
+ $show "generating symbol list for \`$output'"
+
+ test -z "$run" && $echo ': @PROGRAM@ ' > "$nlist"
+
+ # Add our own program objects to the symbol list.
+ progfiles=`$echo "X$objs$old_deplibs" | $SP2NL | $Xsed -e "$lo2o" | $NL2SP`
+ for arg in $progfiles; do
+ $show "extracting global C symbols from \`$arg'"
+ $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -n "$exclude_expsyms"; then
+ $run eval '$EGREP -v " ($exclude_expsyms)$" "$nlist" > "$nlist"T'
+ $run eval '$mv "$nlist"T "$nlist"'
+ fi
+
+ if test -n "$export_symbols_regex"; then
+ $run eval '$EGREP -e "$export_symbols_regex" "$nlist" > "$nlist"T'
+ $run eval '$mv "$nlist"T "$nlist"'
+ fi
+
+ # Prepare the list of exported symbols
+ if test -z "$export_symbols"; then
+ export_symbols="$output_objdir/$outputname.exp"
+ $run $rm $export_symbols
+ $run eval "${SED} -n -e '/^: @PROGRAM@ $/d' -e 's/^.* \(.*\)$/\1/p' "'< "$nlist" > "$export_symbols"'
+ case $host in
+ *cygwin* | *mingw* )
+ $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ $run eval 'cat "$export_symbols" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ else
+ $run eval "${SED} -e 's/\([].[*^$]\)/\\\\\1/g' -e 's/^/ /' -e 's/$/$/'"' < "$export_symbols" > "$output_objdir/$outputname.exp"'
+ $run eval 'grep -f "$output_objdir/$outputname.exp" < "$nlist" > "$nlist"T'
+ $run eval 'mv "$nlist"T "$nlist"'
+ case $host in
+ *cygwin* | *mingw* )
+ $run eval "echo EXPORTS "'> "$output_objdir/$outputname.def"'
+ $run eval 'cat "$nlist" >> "$output_objdir/$outputname.def"'
+ ;;
+ esac
+ fi
+ fi
+
+ for arg in $dlprefiles; do
+ $show "extracting global C symbols from \`$arg'"
+ name=`$echo "$arg" | ${SED} -e 's%^.*/%%'`
+ $run eval '$echo ": $name " >> "$nlist"'
+ $run eval "$NM $arg | $global_symbol_pipe >> '$nlist'"
+ done
+
+ if test -z "$run"; then
+ # 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/$dlsyms"'
+ else
+ $echo '/* NONE */' >> "$output_objdir/$dlsyms"
+ fi
+
+ $echo >> "$output_objdir/$dlsyms" "\
+
+#undef lt_preloaded_symbols
+
+#if defined (__STDC__) && __STDC__
+# define lt_ptr void *
+#else
+# define lt_ptr char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+"
+
+ case $host in
+ *cygwin* | *mingw* )
+ $echo >> "$output_objdir/$dlsyms" "\
+/* DATA imports from DLLs on WIN32 can't be const, because
+ runtime relocations are performed -- see ld's documentation
+ on pseudo-relocs */
+struct {
+"
+ ;;
+ * )
+ $echo >> "$output_objdir/$dlsyms" "\
+const struct {
+"
+ ;;
+ esac
+
+
+ $echo >> "$output_objdir/$dlsyms" "\
+ const char *name;
+ lt_ptr address;
+}
+lt_preloaded_symbols[] =
+{\
+"
+
+ eval "$global_symbol_to_c_name_address" < "$nlist" >> "$output_objdir/$dlsyms"
+
+ $echo >> "$output_objdir/$dlsyms" "\
+ {0, (lt_ptr) 0}
+};
+
+/* This works around a problem in FreeBSD linker */
+#ifdef FREEBSD_WORKAROUND
+static const void *lt_preloaded_setup() {
+ return lt_preloaded_symbols;
+}
+#endif
+
+#ifdef __cplusplus
+}
+#endif\
+"
+ fi
+
+ pic_flag_for_symtable=
+ 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*)
+ case "$compile_command " in
+ *" -static "*) ;;
+ *) pic_flag_for_symtable=" $pic_flag -DFREEBSD_WORKAROUND";;
+ esac;;
+ *-*-hpux*)
+ case "$compile_command " in
+ *" -static "*) ;;
+ *) pic_flag_for_symtable=" $pic_flag";;
+ esac
+ esac
+
+ # Now compile the dynamic symbol file.
+ $show "(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable \"$dlsyms\")"
+ $run eval '(cd $output_objdir && $LTCC $LTCFLAGS -c$no_builtin_flag$pic_flag_for_symtable "$dlsyms")' || exit $?
+
+ # Clean up the generated files.
+ $show "$rm $output_objdir/$dlsyms $nlist ${nlist}S ${nlist}T"
+ $run $rm "$output_objdir/$dlsyms" "$nlist" "${nlist}S" "${nlist}T"
+
+ # Transform the symbol file into the correct name.
+ case $host in
+ *cygwin* | *mingw* )
+ if test -f "$output_objdir/${outputname}.def" ; then
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
+ else
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+ fi
+ ;;
+ * )
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+ ;;
+ esac
+ ;;
+ *)
+ $echo "$modename: unknown suffix for \`$dlsyms'" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ 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 "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
+ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
+ fi
+
+ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+ # Replace the output file specification.
+ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP`
+ link_command="$compile_command$compile_rpath"
+
+ # We have no uninstalled library dependencies, so finalize right now.
+ $show "$link_command"
+ $run eval "$link_command"
+ exit_status=$?
+
+ # Delete the generated files.
+ if test -n "$dlsyms"; then
+ $show "$rm $output_objdir/${outputname}S.${objext}"
+ $run $rm "$output_objdir/${outputname}S.${objext}"
+ fi
+
+ exit $exit_status
+ fi
+
+ if test -n "$shlibpath_var"; then
+ # We should set the shlibpath_var
+ rpath=
+ for dir in $temp_rpath; do
+ case $dir in
+ [\\/]* | [A-Za-z]:[\\/]*)
+ # Absolute path.
+ rpath="$rpath$dir:"
+ ;;
+ *)
+ # Relative path: add a thisdir entry.
+ rpath="$rpath\$thisdir/$dir:"
+ ;;
+ esac
+ done
+ temp_rpath="$rpath"
+ 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
+ rpath="$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
+ rpath="$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 "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
+ # Delete the old output file.
+ $run $rm $output
+ # Link the executable and exit
+ $show "$link_command"
+ $run eval "$link_command" || exit $?
+ 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"
+
+ $echo "$modename: warning: this platform does not like uninstalled shared libraries" 1>&2
+ $echo "$modename: \`$output' will be relinked during installation" 1>&2
+ else
+ if test "$fast_install" != no; then
+ link_command="$finalize_var$compile_command$finalize_rpath"
+ if test "$fast_install" = yes; then
+ relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP`
+ 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 "X$link_command" | $Xsed -e 's%@OUTPUT@%'"$output_objdir/$outputname"'%g'`
+
+ # Delete the old output files.
+ $run $rm $output $output_objdir/$outputname $output_objdir/lt-$outputname
+
+ $show "$link_command"
+ $run eval "$link_command" || exit $?
+
+ # Now create the wrapper script.
+ $show "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}\" || 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
+ var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+ relink_command="$var=\"$var_value\"; export $var; $relink_command"
+ fi
+ done
+ relink_command="(cd `pwd`; $relink_command)"
+ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
+ fi
+
+ # Quote $echo for shipping.
+ if test "X$echo" = "X$SHELL $progpath --fallback-echo"; then
+ case $progpath in
+ [\\/]* | [A-Za-z]:[\\/]*) qecho="$SHELL $progpath --fallback-echo";;
+ *) qecho="$SHELL `pwd`/$progpath --fallback-echo";;
+ esac
+ qecho=`$echo "X$qecho" | $Xsed -e "$sed_quote_subst"`
+ else
+ qecho=`$echo "X$echo" | $Xsed -e "$sed_quote_subst"`
+ fi
+
+ # Only actually do things if our run command is non-null.
+ if test -z "$run"; then
+ # win32 will think the script is a binary if it has
+ # a .exe suffix, so we strip it off here.
+ case $output in
+ *.exe) output=`$echo $output|${SED} 's,.exe$,,'` ;;
+ esac
+ # test for cygwin because mv fails w/o .exe extensions
+ case $host in
+ *cygwin*)
+ exeext=.exe
+ outputname=`$echo $outputname|${SED} 's,.exe$,,'` ;;
+ *) exeext= ;;
+ esac
+ case $host in
+ *cygwin* | *mingw* )
+ output_name=`basename $output`
+ output_path=`dirname $output`
+ 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
+
+ cat > $cwrappersource <<EOF
+
+/* $cwrappersource - temporary wrapper executable for $objdir/$outputname
+ Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+
+ 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.
+
+ Currently, it simply execs the wrapper *script* "/bin/sh $output",
+ but could eventually absorb all of the scripts functionality and
+ exec $objdir/$outputname directly.
+*/
+EOF
+ cat >> $cwrappersource<<"EOF"
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <malloc.h>
+#include <stdarg.h>
+#include <assert.h>
+#include <string.h>
+#include <ctype.h>
+#include <sys/stat.h>
+
+#if defined(PATH_MAX)
+# define LT_PATHMAX PATH_MAX
+#elif defined(MAXPATHLEN)
+# define LT_PATHMAX MAXPATHLEN
+#else
+# define LT_PATHMAX 1024
+#endif
+
+#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
+# 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 */
+
+#define XMALLOC(type, num) ((type *) xmalloc ((num) * sizeof(type)))
+#define XFREE(stale) do { \
+ if (stale) { free ((void *) stale); stale = 0; } \
+} while (0)
+
+/* -DDEBUG is fairly common in CFLAGS. */
+#undef DEBUG
+#if defined DEBUGWRAPPER
+# define DEBUG(format, ...) fprintf(stderr, format, __VA_ARGS__)
+#else
+# define DEBUG(format, ...)
+#endif
+
+const char *program_name = NULL;
+
+void * xmalloc (size_t num);
+char * xstrdup (const char *string);
+const char * base_name (const char *name);
+char * find_executable(const char *wrapper);
+int check_executable(const char *path);
+char * strendzap(char *str, const char *pat);
+void lt_fatal (const char *message, ...);
+
+int
+main (int argc, char *argv[])
+{
+ char **newargz;
+ int i;
+
+ program_name = (char *) xstrdup (base_name (argv[0]));
+ DEBUG("(main) argv[0] : %s\n",argv[0]);
+ DEBUG("(main) program_name : %s\n",program_name);
+ newargz = XMALLOC(char *, argc+2);
+EOF
+
+ cat >> $cwrappersource <<EOF
+ newargz[0] = (char *) xstrdup("$SHELL");
+EOF
+
+ cat >> $cwrappersource <<"EOF"
+ newargz[1] = find_executable(argv[0]);
+ if (newargz[1] == NULL)
+ lt_fatal("Couldn't find %s", argv[0]);
+ DEBUG("(main) found exe at : %s\n",newargz[1]);
+ /* we know the script has the same name, without the .exe */
+ /* so make sure newargz[1] doesn't end in .exe */
+ strendzap(newargz[1],".exe");
+ for (i = 1; i < argc; i++)
+ newargz[i+1] = xstrdup(argv[i]);
+ newargz[argc+1] = NULL;
+
+ for (i=0; i<argc+1; i++)
+ {
+ DEBUG("(main) newargz[%d] : %s\n",i,newargz[i]);
+ ;
+ }
+
+EOF
+
+ case $host_os in
+ mingw*)
+ cat >> $cwrappersource <<EOF
+ execv("$SHELL",(char const **)newargz);
+EOF
+ ;;
+ *)
+ cat >> $cwrappersource <<EOF
+ execv("$SHELL",newargz);
+EOF
+ ;;
+ esac
+
+ cat >> $cwrappersource <<"EOF"
+ return 127;
+}
+
+void *
+xmalloc (size_t num)
+{
+ void * p = (void *) malloc (num);
+ if (!p)
+ lt_fatal ("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;
+
+ DEBUG("(check_executable) : %s\n", path ? (*path ? path : "EMPTY!") : "NULL!");
+ if ((!path) || (!*path))
+ return 0;
+
+ if ((stat (path, &st) >= 0) &&
+ (
+ /* MinGW & native WIN32 do not support S_IXOTH or S_IXGRP */
+#if defined (S_IXOTH)
+ ((st.st_mode & S_IXOTH) == S_IXOTH) ||
+#endif
+#if defined (S_IXGRP)
+ ((st.st_mode & S_IXGRP) == S_IXGRP) ||
+#endif
+ ((st.st_mode & S_IXUSR) == S_IXUSR))
+ )
+ return 1;
+ else
+ return 0;
+}
+
+/* Searches for the full path of the wrapper. Returns
+ newly allocated full path name if found, NULL otherwise */
+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;
+
+ DEBUG("(find_executable) : %s\n", wrapper ? (*wrapper ? wrapper : "EMPTY!") : "NULL!");
+
+ 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 ("getcwd failed");
+ 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 ("getcwd failed");
+ 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 *
+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;
+}
+
+static void
+lt_error_core (int exit_status, const char * mode,
+ const char * message, va_list ap)
+{
+ fprintf (stderr, "%s: %s: ", program_name, mode);
+ vfprintf (stderr, message, ap);
+ fprintf (stderr, ".\n");
+
+ if (exit_status >= 0)
+ exit (exit_status);
+}
+
+void
+lt_fatal (const char *message, ...)
+{
+ va_list ap;
+ va_start (ap, message);
+ lt_error_core (EXIT_FAILURE, "FATAL", message, ap);
+ va_end (ap);
+}
+EOF
+ # we should really use a build-platform specific compiler
+ # here, but OTOH, the wrappers (shell script and this C one)
+ # are only useful if you want to execute the "real" binary.
+ # Since the "real" binary is built for $host, then this
+ # wrapper might as well be built for $host, too.
+ $run $LTCC $LTCFLAGS -s -o $cwrapper $cwrappersource
+ ;;
+ esac
+ $rm $output
+ trap "$rm $output; exit $EXIT_FAILURE" 1 2 15
+
+ $echo > $output "\
+#! $SHELL
+
+# $output - temporary wrapper script for $objdir/$outputname
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# 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.
+Xsed='${SED} -e 1s/^X//'
+sed_quote_subst='$sed_quote_subst'
+
+# Be Bourne compatible (taken from Autoconf:_AS_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
+
+# 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 variable:
+ 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
+ echo=\"$qecho\"
+ file=\"\$0\"
+ # Make sure echo works.
+ if test \"X\$1\" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+ elif test \"X\`(\$echo '\t') 2>/dev/null\`\" = 'X\t'; then
+ # Yippee, \$echo works!
+ :
+ else
+ # Restart under the correct shell, and then maybe \$echo will work.
+ exec $SHELL \"\$0\" --no-reexec \${1+\"\$@\"}
+ fi
+ fi\
+"
+ $echo >> $output "\
+
+ # Find the directory that this script lives in.
+ thisdir=\`\$echo \"X\$file\" | \$Xsed -e '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 \"X\$file\" | \$Xsed -e '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 \"X\$file\" | \$Xsed -e 's%^.*/%%'\`
+ file=\`ls -ld \"\$thisdir/\$file\" | ${SED} -n 's/.*-> //p'\`
+ done
+
+ # Try to get the absolute directory name.
+ absdir=\`cd \"\$thisdir\" && pwd\`
+ test -n \"\$absdir\" && thisdir=\"\$absdir\"
+"
+
+ if test "$fast_install" = yes; then
+ $echo >> $output "\
+ 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 >> $output "\
+
+ # 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 $EXIT_FAILURE
+ fi
+ fi
+
+ $mv \"\$progdir/\$file\" \"\$progdir/\$program\" 2>/dev/null ||
+ { $rm \"\$progdir/\$program\";
+ $mv \"\$progdir/\$file\" \"\$progdir/\$program\"; }
+ $rm \"\$progdir/\$file\"
+ fi"
+ else
+ $echo >> $output "\
+ program='$outputname'
+ progdir=\"\$thisdir/$objdir\"
+"
+ fi
+
+ $echo >> $output "\
+
+ if test -f \"\$progdir/\$program\"; then"
+
+ # Export our shlibpath_var if we have one.
+ if test "$shlibpath_overrides_runpath" = yes && test -n "$shlibpath_var" && test -n "$temp_rpath"; then
+ $echo >> $output "\
+ # 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 \"X\$$shlibpath_var\" | \$Xsed -e 's/::*\$//'\`
+
+ export $shlibpath_var
+"
+ fi
+
+ # fixup the dll searchpath if we need to.
+ if test -n "$dllsearchpath"; then
+ $echo >> $output "\
+ # Add the dll search path components to the executable PATH
+ PATH=$dllsearchpath:\$PATH
+"
+ fi
+
+ $echo >> $output "\
+ if test \"\$libtool_execute_magic\" != \"$magic\"; then
+ # Run the actual program with our arguments.
+"
+ case $host in
+ # Backslashes separate directories on plain windows
+ *-*-mingw | *-*-os2*)
+ $echo >> $output "\
+ exec \"\$progdir\\\\\$program\" \${1+\"\$@\"}
+"
+ ;;
+
+ *)
+ $echo >> $output "\
+ exec \"\$progdir/\$program\" \${1+\"\$@\"}
+"
+ ;;
+ esac
+ $echo >> $output "\
+ \$echo \"\$0: cannot exec \$program \$*\"
+ exit $EXIT_FAILURE
+ 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 $EXIT_FAILURE
+ fi
+fi\
+"
+ chmod +x $output
+ fi
+ 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"
+ 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"
+ fi
+ addlibs="$old_convenience"
+ fi
+
+ if test -n "$addlibs"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ func_extract_archives $gentop $addlibs
+ oldobjs="$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
+ # 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
+ $echo "X$obj" | $Xsed -e 's%^.*/%%'
+ done | sort | sort -uc >/dev/null 2>&1); then
+ :
+ else
+ $echo "copying selected object files to avoid basename conflicts..."
+
+ if test -z "$gentop"; then
+ gentop="$output_objdir/${outputname}x"
+ generated="$generated $gentop"
+
+ $show "${rm}r $gentop"
+ $run ${rm}r "$gentop"
+ $show "$mkdir $gentop"
+ $run $mkdir "$gentop"
+ exit_status=$?
+ if test "$exit_status" -ne 0 && test ! -d "$gentop"; then
+ exit $exit_status
+ fi
+ fi
+
+ save_oldobjs=$oldobjs
+ oldobjs=
+ counter=1
+ for obj in $save_oldobjs
+ do
+ objbase=`$echo "X$obj" | $Xsed -e 's%^.*/%%'`
+ case " $oldobjs " in
+ " ") oldobjs=$obj ;;
+ *[\ /]"$objbase "*)
+ while :; do
+ # Make sure we don't pick an alternate name that also
+ # overlaps.
+ newobj=lt$counter-$objbase
+ counter=`expr $counter + 1`
+ case " $oldobjs " in
+ *[\ /]"$newobj "*) ;;
+ *) if test ! -f "$gentop/$newobj"; then break; fi ;;
+ esac
+ done
+ $show "ln $obj $gentop/$newobj || cp $obj $gentop/$newobj"
+ $run ln "$obj" "$gentop/$newobj" ||
+ $run cp "$obj" "$gentop/$newobj"
+ oldobjs="$oldobjs $gentop/$newobj"
+ ;;
+ *) oldobjs="$oldobjs $obj" ;;
+ esac
+ done
+ fi
+
+ eval cmds=\"$old_archive_cmds\"
+
+ if len=`expr "X$cmds" : ".*"` &&
+ test "$len" -le "$max_cmd_len" || test "$max_cmd_len" -le -1; then
+ cmds=$old_archive_cmds
+ else
+ # the command line is too long to link in one step, link in parts
+ $echo "using piecewise archive linking..."
+ save_RANLIB=$RANLIB
+ RANLIB=:
+ objlist=
+ concat_cmds=
+ save_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
+ for obj in $save_oldobjs
+ do
+ oldobjs="$objlist $obj"
+ objlist="$objlist $obj"
+ eval test_cmds=\"$old_archive_cmds\"
+ if len=`expr "X$test_cmds" : ".*" 2>/dev/null` &&
+ test "$len" -le "$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=
+ 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
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ eval cmd=\"$cmd\"
+ IFS="$save_ifs"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ done
+
+ if test -n "$generated"; then
+ $show "${rm}r$generated"
+ $run ${rm}r$generated
+ fi
+
+ # Now create the libtool archive.
+ case $output in
+ *.la)
+ old_library=
+ test "$build_old_libs" = yes && old_library="$libname.$libext"
+ $show "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}\" || 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
+ var_value=`$echo "X$var_value" | $Xsed -e "$sed_quote_subst"`
+ relink_command="$var=\"$var_value\"; 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 "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
+ if test "$hardcode_automatic" = yes ; then
+ relink_command=
+ fi
+
+
+ # Only create the output if not a dry run.
+ if test -z "$run"; then
+ 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)
+ name=`$echo "X$deplib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $deplib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$deplib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdependency_libs="$newdependency_libs $libdir/$name"
+ ;;
+ *) newdependency_libs="$newdependency_libs $deplib" ;;
+ esac
+ done
+ dependency_libs="$newdependency_libs"
+ newdlfiles=
+ for lib in $dlfiles; do
+ name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdlfiles="$newdlfiles $libdir/$name"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ name=`$echo "X$lib" | $Xsed -e 's%^.*/%%'`
+ eval libdir=`${SED} -n -e 's/^libdir=\(.*\)$/\1/p' $lib`
+ if test -z "$libdir"; then
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ newdlprefiles="$newdlprefiles $libdir/$name"
+ done
+ dlprefiles="$newdlprefiles"
+ else
+ newdlfiles=
+ for lib in $dlfiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlfiles="$newdlfiles $abs"
+ done
+ dlfiles="$newdlfiles"
+ newdlprefiles=
+ for lib in $dlprefiles; do
+ case $lib in
+ [\\/]* | [A-Za-z]:[\\/]*) abs="$lib" ;;
+ *) abs=`pwd`"/$lib" ;;
+ esac
+ newdlprefiles="$newdlprefiles $abs"
+ done
+ dlprefiles="$newdlprefiles"
+ fi
+ $rm $output
+ # place dlname in correct position for cygwin
+ tdlname=$dlname
+ case $host,$output,$installed,$module,$dlname in
+ *cygwin*,*lai,yes,no,*.dll | *mingw*,*lai,yes,no,*.dll) tdlname=../bin/$dlname ;;
+ esac
+ $echo > $output "\
+# $outputname - a libtool library file
+# Generated by $PROGRAM - GNU $PACKAGE $VERSION$TIMESTAMP
+#
+# 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'
+
+# Libraries that this one depends upon.
+dependency_libs='$dependency_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
+ fi
+
+ # Do a symbolic link so that the libtool archive can be found in
+ # LD_LIBRARY_PATH before the program is installed.
+ $show "(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)"
+ $run eval '(cd $output_objdir && $rm $outputname && $LN_S ../$outputname $outputname)' || exit $?
+ ;;
+ esac
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool install mode
+ install)
+ modename="$modename: install"
+
+ # 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.
+ $echo "X$nonopt" | grep shtool > /dev/null; then
+ # Aesthetically quote it.
+ arg=`$echo "X$nonopt" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$arg "
+ arg="$1"
+ shift
+ else
+ install_prog=
+ arg=$nonopt
+ fi
+
+ # The real first argument should be the name of the installation program.
+ # Aesthetically quote it.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$install_prog$arg"
+
+ # We need to accept at least all the BSD install flags.
+ dest=
+ files=
+ opts=
+ prev=
+ install_type=
+ isdir=no
+ stripme=
+ for arg
+ do
+ if test -n "$dest"; then
+ files="$files $dest"
+ dest=$arg
+ continue
+ fi
+
+ case $arg in
+ -d) isdir=yes ;;
+ -f)
+ case " $install_prog " in
+ *[\\\ /]cp\ *) ;;
+ *) prev=$arg ;;
+ esac
+ ;;
+ -g | -m | -o) prev=$arg ;;
+ -s)
+ stripme=" -s"
+ continue
+ ;;
+ -*)
+ ;;
+ *)
+ # If the previous option needed an argument, then skip it.
+ if test -n "$prev"; then
+ prev=
+ else
+ dest=$arg
+ continue
+ fi
+ ;;
+ esac
+
+ # Aesthetically quote the argument.
+ arg=`$echo "X$arg" | $Xsed -e "$sed_quote_subst"`
+ case $arg in
+ *[\[\~\#\^\&\*\(\)\{\}\|\;\<\>\?\'\ \ ]*|*]*|"")
+ arg="\"$arg\""
+ ;;
+ esac
+ install_prog="$install_prog $arg"
+ done
+
+ if test -z "$install_prog"; then
+ $echo "$modename: you must specify an install program" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test -n "$prev"; then
+ $echo "$modename: the \`$prev' option requires an argument" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test -z "$files"; then
+ if test -z "$dest"; then
+ $echo "$modename: no file or destination specified" 1>&2
+ else
+ $echo "$modename: you must specify a destination" 1>&2
+ fi
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Strip any trailing slash from the destination.
+ dest=`$echo "X$dest" | $Xsed -e 's%/$%%'`
+
+ # Check to see that the destination is a directory.
+ test -d "$dest" && isdir=yes
+ if test "$isdir" = yes; then
+ destdir="$dest"
+ destname=
+ else
+ destdir=`$echo "X$dest" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$destdir" = "X$dest" && destdir=.
+ destname=`$echo "X$dest" | $Xsed -e 's%^.*/%%'`
+
+ # Not a directory, so check to see that there is only one file specified.
+ set dummy $files
+ if test "$#" -gt 2; then
+ $echo "$modename: \`$dest' is not a directory" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ fi
+ case $destdir in
+ [\\/]* | [A-Za-z]:[\\/]*) ;;
+ *)
+ for file in $files; do
+ case $file in
+ *.lo) ;;
+ *)
+ $echo "$modename: \`$destdir' must be an absolute directory name" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ 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.
+ staticlibs="$staticlibs $file"
+ ;;
+
+ *.la)
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$file' is not a valid libtool archive" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ library_names=
+ old_library=
+ relink_command=
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Add the libdir to current_libdirs if it is the destination.
+ if test "X$destdir" = "X$libdir"; then
+ case "$current_libdirs " in
+ *" $libdir "*) ;;
+ *) current_libdirs="$current_libdirs $libdir" ;;
+ esac
+ else
+ # Note the libdir as a future libdir.
+ case "$future_libdirs " in
+ *" $libdir "*) ;;
+ *) future_libdirs="$future_libdirs $libdir" ;;
+ esac
+ fi
+
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`/
+ test "X$dir" = "X$file/" && dir=
+ dir="$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 "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.
+ if test "$inst_prefix_dir" = "$destdir"; then
+ $echo "$modename: error: cannot install \`$file' to a directory not ending in $libdir" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ if test -n "$inst_prefix_dir"; then
+ # Stick the inst_prefix_dir data into the link command.
+ relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP`
+ else
+ relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP`
+ fi
+
+ $echo "$modename: warning: relinking \`$file'" 1>&2
+ $show "$relink_command"
+ if $run eval "$relink_command"; then :
+ else
+ $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ fi
+
+ # See the names of the shared library.
+ set dummy $library_names
+ if test -n "$2"; then
+ realname="$2"
+ shift
+ shift
+
+ srcname="$realname"
+ test -n "$relink_command" && srcname="$realname"T
+
+ # Install the shared library and build the symlinks.
+ $show "$install_prog $dir/$srcname $destdir/$realname"
+ $run eval "$install_prog $dir/$srcname $destdir/$realname" || exit $?
+ if test -n "$stripme" && test -n "$striplib"; then
+ $show "$striplib $destdir/$realname"
+ $run 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
+ if test "$linkname" != "$realname"; then
+ $show "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+ $run eval "(cd $destdir && { $LN_S -f $realname $linkname || { $rm $linkname && $LN_S $realname $linkname; }; })"
+ fi
+ done
+ fi
+
+ # Do each command in the postinstall commands.
+ lib="$destdir/$realname"
+ cmds=$postinstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || {
+ lt_exit=$?
+
+ # Restore the uninstalled library and exit
+ if test "$mode" = relink; then
+ $run eval '(cd $output_objdir && $rm ${realname}T && $mv ${realname}U $realname)'
+ fi
+
+ exit $lt_exit
+ }
+ done
+ IFS="$save_ifs"
+ fi
+
+ # Install the pseudo-library for information purposes.
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ instname="$dir/$name"i
+ $show "$install_prog $instname $destdir/$name"
+ $run eval "$install_prog $instname $destdir/$name" || exit $?
+
+ # Maybe install the static library, too.
+ test -n "$old_library" && staticlibs="$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
+ destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ destfile="$destdir/$destfile"
+ fi
+
+ # Deduce the name of the destination old-style object file.
+ case $destfile in
+ *.lo)
+ staticdest=`$echo "X$destfile" | $Xsed -e "$lo2o"`
+ ;;
+ *.$objext)
+ staticdest="$destfile"
+ destfile=
+ ;;
+ *)
+ $echo "$modename: cannot copy a libtool object to \`$destfile'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ # Install the libtool object if requested.
+ if test -n "$destfile"; then
+ $show "$install_prog $file $destfile"
+ $run eval "$install_prog $file $destfile" || exit $?
+ fi
+
+ # Install the old object if enabled.
+ if test "$build_old_libs" = yes; then
+ # Deduce the name of the old-style object file.
+ staticobj=`$echo "X$file" | $Xsed -e "$lo2o"`
+
+ $show "$install_prog $staticobj $staticdest"
+ $run 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
+ destfile=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ 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
+ file=`$echo $file|${SED} 's,.exe$,,'`
+ stripped_ext=".exe"
+ fi
+ ;;
+ esac
+
+ # Do a test to see if this is really a libtool program.
+ case $host in
+ *cygwin*|*mingw*)
+ wrapper=`$echo $file | ${SED} -e 's,.exe$,,'`
+ ;;
+ *)
+ wrapper=$file
+ ;;
+ esac
+ if (${SED} -e '4q' $wrapper | grep "^# Generated by .*$PACKAGE")>/dev/null 2>&1; then
+ notinst_deplibs=
+ relink_command=
+
+ # Note that it is not necessary on cygwin/mingw to append a dot to
+ # foo even if both foo 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.
+ #
+ # If there is no directory component, then add one.
+ case $wrapper in
+ */* | *\\*) . ${wrapper} ;;
+ *) . ./${wrapper} ;;
+ esac
+
+ # Check the variables that should have been set.
+ if test -z "$notinst_deplibs"; then
+ $echo "$modename: invalid libtool wrapper script \`$wrapper'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ finalize=yes
+ for lib in $notinst_deplibs; do
+ # Check to see that each library is installed.
+ libdir=
+ if test -f "$lib"; then
+ # If there is no directory component, then add one.
+ case $lib in
+ */* | *\\*) . $lib ;;
+ *) . ./$lib ;;
+ esac
+ fi
+ libfile="$libdir/"`$echo "X$lib" | $Xsed -e 's%^.*/%%g'` ### testsuite: skip nested quoting test
+ if test -n "$libdir" && test ! -f "$libfile"; then
+ $echo "$modename: warning: \`$lib' has not been installed in \`$libdir'" 1>&2
+ finalize=no
+ fi
+ done
+
+ relink_command=
+ # Note that it is not necessary on cygwin/mingw to append a dot to
+ # foo even if both foo 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.
+ #
+ # If there is no directory component, then add one.
+ case $wrapper in
+ */* | *\\*) . ${wrapper} ;;
+ *) . ./${wrapper} ;;
+ esac
+
+ outputname=
+ if test "$fast_install" = no && test -n "$relink_command"; then
+ if test "$finalize" = yes && test -z "$run"; then
+ tmpdir=`func_mktempdir`
+ file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+ outputname="$tmpdir/$file"
+ # Replace the output file specification.
+ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP`
+
+ $show "$relink_command"
+ if $run eval "$relink_command"; then :
+ else
+ $echo "$modename: error: relink \`$file' with the above command before installing it" 1>&2
+ ${rm}r "$tmpdir"
+ continue
+ fi
+ file="$outputname"
+ else
+ $echo "$modename: warning: cannot relink \`$file'" 1>&2
+ fi
+ else
+ # Install the binary that we compiled earlier.
+ file=`$echo "X$file$stripped_ext" | $Xsed -e "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)
+ destfile=`$echo $destfile | ${SED} -e 's,.exe$,,'`
+ ;;
+ esac
+ ;;
+ esac
+ $show "$install_prog$stripme $file $destfile"
+ $run eval "$install_prog\$stripme \$file \$destfile" || exit $?
+ test -n "$outputname" && ${rm}r "$tmpdir"
+ ;;
+ esac
+ done
+
+ for file in $staticlibs; do
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+
+ # Set up the ranlib parameters.
+ oldlib="$destdir/$name"
+
+ $show "$install_prog $file $oldlib"
+ $run eval "$install_prog \$file \$oldlib" || exit $?
+
+ if test -n "$stripme" && test -n "$old_striplib"; then
+ $show "$old_striplib $oldlib"
+ $run eval "$old_striplib $oldlib" || exit $?
+ fi
+
+ # Do each command in the postinstall commands.
+ cmds=$old_postinstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || exit $?
+ done
+ IFS="$save_ifs"
+ done
+
+ if test -n "$future_libdirs"; then
+ $echo "$modename: warning: remember to run \`$progname --finish$future_libdirs'" 1>&2
+ fi
+
+ if test -n "$current_libdirs"; then
+ # Maybe just do a dry run.
+ test -n "$run" && current_libdirs=" -n$current_libdirs"
+ exec_cmd='$SHELL $progpath $preserve_args --finish$current_libdirs'
+ else
+ exit $EXIT_SUCCESS
+ fi
+ ;;
+
+ # libtool finish mode
+ finish)
+ modename="$modename: finish"
+ libdirs="$nonopt"
+ admincmds=
+
+ if test -n "$finish_cmds$finish_eval" && test -n "$libdirs"; then
+ for dir
+ do
+ libdirs="$libdirs $dir"
+ done
+
+ for libdir in $libdirs; do
+ if test -n "$finish_cmds"; then
+ # Do each command in the finish commands.
+ cmds=$finish_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd" || admincmds="$admincmds
+ $cmd"
+ done
+ IFS="$save_ifs"
+ fi
+ if test -n "$finish_eval"; then
+ # Do the single finish_eval.
+ eval cmds=\"$finish_eval\"
+ $run eval "$cmds" || admincmds="$admincmds
+ $cmds"
+ fi
+ done
+ fi
+
+ # Exit here if they wanted silent mode.
+ test "$show" = : && exit $EXIT_SUCCESS
+
+ $echo "X----------------------------------------------------------------------" | $Xsed
+ $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"
+ $echo "more information, such as the ld(1) and ld.so(8) manual pages."
+ $echo "X----------------------------------------------------------------------" | $Xsed
+ exit $EXIT_SUCCESS
+ ;;
+
+ # libtool execute mode
+ execute)
+ modename="$modename: execute"
+
+ # The first argument is the command name.
+ cmd="$nonopt"
+ if test -z "$cmd"; then
+ $echo "$modename: you must specify a COMMAND" 1>&2
+ $echo "$help"
+ exit $EXIT_FAILURE
+ fi
+
+ # Handle -dlopen flags immediately.
+ for file in $execute_dlfiles; do
+ if test ! -f "$file"; then
+ $echo "$modename: \`$file' is not a file" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ dir=
+ case $file in
+ *.la)
+ # Check to see that this really is a libtool archive.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then :
+ else
+ $echo "$modename: \`$lib' is not a valid libtool archive" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ # Read the libtool library.
+ dlname=
+ library_names=
+
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Skip this library if it cannot be dlopened.
+ if test -z "$dlname"; then
+ # Warn if it was a shared library.
+ test -n "$library_names" && $echo "$modename: warning: \`$file' was not linked with \`-export-dynamic'"
+ continue
+ fi
+
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$file" && dir=.
+
+ if test -f "$dir/$objdir/$dlname"; then
+ dir="$dir/$objdir"
+ else
+ $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+ exit $EXIT_FAILURE
+ fi
+ ;;
+
+ *.lo)
+ # Just add the directory containing the .lo file.
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ test "X$dir" = "X$file" && dir=.
+ ;;
+
+ *)
+ $echo "$modename: warning \`-dlopen' is ignored for non-libtool libraries and objects" 1>&2
+ 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
+ -*) ;;
+ *)
+ # Do a test to see if this is really a libtool program.
+ if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ # If there is no directory component, then add one.
+ case $file in
+ */* | *\\*) . $file ;;
+ *) . ./$file ;;
+ esac
+
+ # Transform arg to wrapped name.
+ file="$progdir/$program"
+ fi
+ ;;
+ esac
+ # Quote arguments (to preserve shell metacharacters).
+ file=`$echo "X$file" | $Xsed -e "$sed_quote_subst"`
+ args="$args \"$file\""
+ done
+
+ if test -z "$run"; 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 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
+ 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
+ ;;
+
+ # libtool clean and uninstall mode
+ clean | uninstall)
+ modename="$modename: $mode"
+ 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) rm="$rm $arg"; rmforce=yes ;;
+ -*) rm="$rm $arg" ;;
+ *) files="$files $arg" ;;
+ esac
+ done
+
+ if test -z "$rm"; then
+ $echo "$modename: you must specify an RM program" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+
+ rmdirs=
+
+ origobjdir="$objdir"
+ for file in $files; do
+ dir=`$echo "X$file" | $Xsed -e 's%/[^/]*$%%'`
+ if test "X$dir" = "X$file"; then
+ dir=.
+ objdir="$origobjdir"
+ else
+ objdir="$dir/$origobjdir"
+ fi
+ name=`$echo "X$file" | $Xsed -e 's%^.*/%%'`
+ test "$mode" = uninstall && objdir="$dir"
+
+ # Remember objdir for removal later, being careful to avoid duplicates
+ if test "$mode" = clean; then
+ case " $rmdirs " in
+ *" $objdir "*) ;;
+ *) rmdirs="$rmdirs $objdir" ;;
+ 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 (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ . $dir/$name
+
+ # Delete the libtool libraries and symlinks.
+ for n in $library_names; do
+ rmfiles="$rmfiles $objdir/$n"
+ done
+ test -n "$old_library" && rmfiles="$rmfiles $objdir/$old_library"
+
+ case "$mode" in
+ clean)
+ case " $library_names " in
+ # " " in the beginning catches empty $dlname
+ *" $dlname "*) ;;
+ *) rmfiles="$rmfiles $objdir/$dlname" ;;
+ esac
+ test -n "$libdir" && rmfiles="$rmfiles $objdir/$name $objdir/${name}i"
+ ;;
+ uninstall)
+ if test -n "$library_names"; then
+ # Do each command in the postuninstall commands.
+ cmds=$postuninstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd"
+ if test "$?" -ne 0 && test "$rmforce" != yes; then
+ exit_status=1
+ fi
+ done
+ IFS="$save_ifs"
+ fi
+
+ if test -n "$old_library"; then
+ # Do each command in the old_postuninstall commands.
+ cmds=$old_postuninstall_cmds
+ save_ifs="$IFS"; IFS='~'
+ for cmd in $cmds; do
+ IFS="$save_ifs"
+ eval cmd=\"$cmd\"
+ $show "$cmd"
+ $run eval "$cmd"
+ if test "$?" -ne 0 && test "$rmforce" != yes; then
+ exit_status=1
+ fi
+ done
+ IFS="$save_ifs"
+ fi
+ # FIXME: should reinstall the best remaining shared library.
+ ;;
+ esac
+ fi
+ ;;
+
+ *.lo)
+ # Possibly a libtool object, so verify it.
+ if (${SED} -e '2q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+
+ # Read the .lo file
+ . $dir/$name
+
+ # Add PIC object to the list of files to remove.
+ if test -n "$pic_object" \
+ && test "$pic_object" != none; then
+ rmfiles="$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
+ rmfiles="$rmfiles $dir/$non_pic_object"
+ fi
+ fi
+ ;;
+
+ *)
+ if test "$mode" = clean ; then
+ noexename=$name
+ case $file in
+ *.exe)
+ file=`$echo $file|${SED} 's,.exe$,,'`
+ noexename=`$echo $name|${SED} 's,.exe$,,'`
+ # $file with .exe has already been added to rmfiles,
+ # add $file without .exe
+ rmfiles="$rmfiles $file"
+ ;;
+ esac
+ # Do a test to see if this is a libtool program.
+ if (${SED} -e '4q' $file | grep "^# Generated by .*$PACKAGE") >/dev/null 2>&1; then
+ relink_command=
+ . $dir/$noexename
+
+ # note $name still contains .exe if it was in $file originally
+ # as does the version of $file that was added into $rmfiles
+ rmfiles="$rmfiles $objdir/$name $objdir/${name}S.${objext}"
+ if test "$fast_install" = yes && test -n "$relink_command"; then
+ rmfiles="$rmfiles $objdir/lt-$name"
+ fi
+ if test "X$noexename" != "X$name" ; then
+ rmfiles="$rmfiles $objdir/lt-${noexename}.c"
+ fi
+ fi
+ fi
+ ;;
+ esac
+ $show "$rm $rmfiles"
+ $run $rm $rmfiles || exit_status=1
+ done
+ objdir="$origobjdir"
+
+ # Try to remove the ${objdir}s in the directories where we deleted files
+ for dir in $rmdirs; do
+ if test -d "$dir"; then
+ $show "rmdir $dir"
+ $run rmdir $dir >/dev/null 2>&1
+ fi
+ done
+
+ exit $exit_status
+ ;;
+
+ "")
+ $echo "$modename: you must specify a MODE" 1>&2
+ $echo "$generic_help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+ esac
+
+ if test -z "$exec_cmd"; then
+ $echo "$modename: invalid operation mode \`$mode'" 1>&2
+ $echo "$generic_help" 1>&2
+ exit $EXIT_FAILURE
+ fi
+fi # test -z "$show_help"
+
+if test -n "$exec_cmd"; then
+ eval exec $exec_cmd
+ exit $EXIT_FAILURE
+fi
+
+# We need to display help for each of the modes.
+case $mode in
+"") $echo \
+"Usage: $modename [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
+ --finish same as \`--mode=finish'
+ --help display this help message and exit
+ --mode=MODE use operation mode MODE [default=inferred from MODE-ARGS]
+ --quiet same as \`--silent'
+ --silent don't print informational messages
+ --tag=TAG use configuration variables from tag TAG
+ --version print version information
+
+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. Try \`$modename --help --mode=MODE' for
+a more detailed description of MODE.
+
+Report bugs to <bug-libtool@gnu.org>."
+ exit $EXIT_SUCCESS
+ ;;
+
+clean)
+ $echo \
+"Usage: $modename [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: $modename [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
+ -prefer-pic try to building PIC objects only
+ -prefer-non-pic try to building non-PIC objects only
+ -static always build a \`.o' file suitable for static linking
+
+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: $modename [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: $modename [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: $modename [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 rest of the components are interpreted as arguments to that command (only
+BSD-compatible install options are recognized)."
+ ;;
+
+link)
+ $echo \
+"Usage: $modename [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
+ -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
+ -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]
+
+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: $modename [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."
+ ;;
+
+*)
+ $echo "$modename: invalid operation mode \`$mode'" 1>&2
+ $echo "$help" 1>&2
+ exit $EXIT_FAILURE
+ ;;
+esac
+
+$echo
+$echo "Try \`$modename --help' for more information about other modes."
+
+exit $?
+
+# 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
+disable_libs=shared
+# ### END LIBTOOL TAG CONFIG: disable-shared
+
+# ### BEGIN LIBTOOL TAG CONFIG: disable-static
+disable_libs=static
+# ### END LIBTOOL TAG CONFIG: disable-static
+
+# Local Variables:
+# mode:shell-script
+# sh-indentation:2
+# End:
diff --git a/parted-1.8.7/build-aux/mdate-sh b/parted-1.8.7/build-aux/mdate-sh
new file mode 100755
index 0000000..83d2700
--- /dev/null
+++ b/parted-1.8.7/build-aux/mdate-sh
@@ -0,0 +1,205 @@
+#!/bin/sh
+# Get modification time of a file or directory and pretty-print it.
+
+scriptversion=2007-03-30.02
+
+# Copyright (C) 1995, 1996, 1997, 2003, 2004, 2005, 2007 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, 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.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+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 time of FILE.
+
+Report bugs to <bug-automake@gnu.org>.
+EOF
+ exit $?
+ ;;
+ -v | --v*)
+ echo "mdate-sh $scriptversion"
+ exit $?
+ ;;
+esac
+
+# 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
+ 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
+
+# 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-end: "$"
+# End:
diff --git a/parted-1.8.7/build-aux/missing b/parted-1.8.7/build-aux/missing
new file mode 100755
index 0000000..1c8ff70
--- /dev/null
+++ b/parted-1.8.7/build-aux/missing
@@ -0,0 +1,367 @@
+#! /bin/sh
+# Common stub for a few missing GNU programs while installing.
+
+scriptversion=2006-05-10.23
+
+# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
+# 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, 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.
+
+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]
+
+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
+
+# 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).
+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 $1 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 1
+ 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-end: "$"
+# End:
diff --git a/parted-1.8.7/build-aux/texinfo.tex b/parted-1.8.7/build-aux/texinfo.tex
new file mode 100644
index 0000000..0f3c750
--- /dev/null
+++ b/parted-1.8.7/build-aux/texinfo.tex
@@ -0,0 +1,8641 @@
+% 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{2007-05-04.09}
+%
+% Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+% 2007 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 2, or (at
+% your option) any later version.
+%
+% This texinfo.tex file is distributed in the hope that it will be
+% useful, but WITHOUT ANY WARRANTY; without even the implied warranty
+% of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+% General Public License for more details.
+%
+% You should have received a copy of the GNU General Public License
+% along with this texinfo.tex file; see the file COPYING. If not, write
+% to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+% Boston, MA 02110-1301, USA.
+%
+% As a special exception, when this file is read by TeX when processing
+% a Texinfo source document, you may use the result without
+% restriction. (This has been our intent since Texinfo was invented.)
+%
+% 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\ptexrbrace=\}
+\let\ptexslash=\/
+\let\ptexstar=\*
+\let\ptext=\t
+
+% 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\colonChar = `\:
+\chardef\commaChar = `\,
+\chardef\dashChar = `\-
+\chardef\dotChar = `\.
+\chardef\exclamChar= `\!
+\chardef\lquoteChar= `\`
+\chardef\questChar = `\?
+\chardef\rquoteChar= `\'
+\chardef\semiChar = `\;
+\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}
+
+% @| 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).
+%
+\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
+ }%
+ }%
+}
+
+% 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\undefined\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}
+
+% For @cropmarks command.
+% 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
+
+% 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).
+ \setbox\headlinebox = \vbox{\let\hsize=\pagewidth \makeheadline}%
+ \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 \unvbox#1
+\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 occurence 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.
+% (Similarily, 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 enviroments; they don't open a group. (The
+% implementation of @end takes care not to call \endgroup in this
+% special case.)
+
+
+% At runtime, 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
+}
+
+% Evironment mismatch, #1 expected:
+\def\badenverr{%
+ \errhelp = \EMsimple
+ \errmessage{This command can appear only \inenvironment\temp,
+ not \inenvironment\thisenv}%
+}
+\def\inenvironment#1{%
+ \ifx#1\empty
+ out 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, but... --kasal, 06nov03
+ \expandafter\checkenv\csname#1\endcsname
+ \csname E#1\endcsname
+ \endgroup
+ \fi
+}
+
+\newhelp\EMsimple{Press RETURN to continue.}
+
+
+%% Simple single-character @ commands
+
+% @@ prints an @
+% Kludge this until the fonts are right (grr).
+\def\@{{\tt\char64}}
+
+% This is turned off because it was never documented
+% and you can use @w{...} around a quote to suppress ligatures.
+%% Define @` and @' to be the same as ` and '
+%% but suppressing ligatures.
+%\def\`{{`}}
+%\def\'{{'}}
+
+% Used to generate quoted braces.
+\def\mylbrace {{\tt\char123}}
+\def\myrbrace {{\tt\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\, = \c
+\let\dotaccent = \.
+\def\ringaccent#1{{\accent23 #1}}
+\let\tieaccent = \t
+\let\ubaraccent = \b
+\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 \ptexi
+ \else\ifx\temp\jmacro \j
+ \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{\selectfonts\lllsize A}\vss}}%
+ \kern-.15em
+ \TeX
+}
+
+% 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
+
+% Old definition--didn't work.
+%\parseargdef\need{\par %
+%% This method tries to make TeX break the page naturally
+%% if the depth of the box does not fit.
+%{\baselineskip=0pt%
+%\vtop to #1\mil{\vfil}\kern -#1\mil\nobreak
+%\prevdepth=-1000pt
+%}}
+
+\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'.
+%
+\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
+}
+
+% @include file insert text of that file as input.
+%
+\def\include{\parseargusing\filenamecatcodes\includezzz}
+\def\includezzz#1{%
+ \pushthisfilestack
+ \def\thisfile{#1}%
+ {%
+ \makevalueexpandable
+ \def\temp{\input #1 }%
+ \expandafter
+ }\temp
+ \popthisfilestack
+}
+\def\filenamecatcodes{%
+ \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 = {}%
+}
+
+
+% @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 \ character.
+% FYI, plain.tex uses \\ as a temporary control sequence (why?), but
+% this is not advertised and we don't care. Texinfo does not
+% otherwise define @\.
+%
+% 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
+ $\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
+ \gdef\mathactive{%
+ \let^ = \ptexhat
+ \let< = \ptexless
+ \let> = \ptexgtr
+ \let+ = \ptexplus
+ }
+}
+
+% @bullet and @minus need the same treatment as @math, just above.
+\def\bullet{$\ptexbullet$}
+\def\minus{$-$}
+
+% @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
+}
+
+% @comma{} is so commas can be inserted into text without messing up
+% Texinfo's parsing.
+%
+\let\comma = ,
+
+% @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 \undefined,
+% borrowed from ifpdf.sty.
+\ifx\pdfoutput\undefined
+\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
+ \input pdfcolor
+ \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
+ \errhelp = \nopdfimagehelp
+ \errmessage{Could not find image file #1 for pdf}%
+ \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, 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.
+ % (Defined in pdfcolor.tex.)
+ \let\urlcolor = \BrickRed
+ \let\linkcolor = \BrickRed
+ \def\endlink{\Black\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\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
+ \leavevmode\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}}
+ \linkcolor #1\endlink}
+ \def\done{\edef\st{\global\noexpand\toksA={\the\toksB}}\st}
+\else
+ \let\pdfmkdest = \gobble
+ \let\pdfurl = \gobble
+ \let\endlink = \relax
+ \let\linkcolor = \relax
+ \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}}
+
+% 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}
+%
+\def\setleading#1{%
+ \normalbaselineskip = #1\relax
+ \normallineskip = \lineskipfactor\normalbaselineskip
+ \normalbaselines
+ \setbox\strutbox =\hbox{%
+ \vrule width0pt height\strutheightpercent\baselineskip
+ depth \strutdepthpercent \baselineskip
+ }%
+}
+
+%
+% PDF CMaps. See also LaTeX's t1.cmap.
+%
+% \cmapOT1
+\ifpdf
+ \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}%
+ }%
+\else
+ \expandafter\let\csname cmapOT1\endcsname\gobble
+ \expandafter\let\csname cmapOT1IT\endcsname\gobble
+ \expandafter\let\csname cmapOT1TT\endcsname\gobble
+\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
+
+
+% Use cm as the default font prefix.
+% To specify the font prefix, you must define \fontprefix
+% before you read in texinfo.tex.
+\ifx\fontprefix\undefined
+\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
+
+% 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
+
+% 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
+
+% 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\authorrm{\secrm}
+\def\authortt{\sectt}
+
+% 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
+
+% 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
+
+% 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
+
+% 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
+
+% reset the current fonts
+\textfonts
+\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
+
+% 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
+
+% 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
+
+% 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\authorrm{\secrm}
+\def\authortt{\sectt}
+
+% 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
+
+% 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
+
+% 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
+
+% 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
+
+% reduce space between paragraphs
+\divide\parskip by 2
+
+% reset the current fonts
+\textfonts
+\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\xword{10}
+\def\xiword{11}
+%
+\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{25pt}}
+\def\titlefont#1{{\titlefonts\rm #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}}
+
+% 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
+%
+% I wish the USA used A4 paper.
+% --karl, 24jan03.
+
+
+% Set up the default fonts, so we can use them for creating boxes.
+%
+\definetextfontsizexi
+
+% Define these so they can be easily changed for other fonts.
+\def\angleleft{$\langle$}
+\def\angleright{$\rangle$}
+
+% Count depth in font-changes, for error checks
+\newcount\fontdepth \fontdepth=0
+
+% 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}
+
+%% Add scribe-like font environments, plus @l for inline lisp (usually sans
+%% serif) and @ii for TeX italic
+
+% \smartitalic{ARG} outputs arg in italics, followed by an italic correction
+% unless the following character is such as not to need one.
+\def\smartitalicx{\ifx\next,\else\ifx\next-\else\ifx\next.\else
+ \ptexslash\fi\fi\fi}
+\def\smartslanted#1{{\ifusingtt\ttsl\sl #1}\futurelet\next\smartitalicx}
+\def\smartitalic#1{{\ifusingtt\ttsl\it #1}\futurelet\next\smartitalicx}
+
+% like \smartslanted except unconditionally uses \ttsl.
+% @var is set to this for defun arguments.
+\def\ttslanted#1{{\ttsl #1}\futurelet\next\smartitalicx}
+
+% like \smartslanted except unconditionally use \sl. We never want
+% ttsl for book titles, do we?
+\def\cite#1{{\sl #1}\futurelet\next\smartitalicx}
+
+\let\i=\smartitalic
+\let\slanted=\smartslanted
+\let\var=\smartslanted
+\let\dfn=\smartslanted
+\let\emph=\smartitalic
+
+% @b, explicit bold.
+\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
+
+\def\t#1{%
+ {\tt \rawbackslash \plainfrenchspacing #1}%
+ \null
+}
+\def\samp#1{`\tclose{#1}'\null}
+\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}}}}
+\def\key #1{{\nohyphenation \uppercase{#1}}\null}
+% The old definition, with no lozenge:
+%\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
+\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\def\code{\begingroup
+ \catcode\rquoteChar=\active \catcode\lquoteChar=\active
+ \let'\codequoteright \let`\codequoteleft
+ %
+ \catcode\dashChar=\active \catcode\underChar=\active
+ \ifallowcodebreaks
+ \let-\codedash
+ \let_\codeunder
+ \else
+ \let-\realdash
+ \let_\realunder
+ \fi
+ \codex
+ }
+}
+
+\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{}{}{}}%
+ {\_}%
+}
+\def\codex #1{\tclose{#1}\endgroup}
+
+% 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'}%
+ \fi\fi
+}
+
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+
+% @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 option `\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\look}}\fi
+\else{\tclose{\kbdfont\look}}\fi}
+
+% For @indicateurl, @env, @command quotes seem unnecessary, so use \code.
+\let\indicateurl=\code
+\let\env=\code
+\let\command=\code
+
+% @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. Perhaps eventually put in
+% a hypertex \special here.
+%
+\def\uref#1{\douref #1,,,\finish}
+\def\douref#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}
+
+% @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
+
+% 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 }
+
+% 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}
+
+\def\kbd#1{\def\look{#1}\expandafter\kbdfoo\look??\par}
+
+% @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}
+
+% 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
+
+% @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
+}
+
+% @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
+}
+
+% @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\undefined
+\def\Orb{\mathhexbox20D}
+\fi
+
+
+\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}
+
+\def\authorfont{\authorrm \normalbaselineskip = 16pt \normalbaselines
+ \let\tt=\authortt}
+
+\parseargdef\title{%
+ \checkenv\titlepage
+ \leftline{\titlefonts\rm #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
+ {\authorfont \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}}
+
+
+% @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{%
+\global\evenheadline={\hfil} \global\evenfootline={\hfil}
+\global\oddheadline={\hfil} \global\oddfootline={\hfil}}
+\HEADINGSoff
+% 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\undefined
+\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
+ \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
+ \def\itemcontents{#1}%
+ % @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. Note that \everycr resets \everytab.
+\def\headitem{\checkenv\multitable \crcr \global\everytab={\bf}\the\everytab}%
+%
+% 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 encounter the problem it was intended to solve again.
+% --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 \undefined
+ % 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 in case \tex is in effect and \{ is a \delimiter again.
+ % But can't use \lbracecmd and \rbracecmd because texindex assumes
+ % braces and backslashes are used only as delimiters.
+ \let\{ = \mylbrace
+ \let\} = \myrbrace
+ %
+ % 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\_%
+ %
+ % Non-English letters.
+ \definedummyword\AA
+ \definedummyword\AE
+ \definedummyword\L
+ \definedummyword\OE
+ \definedummyword\O
+ \definedummyword\aa
+ \definedummyword\ae
+ \definedummyword\l
+ \definedummyword\oe
+ \definedummyword\o
+ \definedummyword\ss
+ \definedummyword\exclamdown
+ \definedummyword\questiondown
+ \definedummyword\ordf
+ \definedummyword\ordm
+ %
+ % 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\bullet
+ \definedummyword\comma
+ \definedummyword\copyright
+ \definedummyword\registeredsymbol
+ \definedummyword\dots
+ \definedummyword\enddots
+ \definedummyword\equiv
+ \definedummyword\error
+ \definedummyword\euro
+ \definedummyword\expansion
+ \definedummyword\minus
+ \definedummyword\pounds
+ \definedummyword\point
+ \definedummyword\print
+ \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\ringaccent
+ \definedummyword\tieaccent
+ \definedummyword\ubaraccent
+ \definedummyword\udotaccent
+ \definedummyword\dotless
+ %
+ % Texinfo font commands.
+ \definedummyword\b
+ \definedummyword\i
+ \definedummyword\r
+ \definedummyword\sc
+ \definedummyword\t
+ %
+ % Commands that take arguments.
+ \definedummyword\acronym
+ \definedummyword\cite
+ \definedummyword\code
+ \definedummyword\command
+ \definedummyword\dfn
+ \definedummyword\emph
+ \definedummyword\env
+ \definedummyword\file
+ \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}%
+ % Hopefully, all control words can become @asis.
+ \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\@{@}%
+ % how to handle braces?
+ \def\_{\normalunderscore}%
+ %
+ % Non-English letters.
+ \def\AA{AA}%
+ \def\AE{AE}%
+ \def\L{L}%
+ \def\OE{OE}%
+ \def\O{O}%
+ \def\aa{aa}%
+ \def\ae{ae}%
+ \def\l{l}%
+ \def\oe{oe}%
+ \def\o{o}%
+ \def\ss{ss}%
+ \def\exclamdown{!}%
+ \def\questiondown{?}%
+ \def\ordf{a}%
+ \def\ordm{o}%
+ %
+ \def\LaTeX{LaTeX}%
+ \def\TeX{TeX}%
+ %
+ % Assorted special characters.
+ % (The following {} will end up in the sort string, but that's ok.)
+ \def\bullet{bullet}%
+ \def\comma{,}%
+ \def\copyright{copyright}%
+ \def\registeredsymbol{R}%
+ \def\dots{...}%
+ \def\enddots{...}%
+ \def\equiv{==}%
+ \def\error{error}%
+ \def\euro{euro}%
+ \def\expansion{==>}%
+ \def\minus{-}%
+ \def\pounds{pounds}%
+ \def\point{.}%
+ \def\print{-|}%
+ \def\result{=>}%
+ \def\textdegree{degrees}%
+ %
+ % 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
+}
+
+\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
+ % -\skip0 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 frozes 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
+ %
+ % Swallow the left brace of the text (first parameter):
+ \afterassignment\doentry
+ \let\temp =
+}
+\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.
+
+% \unnumberedno is an oxymoron, of course. 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 this as the name of the chapter.
+% page headings and footings can use it. @section does likewise.
+% However, they are not reliable, because we don't use marks.
+\def\thischapter{}
+\def\thissection{}
+
+\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 achive this, remember the "biggest" unnum. sec. we are currently in:
+\chardef\unmlevel = \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 < \unmlevel
+ \chardef\unmlevel = \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 > \unmlevel
+ \def\headtype{U}%
+ \else
+ \chardef\unmlevel = 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
+ %
+ \message{\putwordChapter\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 apphead0 calls appendixzzz
+\def\appendixzzz#1{%
+ \global\secno=0 \global\subsecno=0 \global\subsubsecno=0
+ \global\advance\appendixno by 1
+ \gdef\chaplevelprefix{\appendixletter.}%
+ \resetallfloatnos
+ %
+ \def\appendixnum{\putwordAppendix\space \appendixletter}%
+ \message{\appendixnum}%
+ %
+ \chapmacro{#1}{Yappendix}{\appendixletter}%
+ %
+ \global\let\section = \appendixsec
+ \global\let\subsection = \appendixsubsec
+ \global\let\subsubsection = \appendixsubsubsec
+}
+
+\outer\parseargdef\unnumbered{\unnmhead0{#1}} % normally unnmhead0 calls unnumberedzzz
+\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}%
+}
+
+\outer\parseargdef\appendixsection{\apphead1{#1}} % normally calls appendixsectionzzz
+\def\appendixsectionzzz#1{%
+ \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
+ \sectionheading{#1}{sec}{Yappendix}{\appendixletter.\the\secno}%
+}
+\let\appendixsec\appendixsection
+
+\outer\parseargdef\unnumberedsec{\unnmhead1{#1}} % normally calls unnumberedseczzz
+\def\unnumberedseczzz#1{%
+ \global\subsecno=0 \global\subsubsecno=0 \global\advance\secno by 1
+ \sectionheading{#1}{sec}{Ynothing}{\the\unnumberedno.\the\secno}%
+}
+
+% Subsections.
+\outer\parseargdef\numberedsubsec{\numhead2{#1}} % normally calls numberedsubseczzz
+\def\numberedsubseczzz#1{%
+ \global\subsubsecno=0 \global\advance\subsecno by 1
+ \sectionheading{#1}{subsec}{Ynumbered}{\the\chapno.\the\secno.\the\subsecno}%
+}
+
+\outer\parseargdef\appendixsubsec{\apphead2{#1}} % normally calls appendixsubseczzz
+\def\appendixsubseczzz#1{%
+ \global\subsubsecno=0 \global\advance\subsecno by 1
+ \sectionheading{#1}{subsec}{Yappendix}%
+ {\appendixletter.\the\secno.\the\subsecno}%
+}
+
+\outer\parseargdef\unnumberedsubsec{\unnmhead2{#1}} %normally calls unnumberedsubseczzz
+\def\unnumberedsubseczzz#1{%
+ \global\subsubsecno=0 \global\advance\subsecno by 1
+ \sectionheading{#1}{subsec}{Ynothing}%
+ {\the\unnumberedno.\the\secno.\the\subsecno}%
+}
+
+% Subsubsections.
+\outer\parseargdef\numberedsubsubsec{\numhead3{#1}} % normally numberedsubsubseczzz
+\def\numberedsubsubseczzz#1{%
+ \global\advance\subsubsecno by 1
+ \sectionheading{#1}{subsubsec}{Ynumbered}%
+ {\the\chapno.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+\outer\parseargdef\appendixsubsubsec{\apphead3{#1}} % normally appendixsubsubseczzz
+\def\appendixsubsubseczzz#1{%
+ \global\advance\subsubsecno by 1
+ \sectionheading{#1}{subsubsec}{Yappendix}%
+ {\appendixletter.\the\secno.\the\subsecno.\the\subsubsecno}%
+}
+
+\outer\parseargdef\unnumberedsubsubsec{\unnmhead3{#1}} %normally unnumberedsubsubseczzz
+\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\raggedright
+ \rm #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}
+
+%%% Define plain chapter starts, and page on/off switching for it
+% Parameter controlling skip before chapter headings (if needed)
+
+\newskip\chapheadingskip
+
+\def\chapbreak{\dobreak \chapheadingskip {-4000}}
+\def\chappager{\par\vfill\supereject}
+\def\chapoddpage{\chappager \ifodd\pageno \else \hbox to 0pt{} \chappager\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{%
+ \pchapsepmacro
+ {%
+ \chapfonts \rm
+ %
+ % Have to define \thissection 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\thissection{#1}%
+ \gdef\thischaptername{#1}%
+ %
+ % Only insert the separating space if we have a chapter/appendix
+ % number, and don't print the unnumbered ``number''.
+ \def\temptype{#2}%
+ \ifx\temptype\Ynothingkeyword
+ \setbox0 = \hbox{}%
+ \def\toctype{unnchap}%
+ \gdef\thischapternum{}%
+ \gdef\thischapter{#1}%
+ \else\ifx\temptype\Yomitfromtockeyword
+ \setbox0 = \hbox{}% contents like unnumbered, but no toc entry
+ \def\toctype{omit}%
+ \gdef\thischapternum{}%
+ \gdef\thischapter{}%
+ \else\ifx\temptype\Yappendixkeyword
+ \setbox0 = \hbox{\putwordAppendix{} #3\enspace}%
+ \def\toctype{app}%
+ \xdef\thischapternum{\appendixletter}%
+ % We don't substitute the actual chapter name into \thischapter
+ % because we don't want its macros evaluated now. And we don't
+ % use \thissection because that changes with each section.
+ %
+ \xdef\thischapter{\putwordAppendix{} \appendixletter:
+ \noexpand\thischaptername}%
+ \else
+ \setbox0 = \hbox{#3\enspace}%
+ \def\toctype{numchap}%
+ \xdef\thischapternum{\the\chapno}%
+ \xdef\thischapter{\putwordChapter{} \the\chapno:
+ \noexpand\thischaptername}%
+ \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.
+ \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \raggedright
+ \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\raggedright
+ \rm #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 {\rm #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\sectionheading#1#2#3#4{%
+ {%
+ % Switch to the right set of fonts.
+ \csname #2fonts\endcsname \rm
+ %
+ % Insert space above the heading.
+ \csname #2headingbreak\endcsname
+ %
+ % Only insert the space after the number if we have a section number.
+ \def\sectionlevel{#2}%
+ \def\temptype{#3}%
+ %
+ \ifx\temptype\Ynothingkeyword
+ \setbox0 = \hbox{}%
+ \def\toctype{unn}%
+ \gdef\thissection{#1}%
+ \else\ifx\temptype\Yomitfromtockeyword
+ % for @headings -- no section number, don't include in toc,
+ % and don't redefine \thissection.
+ \setbox0 = \hbox{}%
+ \def\toctype{omit}%
+ \let\sectionlevel=\empty
+ \else\ifx\temptype\Yappendixkeyword
+ \setbox0 = \hbox{#4\enspace}%
+ \def\toctype{app}%
+ \gdef\thissection{#1}%
+ \else
+ \setbox0 = \hbox{#4\enspace}%
+ \def\toctype{num}%
+ \gdef\thissection{#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 \raggedright
+ \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.
+ \def\thischapter{}%
+ \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\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, ...
+
+% 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.
+
+% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
+%
+% Since these characters are used in examples, it should be an even number of
+% \tt widths. Each \tt character is 1en, so two makes it 1em.
+%
+\def\point{$\star$}
+\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
+\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
+\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}
+\def\equiv{\leavevmode\lower.1ex\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}
+
+% @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 tex @ character.
+
+\envdef\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
+ \escapechar=`\\
+ %
+ \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
+ \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.
+\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
+ \parindent = 0pt
+ \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
+}
+
+% 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 by one command:
+\def\makedispenv #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 synonyms:
+\def\maketwodispenvs #1#2#3{
+ \makedispenv{#1}{#3}
+ \makedispenv{#2}{#3}
+}
+
+% @lisp: indented, narrowed, typewriter font; @example: same as @lisp.
+%
+% @smallexample and @smalllisp: use smaller fonts.
+% Originally contributed by Pavel@xerox.
+%
+\maketwodispenvs {lisp}{example}{%
+ \nonfillstart
+ \tt\quoteexpand
+ \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
+ \gobble % eat return
+}
+% @display/@smalldisplay: same as @lisp except keep current font.
+%
+\makedispenv {display}{%
+ \nonfillstart
+ \gobble
+}
+
+% @format/@smallformat: same as @display except don't narrow margins.
+%
+\makedispenv{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
+ \gobble
+}
+\let\Eflushright = \afterenvbreak
+
+
+% @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.
+%
+\envdef\quotation{%
+ {\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\undefined\else
+ % indent a bit.
+ \leftline{\kern 2\leftskip \sl ---\quotationauthor}%
+ \fi
+ {\parskip=0pt \afterenvbreak}%
+}
+
+% 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\"%
+}
+%
+% [Knuth] p. 380
+\def\uncatcodespecials{%
+ \def\do##1{\catcode`##1=\other}\dospecials}
+%
+% [Knuth] pp. 380,381,391
+% Disable Spanish ligatures ?` and !` of \tt font
+\begingroup
+ \catcode`\`=\active\gdef`{\relax\lq}
+\endgroup
+%
+% 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}%
+ \catcode`\`=\active
+ \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
+%
+\def\starttabbox{\setbox0=\hbox\bgroup}
+
+% Allow an option to not replace quotes with a regular directed right
+% quote/apostrophe (char 0x27), but instead use 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 SETcodequoteundirected\endcsname\relax
+ '%
+ \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 SETcodequotebacktick\endcsname\relax
+ `%
+ \else
+ \char'22
+ \fi
+}
+%
+\begingroup
+ \catcode`\^^I=\active
+ \gdef\tabexpand{%
+ \catcode`\^^I=\active
+ \def^^I{\leavevmode\egroup
+ \dimen0=\wd0 % the width so far, or since the previous tab
+ \divide\dimen0 by\tabw
+ \multiply\dimen0 by\tabw % compute previous multiple of \tabw
+ \advance\dimen0 by\tabw % advance to next multiple of \tabw
+ \wd0=\dimen0 \box0 \starttabbox
+ }%
+ }
+ \catcode`\'=\active
+ \gdef\rquoteexpand{\catcode\rquoteChar=\active \def'{\codequoteright}}%
+ %
+ \catcode`\`=\active
+ \gdef\lquoteexpand{\catcode\lquoteChar=\active \def`{\codequoteleft}}%
+ %
+ \gdef\quoteexpand{\rquoteexpand \lquoteexpand}%
+\endgroup
+
+% start the verbatim environment.
+\def\setupverbatim{%
+ \let\nonarrowing = t%
+ \nonfillstart
+ % Easiest (and conventionally used) font for verbatim
+ \tt
+ \def\par{\leavevmode\egroup\box0\endgraf}%
+ \catcode`\`=\active
+ \tabexpand
+ \quoteexpand
+ % 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
+ \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 minor 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
+ \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 remainnig 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
+ \parseargusing\activeparens{\printdefunline#3}%
+ }%
+ \def#2{\dodefunx#1}%
+ \def#3%
+}
+
+%%% 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}%
+ \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 {} }
+
+%%% Type:
+% @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{%
+ % Get the values of \leftskip and \rightskip as they were outside the @def...
+ \advance\leftskip by -\defbodyindent
+ %
+ % How we'll format the type 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.
+ % 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
+ % The continuations:
+ \dimen2=\hsize \advance\dimen2 by -\defargsindent
+ % (plain.tex says that \dimen1 should be used only as global.)
+ \parshape 2 0in \dimen0 \defargsindent \dimen2
+ %
+ % Put the type name to 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}% return value type
+ \ifx\temp\empty\else \tclose{\temp} \fi
+ #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.
+ \let\var=\ttslanted
+ #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\ }}
+
+\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
+}
+\def\badparencount{%
+ \errmessage{Unbalanced parentheses in @def}%
+ \global\parencount=0
+}
+\def\badbrackcount{%
+ \errmessage{Unbalanced square braces 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\undefined
+ \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 \example
+ \spaceisspace
+ %
+ % Append \endinput to make sure that TeX does not see the ending newline.
+ % I've verified that it is necessary both for e-TeX and for ordinary TeX
+ % --kasal, 29nov03
+ \scantokens{#1\endinput}%
+ \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 \.
+
+% 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{%
+ \catcode`\"=\other
+ \catcode`\+=\other
+ \catcode`\<=\other
+ \catcode`\>=\other
+ \catcode`\@=\other
+ \catcode`\^=\other
+ \catcode`\_=\other
+ \catcode`\|=\other
+ \catcode`\~=\other
+}
+
+\def\scanargctxt{%
+ \scanctxt
+ \catcode`\\=\other
+ \catcode`\^^M=\other
+}
+
+\def\macrobodyctxt{%
+ \scanctxt
+ \catcode`\{=\other
+ \catcode`\}=\other
+ \catcode`\^^M=\other
+ \usembodybackslash
+}
+
+\def\macroargctxt{%
+ \scanctxt
+ \catcode`\\=\other
+}
+
+% \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\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. Just 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 \thissection,
+% 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{\thissection}%
+ \immediate \writexrdef{title}{\the\toks0 }%
+ \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
+ \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout
+ }%
+ \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
+ \leavevmode
+ \getfilename{#4}%
+ {\indexnofonts
+ \turnoffactive
+ % See comments at \activebackslashdouble.
+ {\activebackslashdouble \xdef\pdfxrefdest{#1}%
+ \backslashparens\pdfxrefdest}%
+ %
+ \ifnum\filenamelength>0
+ \startlink attr{/Border [0 0 0]}%
+ goto file{\the\filename.pdf} name{\pdfxrefdest}%
+ \else
+ \startlink attr{/Border [0 0 0]}%
+ goto name{\pdfmkpgn{\pdfxrefdest}}%
+ \fi
+ }%
+ \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
+ \message{\linenumber Undefined cross reference `#1'.}%
+ \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.
+% Similarily, 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\undefined
+ \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 this 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\bigskip
+ % 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
+ \line\bgroup
+ \fi
+ %
+ % 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 \egroup \bigbreak \fi % space after the 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 \thissection 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\thissection{\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
+% \thissection 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,}
+
+% @documentlanguage is usually given very early, just after
+% @setfilename. If done too late, it may not override everything
+% properly. Single argument is the language abbreviation.
+% It would be nice if we could set up a hyphenation file here.
+%
+\parseargdef\documentlanguage{%
+ \tex % read txi-??.tex file in plain TeX.
+ % Read the file if it exists.
+ \openin 1 txi-#1.tex
+ \ifeof 1
+ \errhelp = \nolanghelp
+ \errmessage{Cannot read language file txi-#1.tex}%
+ \else
+ \input txi-#1.tex
+ \fi
+ \closein 1
+ \endgroup
+}
+\newhelp\nolanghelp{The given language definition file cannot be found or
+is empty. Maybe you need to install it? In the current directory
+should work if nowhere else does.}
+
+% 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
+ \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{~}
+ \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{\missingcharmsg{LEFT-POINTING DOUBLE ANGLE QUOTATION MARK}}
+ \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{\missingcharmsg{RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK}}
+ \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{\missingcharmsg{LATIN CAPITAL LETTER ETH}}
+ \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{\missingcharmsg{LATIN CAPITAL LETTER THORN}}
+ \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{\missingcharmsg{LATIN SMALL LETTER ETH}}
+ \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{\missingcharmsg{LATIN SMALL LETTER THORN}}
+ \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{~}
+ \gdef^^a1{\missingcharmsg{LATIN CAPITAL LETTER A WITH OGONEK}}
+ \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{\missingcharmsg{LATIN SMALL LETTER A WITH OGONEK}}
+ \gdef^^b2{\missingcharmsg{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{\missingcharmsg{LATIN CAPITAL LETTER E WITH OGONEK}}
+ \gdef^^cb{\"E}
+ \gdef^^cc{\v E}
+ \gdef^^cd{\'I}
+ \gdef^^ce{\^I}
+ \gdef^^cf{\v D}
+ %
+ \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER D WITH STROKE}}
+ \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{\missingcharmsg{LATIN SMALL LETTER E WITH OGONEK}}
+ \gdef^^eb{\"e}
+ \gdef^^ec{\v e}
+ \gdef^^ed{\'\i}
+ \gdef^^ee{\^\i}
+ \gdef^^ef{\v d}
+ %
+ \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER D WITH STROKE}}
+ \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{00AD}{\-}
+ \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
+ \DeclareUnicodeCharacter{00AF}{\={ }}
+
+ \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
+ \DeclareUnicodeCharacter{00B4}{\'{ }}
+ \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
+ \DeclareUnicodeCharacter{00BA}{\ordm}
+ \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{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{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{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{00FF}{\"y}
+
+ \DeclareUnicodeCharacter{0100}{\=A}
+ \DeclareUnicodeCharacter{0101}{\=a}
+ \DeclareUnicodeCharacter{0102}{\u{A}}
+ \DeclareUnicodeCharacter{0103}{\u{a}}
+ \DeclareUnicodeCharacter{0106}{\'C}
+ \DeclareUnicodeCharacter{0107}{\'c}
+ \DeclareUnicodeCharacter{0108}{\^C}
+ \DeclareUnicodeCharacter{0109}{\^c}
+ \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{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{2022}{\bullet}
+ \DeclareUnicodeCharacter{2026}{\dots}
+ \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 so finicky about underfull hboxes, either.
+\hbadness = 2000
+
+% Following George Bush, just 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
+ \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{46\baselineskip}{6in}%
+ {\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{51\baselineskip}{160mm}
+ {\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
+ \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.}
+
+% Define macros to output various characters with catcode for normal text.
+\catcode`\"=\other
+\catcode`\~=\other
+\catcode`\^=\other
+\catcode`\_=\other
+\catcode`\|=\other
+\catcode`\<=\other
+\catcode`\>=\other
+\catcode`\+=\other
+\catcode`\$=\other
+\def\normaldoublequote{"}
+\def\normaltilde{~}
+\def\normalcaret{^}
+\def\normalunderscore{_}
+\def\normalverticalbar{|}
+\def\normalless{<}
+\def\normalgreater{>}
+\def\normalplus{+}
+\def\normaldollar{$}%$ font-lock fix
+
+% 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\=@normalbackslash
+ @let"=@normaldoublequote
+ @let~=@normaltilde
+ @let^=@normalcaret
+ @let_=@normalunderscore
+ @let|=@normalverticalbar
+ @let<=@normalless
+ @let>=@normalgreater
+ @let+=@normalplus
+ @let$=@normaldollar %$ font-lock fix
+ @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 look ok in all fonts, so just make them not special.
+@catcode`@& = @other
+@catcode`@# = @other
+@catcode`@% = @other
+
+
+@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/parted-1.8.7/configure b/parted-1.8.7/configure
new file mode 100755
index 0000000..d091c4f
--- /dev/null
+++ b/parted-1.8.7/configure
@@ -0,0 +1,39257 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.61 for GNU parted 1.8.7.
+#
+# Report bugs to <bug-parted@gnu.org>.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006 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=:
+ # 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
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+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.)
+as_nl='
+'
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+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
+ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+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
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+if test "x$CONFIG_SHELL" = x; then
+ if (eval ":") 2>/dev/null; then
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+
+ if test $as_have_required = yes && (eval ":
+(as_func_return () {
+ (exit \$1)
+}
+as_func_success () {
+ as_func_return 0
+}
+as_func_failure () {
+ as_func_return 1
+}
+as_func_ret_success () {
+ return 0
+}
+as_func_ret_failure () {
+ return 1
+}
+
+exitcode=0
+if as_func_success; then
+ :
+else
+ exitcode=1
+ echo as_func_success failed.
+fi
+
+if as_func_failure; then
+ exitcode=1
+ echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+ :
+else
+ exitcode=1
+ echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+ exitcode=1
+ echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+ :
+else
+ exitcode=1
+ echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0) || { (exit 1); exit 1; }
+
+(
+ as_lineno_1=\$LINENO
+ as_lineno_2=\$LINENO
+ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
+ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
+") 2> /dev/null; then
+ :
+else
+ as_candidate_shells=
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ case $as_dir in
+ /*)
+ for as_base in sh bash ksh sh5; do
+ as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
+ done;;
+ esac
+done
+IFS=$as_save_IFS
+
+
+ for as_shell in $as_candidate_shells $SHELL; do
+ # Try only shells that exist, to save several forks.
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { ("$as_shell") 2> /dev/null <<\_ASEOF
+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
+
+
+:
+_ASEOF
+}; then
+ CONFIG_SHELL=$as_shell
+ as_have_required=yes
+ if { "$as_shell" 2> /dev/null <<\_ASEOF
+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
+
+
+:
+(as_func_return () {
+ (exit $1)
+}
+as_func_success () {
+ as_func_return 0
+}
+as_func_failure () {
+ as_func_return 1
+}
+as_func_ret_success () {
+ return 0
+}
+as_func_ret_failure () {
+ return 1
+}
+
+exitcode=0
+if as_func_success; then
+ :
+else
+ exitcode=1
+ echo as_func_success failed.
+fi
+
+if as_func_failure; then
+ exitcode=1
+ echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+ :
+else
+ exitcode=1
+ echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+ exitcode=1
+ echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = "$1" ); then
+ :
+else
+ exitcode=1
+ echo positional parameters were not saved.
+fi
+
+test $exitcode = 0) || { (exit 1); exit 1; }
+
+(
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
+
+_ASEOF
+}; then
+ break
+fi
+
+fi
+
+ done
+
+ if test "x$CONFIG_SHELL" != x; then
+ for as_var in BASH_ENV ENV
+ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ done
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+
+ if test $as_have_required = no; then
+ echo This script requires a shell more modern than all the
+ echo shells that I found on your system. Please install a
+ echo modern shell, or manually run the script under such a
+ echo shell if you do have one.
+ { (exit 1); exit 1; }
+fi
+
+
+fi
+
+fi
+
+
+
+(eval "as_func_return () {
+ (exit \$1)
+}
+as_func_success () {
+ as_func_return 0
+}
+as_func_failure () {
+ as_func_return 1
+}
+as_func_ret_success () {
+ return 0
+}
+as_func_ret_failure () {
+ return 1
+}
+
+exitcode=0
+if as_func_success; then
+ :
+else
+ exitcode=1
+ echo as_func_success failed.
+fi
+
+if as_func_failure; then
+ exitcode=1
+ echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+ :
+else
+ exitcode=1
+ echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+ exitcode=1
+ echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+ :
+else
+ exitcode=1
+ echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0") || {
+ echo No shell found that supports shell functions.
+ echo Please tell autoconf@gnu.org about your system,
+ echo including any error possibly output before this
+ echo message
+}
+
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line after each line using $LINENO; the second 'sed'
+ # does the real work. The second script uses 'N' to pair each
+ # line-number line with the line containing $LINENO, and appends
+ # trailing '-' during substitution so that $LINENO is not a special
+ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # scripts with optimization help from Paolo Bonzini. 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" ||
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+ case `echo 'x\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ *) ECHO_C='\c';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+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
+fi
+echo >conf$$.file
+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
+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=:
+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'"
+
+
+
+
+# Check that we are running under the correct shell.
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+case X$ECHO in
+X*--fallback-echo)
+ # Remove one level of quotation (which was required for Make).
+ ECHO=`echo "$ECHO" | sed 's,\\\\\$\\$0,'$0','`
+ ;;
+esac
+
+echo=${ECHO-echo}
+if test "X$1" = X--no-reexec; then
+ # Discard the --no-reexec flag, and continue.
+ shift
+elif test "X$1" = X--fallback-echo; then
+ # Avoid inline document here, it may be left over
+ :
+elif test "X`($echo '\t') 2>/dev/null`" = 'X\t' ; then
+ # Yippee, $echo works!
+ :
+else
+ # Restart under the correct shell.
+ exec $SHELL "$0" --no-reexec ${1+"$@"}
+fi
+
+if test "X$1" = X--fallback-echo; then
+ # used as fallback echo
+ shift
+ cat <<EOF
+$*
+EOF
+ exit 0
+fi
+
+# 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
+
+if test -z "$ECHO"; then
+if test "X${echo_test_string+set}" != Xset; then
+# find a string as large as possible, as long as the shell can cope with it
+ for cmd in 'sed 50q "$0"' 'sed 20q "$0"' 'sed 10q "$0"' 'sed 2q "$0"' 'echo test'; do
+ # expected sizes: less than 2Kb, 1Kb, 512 bytes, 16 bytes, ...
+ if (echo_test_string=`eval $cmd`) 2>/dev/null &&
+ echo_test_string=`eval $cmd` &&
+ (test "X$echo_test_string" = "X$echo_test_string") 2>/dev/null
+ then
+ break
+ fi
+ done
+fi
+
+if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ :
+else
+ # The Solaris, AIX, and Digital Unix default echo programs unquote
+ # backslashes. This makes it impossible to quote backslashes using
+ # echo "$something" | sed 's/\\/\\\\/g'
+ #
+ # So, first we look for a working echo in the user's PATH.
+
+ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
+ for dir in $PATH /usr/ucb; do
+ IFS="$lt_save_ifs"
+ if (test -f $dir/echo || test -f $dir/echo$ac_exeext) &&
+ test "X`($dir/echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($dir/echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$dir/echo"
+ break
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ if test "X$echo" = Xecho; then
+ # We didn't find a better echo, so look for alternatives.
+ if test "X`(print -r '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`(print -r "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # This shell has a builtin print -r that does the trick.
+ echo='print -r'
+ elif (test -f /bin/ksh || test -f /bin/ksh$ac_exeext) &&
+ test "X$CONFIG_SHELL" != X/bin/ksh; then
+ # If we have ksh, try running configure again with it.
+ ORIGINAL_CONFIG_SHELL=${CONFIG_SHELL-/bin/sh}
+ export ORIGINAL_CONFIG_SHELL
+ CONFIG_SHELL=/bin/ksh
+ export CONFIG_SHELL
+ exec $CONFIG_SHELL "$0" --no-reexec ${1+"$@"}
+ else
+ # Try using printf.
+ echo='printf %s\n'
+ if test "X`($echo '\t') 2>/dev/null`" = 'X\t' &&
+ echo_testing_string=`($echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ # Cool, printf works
+ :
+ elif echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($ORIGINAL_CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ CONFIG_SHELL=$ORIGINAL_CONFIG_SHELL
+ export CONFIG_SHELL
+ SHELL="$CONFIG_SHELL"
+ export SHELL
+ echo="$CONFIG_SHELL $0 --fallback-echo"
+ elif echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo '\t') 2>/dev/null` &&
+ test "X$echo_testing_string" = 'X\t' &&
+ echo_testing_string=`($CONFIG_SHELL "$0" --fallback-echo "$echo_test_string") 2>/dev/null` &&
+ test "X$echo_testing_string" = "X$echo_test_string"; then
+ echo="$CONFIG_SHELL $0 --fallback-echo"
+ else
+ # maybe with a smaller string...
+ prev=:
+
+ for cmd in 'echo test' 'sed 2q "$0"' 'sed 10q "$0"' 'sed 20q "$0"' 'sed 50q "$0"'; do
+ if (test "X$echo_test_string" = "X`eval $cmd`") 2>/dev/null
+ then
+ break
+ fi
+ prev="$cmd"
+ done
+
+ if test "$prev" != 'sed 50q "$0"'; then
+ echo_test_string=`eval $prev`
+ export echo_test_string
+ exec ${ORIGINAL_CONFIG_SHELL-${CONFIG_SHELL-/bin/sh}} "$0" ${1+"$@"}
+ else
+ # Oops. We lost completely, so just stick with echo.
+ echo=echo
+ fi
+ fi
+ fi
+ fi
+fi
+fi
+
+# Copy echo and quote the copy suitably for passing to libtool from
+# the Makefile, instead of quoting the original, which is used later.
+ECHO=$echo
+if test "X$ECHO" = "X$CONFIG_SHELL $0 --fallback-echo"; then
+ ECHO="$CONFIG_SHELL \\\$\$0 --fallback-echo"
+fi
+
+
+
+
+tagnames=${tagnames+${tagnames},}CXX
+
+tagnames=${tagnames+${tagnames},}F77
+
+exec 7<&0 </dev/null 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Identity of this package.
+PACKAGE_NAME='GNU parted'
+PACKAGE_TARNAME='parted'
+PACKAGE_VERSION='1.8.7'
+PACKAGE_STRING='GNU parted 1.8.7'
+PACKAGE_BUGREPORT='bug-parted@gnu.org'
+
+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"
+
+ac_header_list=
+ac_func_list=
+gt_needs=
+ac_subst_vars='SHELL
+PATH_SEPARATOR
+PACKAGE_NAME
+PACKAGE_TARNAME
+PACKAGE_VERSION
+PACKAGE_STRING
+PACKAGE_BUGREPORT
+exec_prefix
+prefix
+program_transform_name
+bindir
+sbindir
+libexecdir
+datarootdir
+datadir
+sysconfdir
+sharedstatedir
+localstatedir
+includedir
+oldincludedir
+docdir
+infodir
+htmldir
+dvidir
+pdfdir
+psdir
+libdir
+localedir
+mandir
+DEFS
+ECHO_C
+ECHO_N
+ECHO_T
+LIBS
+build_alias
+host_alias
+target_alias
+LT_RELEASE
+LT_CURRENT
+LT_REVISION
+LT_AGE
+INSTALL_PROGRAM
+INSTALL_SCRIPT
+INSTALL_DATA
+am__isrc
+CYGPATH_W
+PACKAGE
+VERSION
+ACLOCAL
+AUTOCONF
+AUTOMAKE
+AUTOHEADER
+MAKEINFO
+install_sh
+STRIP
+INSTALL_STRIP_PROGRAM
+mkdir_p
+AWK
+SET_MAKE
+am__leading_dot
+AMTAR
+am__tar
+am__untar
+build
+build_cpu
+build_vendor
+build_os
+host
+host_cpu
+host_vendor
+host_os
+OS
+PARTEDLDFLAGS
+CC
+CFLAGS
+LDFLAGS
+CPPFLAGS
+ac_ct_CC
+EXEEXT
+OBJEXT
+DEPDIR
+am__include
+am__quote
+AMDEP_TRUE
+AMDEP_FALSE
+AMDEPBACKSLASH
+CCDEPMODE
+am__fastdepCC_TRUE
+am__fastdepCC_FALSE
+CPP
+GREP
+EGREP
+RANLIB
+GL_COND_LIBTOOL_TRUE
+GL_COND_LIBTOOL_FALSE
+LTALLOCA
+ALLOCA
+ALLOCA_H
+GETOPT_H
+LIBINTL
+LTLIBINTL
+HAVE_LONG_LONG_INT
+HAVE_UNSIGNED_LONG_LONG_INT
+HAVE_INTTYPES_H
+HAVE_SYS_TYPES_H
+ABSOLUTE_STDINT_H
+HAVE_STDINT_H
+HAVE_SYS_INTTYPES_H
+HAVE_SYS_BITYPES_H
+BITSIZEOF_PTRDIFF_T
+BITSIZEOF_SIG_ATOMIC_T
+BITSIZEOF_SIZE_T
+BITSIZEOF_WCHAR_T
+BITSIZEOF_WINT_T
+HAVE_SIGNED_SIG_ATOMIC_T
+HAVE_SIGNED_WCHAR_T
+HAVE_SIGNED_WINT_T
+PTRDIFF_T_SUFFIX
+SIG_ATOMIC_T_SUFFIX
+SIZE_T_SUFFIX
+WCHAR_T_SUFFIX
+WINT_T_SUFFIX
+STDINT_H
+PRI_MACROS_BROKEN
+GNULIB_IMAXABS
+GNULIB_IMAXDIV
+GNULIB_STRTOIMAX
+GNULIB_STRTOUMAX
+HAVE_DECL_IMAXABS
+HAVE_DECL_IMAXDIV
+HAVE_DECL_STRTOIMAX
+HAVE_DECL_STRTOUMAX
+ABSOLUTE_INTTYPES_H
+PRIPTR_PREFIX
+INTTYPES_H
+GLIBC21
+STDBOOL_H
+HAVE__BOOL
+GNULIB_GETSUBOPT
+GNULIB_MKDTEMP
+GNULIB_MKSTEMP
+HAVE_GETSUBOPT
+HAVE_MKDTEMP
+REPLACE_MKSTEMP
+ABSOLUTE_STDLIB_H
+GNULIB_MEMMEM
+GNULIB_MEMPCPY
+GNULIB_MEMRCHR
+GNULIB_STPCPY
+GNULIB_STPNCPY
+GNULIB_STRCHRNUL
+GNULIB_STRDUP
+GNULIB_STRNDUP
+GNULIB_STRNLEN
+GNULIB_STRPBRK
+GNULIB_STRSEP
+GNULIB_STRCASESTR
+GNULIB_STRTOK_R
+GNULIB_MBSLEN
+GNULIB_MBSCHR
+GNULIB_MBSRCHR
+GNULIB_MBSSTR
+GNULIB_MBSCASECMP
+GNULIB_MBSNCASECMP
+GNULIB_MBSPCASECMP
+GNULIB_MBSCASESTR
+GNULIB_MBSCSPN
+GNULIB_MBSPBRK
+GNULIB_MBSSPN
+GNULIB_MBSSEP
+GNULIB_MBSTOK_R
+HAVE_DECL_MEMMEM
+HAVE_MEMPCPY
+HAVE_DECL_MEMRCHR
+HAVE_STPCPY
+HAVE_STPNCPY
+HAVE_STRCASECMP
+HAVE_DECL_STRNCASECMP
+HAVE_STRCHRNUL
+HAVE_DECL_STRDUP
+HAVE_STRNDUP
+HAVE_DECL_STRNDUP
+HAVE_DECL_STRNLEN
+HAVE_STRPBRK
+HAVE_STRSEP
+HAVE_STRCASESTR
+HAVE_DECL_STRTOK_R
+ABSOLUTE_STRING_H
+POW_LIB
+GNULIB_CHOWN
+GNULIB_DUP2
+GNULIB_FCHDIR
+GNULIB_FTRUNCATE
+GNULIB_GETCWD
+GNULIB_GETLOGIN_R
+GNULIB_READLINK
+GNULIB_SLEEP
+HAVE_DUP2
+HAVE_FTRUNCATE
+HAVE_READLINK
+HAVE_SLEEP
+HAVE_DECL_GETLOGIN_R
+REPLACE_CHOWN
+REPLACE_FCHDIR
+REPLACE_GETCWD
+HAVE_UNISTD_H
+ABSOLUTE_UNISTD_H
+ABSOLUTE_WCHAR_H
+WCHAR_H
+HAVE_ISWCNTRL
+HAVE_WINT_T
+ABSOLUTE_WCTYPE_H
+HAVE_WCTYPE_H
+WCTYPE_H
+SED
+LN_S
+ECHO
+AR
+CXX
+CXXFLAGS
+ac_ct_CXX
+CXXDEPMODE
+am__fastdepCXX_TRUE
+am__fastdepCXX_FALSE
+CXXCPP
+F77
+FFLAGS
+ac_ct_F77
+LIBTOOL
+USE_NLS
+MSGFMT
+GMSGFMT
+MSGFMT_015
+GMSGFMT_015
+XGETTEXT
+XGETTEXT_015
+MSGMERGE
+INTL_MACOSX_LIBS
+LIBICONV
+LTLIBICONV
+INTLLIBS
+POSUB
+DL_LIBS
+UUID_LIBS
+DM_LIBS
+SELINUX_LIBS
+REISER_LIBS
+PARTED_LIBS
+OS_LIBS
+INTLINCS
+COMPILE_FOR_S390_TRUE
+COMPILE_FOR_S390_FALSE
+PKG_CONFIG
+CHECK_CFLAGS
+CHECK_LIBS
+HAVE_CHECK_TRUE
+HAVE_CHECK_FALSE
+BUILDINFO
+LIBOBJS
+LTLIBOBJS
+gl_LIBOBJS
+gl_LTLIBOBJS'
+ac_subst_files=''
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CC
+CFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CPP
+CXX
+CXXFLAGS
+CCC
+CXXCPP
+F77
+FFLAGS
+PKG_CONFIG
+CHECK_CFLAGS
+CHECK_LIBS'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (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=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_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
+ eval enable_$ac_feature=no ;;
+
+ -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_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
+ eval enable_$ac_feature=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -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_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
+ eval with_$ac_package=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
+ eval with_$ac_package=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; }
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ { echo "$as_me: error: missing argument to $ac_option" >&2
+ { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute directory names.
+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
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; }
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used." >&2
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ { echo "$as_me: error: Working directory cannot be determined" >&2
+ { (exit 1); exit 1; }; }
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ { echo "$as_me: error: pwd does not report name of working directory" >&2
+ { (exit 1); exit 1; }; }
+
+
+# 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 -- "$0" ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$0" : 'X\(//\)[^/]' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$0" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+ { (exit 1); exit 1; }; }
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
+ { (exit 1); exit 1; }; }
+ 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 1.8.7 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 1.8.7:";;
+ esac
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+ --enable-mtrace enable malloc() debugging
+ --enable-device-mapper enable device mapper support default=no
+ --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-fs include filesystem support 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-Werror build with gcc -Werror default=yes
+ --enable-hfs-extract-fs Extract special HFS files for debugging default=no
+ --disable-dependency-tracking speeds up one-time build
+ --enable-dependency-tracking do not reject slow dependency extractors
+ --disable-largefile omit support for large files
+ --disable-assert turn off assertions
+ --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
+ --disable-rpath do not hardcode runtime library paths
+
+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
+ --without-included-regex
+ don't compile regex; this is the default on 32-bit
+ systems with recent-enough versions of the GNU C
+ Library (use with caution on other systems). On
+ systems with 64-bit ptrdiff_t and 32-bit int,
+ --with-included-regex is the default, in case regex
+ functions operate on very long strings (>2GB)
+ --with-gnu-ld assume the C compiler uses GNU ld [default=no]
+ --with-pic try to use only PIC/non-PIC objects [default=use
+ both]
+ --with-tags[=TAGS] include additional configurations [automatic]
+ --with-gnu-ld assume the C compiler uses GNU ld default=no
+ --with-libiconv-prefix[=DIR] search for libiconv in DIR/include and DIR/lib
+ --without-libiconv-prefix don't search for libiconv in includedir and libdir
+ --with-libintl-prefix[=DIR] search for libintl in DIR/include and DIR/lib
+ --without-libintl-prefix don't search for libintl in includedir and libdir
+
+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 C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+ CPP C preprocessor
+ CXX C++ compiler command
+ CXXFLAGS C++ compiler flags
+ CXXCPP C++ preprocessor
+ F77 Fortran 77 compiler command
+ FFLAGS Fortran 77 compiler flags
+ PKG_CONFIG path to pkg-config utility
+ 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>.
+_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" || continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`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
+ 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 1.8.7
+generated by GNU Autoconf 2.61
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006 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
+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 1.8.7, which was
+generated by GNU Autoconf 2.61. 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=.
+ 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=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+ 2)
+ ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ ac_configure_args="$ac_configure_args '$ac_arg'"
+ ;;
+ esac
+ done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: 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
+
+ cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+ 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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ *) $as_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
+
+ cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ echo "$as_me: caught signal $ac_signal"
+ 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'; { (exit 1); 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
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -n "$CONFIG_SITE"; then
+ set x "$CONFIG_SITE"
+elif test "x$prefix" != xNONE; then
+ set x "$prefix/share/config.site" "$prefix/etc/config.site"
+else
+ set x "$ac_default_prefix/share/config.site" \
+ "$ac_default_prefix/etc/config.site"
+fi
+shift
+for ac_site_file
+do
+ if test -r "$ac_site_file"; then
+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file"
+ fi
+done
+
+if test -r "$cache_file"; then
+ # Some versions of bash will fail to source /dev/null (special
+ # files actually), so we avoid doing that.
+ if test -f "$cache_file"; then
+ { echo "$as_me:$LINENO: loading cache $cache_file" >&5
+echo "$as_me: loading cache $cache_file" >&6;}
+ case $cache_file in
+ [\\/]* | ?:[\\/]* ) . "$cache_file";;
+ *) . "./$cache_file";;
+ esac
+ fi
+else
+ { echo "$as_me:$LINENO: creating cache $cache_file" >&5
+echo "$as_me: creating cache $cache_file" >&6;}
+ >$cache_file
+fi
+
+ac_header_list="$ac_header_list stdio_ext.h"
+ac_header_list="$ac_header_list stdint.h"
+ac_header_list="$ac_header_list inttypes.h"
+ac_func_list="$ac_func_list mbsinit"
+ac_header_list="$ac_header_list locale.h"
+ac_func_list="$ac_func_list iswctype"
+ac_func_list="$ac_func_list mbrtowc"
+ac_func_list="$ac_func_list wcrtomb"
+ac_func_list="$ac_func_list wcscoll"
+ac_header_list="$ac_header_list stdlib.h"
+ac_header_list="$ac_header_list string.h"
+ac_header_list="$ac_header_list unistd.h"
+ac_header_list="$ac_header_list utime.h"
+ac_header_list="$ac_header_list sys/time.h"
+ac_header_list="$ac_header_list wchar.h"
+ac_func_list="$ac_func_list iswcntrl"
+ac_header_list="$ac_header_list wctype.h"
+gt_needs="$gt_needs "
+# 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,)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
+echo "$as_me: former value: $ac_old_val" >&2;}
+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
+echo "$as_me: current value: $ac_new_val" >&2;}
+ ac_cache_corrupted=:
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+
+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
+ { { echo "$as_me:$LINENO: error: cannot find install-sh or install.sh in build-aux \"$srcdir\"/build-aux" >&5
+echo "$as_me: error: cannot find install-sh or install.sh in build-aux \"$srcdir\"/build-aux" >&2;}
+ { (exit 1); exit 1; }; }
+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.
+
+
+
+PED_MAJOR_VERSION=1
+PED_MINOR_VERSION=8
+PED_MICRO_VERSION=7
+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`
+
+
+
+
+
+# Ensure that the PED_*-specified version is the same as the literal
+# in the AC_INIT line, above.
+test $PACKAGE_VERSION = $PED_VERSION ||
+ { { echo "$as_me:$LINENO: error: configure.ac: version mismatch: $PACKAGE_VERSION != $PED_VERSION" >&5
+echo "$as_me: error: configure.ac: version mismatch: $PACKAGE_VERSION != $PED_VERSION" >&2;}
+ { (exit 1); exit 1; }; }
+
+am__api_version='1.10'
+
+# Find a good install program. We prefer a C program (faster),
+# so one script is as good as another. But avoid the broken or
+# incompatible versions:
+# SysV /etc/install, /usr/sbin/install
+# SunOS /usr/etc/install
+# IRIX /sbin/install
+# AIX /bin/install
+# AmigaOS /C/install, which installs bootblocks on floppy discs
+# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag
+# AFS /usr/afsws/bin/install, which mishandles nonexistent args
+# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
+# OS/2's system install, which has a completely different semantic
+# ./install, which can be erroneously created by make from ./install.sh.
+{ echo "$as_me:$LINENO: checking for a BSD-compatible install" >&5
+echo $ECHO_N "checking for a BSD-compatible install... $ECHO_C" >&6; }
+if test -z "$INSTALL"; then
+if test "${ac_cv_path_install+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ # Account for people who put trailing slashes in PATH elements.
+case $as_dir/ in
+ ./ | .// | /cC/* | \
+ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \
+ ?:\\/os2\\/install\\/* | ?:\\/OS2\\/INSTALL\\/* | \
+ /usr/ucb/* ) ;;
+ *)
+ # OSF1 and SCO ODT 3.0 have their own names for install.
+ # Don't use installbsd from OSF since it installs stuff as root
+ # by default.
+ for ac_prog in ginstall scoinst install; do
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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
+ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c"
+ break 3
+ fi
+ fi
+ done
+ done
+ ;;
+esac
+done
+IFS=$as_save_IFS
+
+
+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
+{ echo "$as_me:$LINENO: result: $INSTALL" >&5
+echo "${ECHO_T}$INSTALL" >&6; }
+
+# Use test -z because SunOS4 sh mishandles braces in ${var-val}.
+# It thinks the first close brace ends the variable substitution.
+test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}'
+
+test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}'
+
+test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644'
+
+{ echo "$as_me:$LINENO: checking whether build environment is sane" >&5
+echo $ECHO_N "checking whether build environment is sane... $ECHO_C" >&6; }
+# Just in case
+sleep 1
+echo timestamp > conftest.file
+# 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 (
+ 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
+ rm -f conftest.file
+ 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".
+ { { echo "$as_me:$LINENO: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" >&5
+echo "$as_me: error: ls -t appears to fail. Make sure there is not a broken
+alias in your environment" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ test "$2" = conftest.file
+ )
+then
+ # Ok.
+ :
+else
+ { { echo "$as_me:$LINENO: error: newly created file is older than distributed files!
+Check your system clock" >&5
+echo "$as_me: error: newly created file is older than distributed files!
+Check your system clock" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+{ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+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 $. echo might interpret backslashes.
+# By default was `s,x,x', remove it if useless.
+cat <<\_ACEOF >conftest.sed
+s/[\\$]/&&/g;s/;s,x,x,$//
+_ACEOF
+program_transform_name=`echo $program_transform_name | sed -f conftest.sed`
+rm -f conftest.sed
+
+# expand $ac_aux_dir to an absolute path
+am_aux_dir=`cd $ac_aux_dir && pwd`
+
+test x"${MISSING+set}" = xset || MISSING="\${SHELL} $am_aux_dir/missing"
+# Use eval to expand $SHELL
+if eval "$MISSING --run true"; then
+ am_missing_run="$MISSING --run "
+else
+ am_missing_run=
+ { echo "$as_me:$LINENO: WARNING: \`missing' script is too old or missing" >&5
+echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;}
+fi
+
+{ echo "$as_me:$LINENO: checking for a thread-safe mkdir -p" >&5
+echo $ECHO_N "checking for a thread-safe mkdir -p... $ECHO_C" >&6; }
+if test -z "$MKDIR_P"; then
+ if test "${ac_cv_path_mkdir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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
+
+ 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.
+ test -d ./--version && rmdir ./--version
+ MKDIR_P="$ac_install_sh -d"
+ fi
+fi
+{ echo "$as_me:$LINENO: result: $MKDIR_P" >&5
+echo "${ECHO_T}$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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_AWK+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $AWK" >&5
+echo "${ECHO_T}$AWK" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+ test -n "$AWK" && break
+done
+
+{ echo "$as_me:$LINENO: checking whether ${MAKE-make} sets \$(MAKE)" >&5
+echo $ECHO_N "checking whether ${MAKE-make} sets \$(MAKE)... $ECHO_C" >&6; }
+set x ${MAKE-make}; ac_make=`echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'`
+if { as_var=ac_cv_prog_make_${ac_make}_set; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ SET_MAKE=
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}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
+ { { echo "$as_me:$LINENO: error: source directory already configured; run \"make distclean\" there first" >&5
+echo "$as_me: error: source directory already configured; run \"make distclean\" there first" >&2;}
+ { (exit 1); exit 1; }; }
+ 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='1.8.7'
+
+
+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"}
+
+install_sh=${install_sh-"\$(SHELL) $am_aux_dir/install-sh"}
+
+# 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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&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"
+
+# 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 -'
+
+
+
+
+
+
+# Make sure we can run config.sub.
+$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
+ { { echo "$as_me:$LINENO: error: cannot run $SHELL $ac_aux_dir/config.sub" >&5
+echo "$as_me: error: cannot run $SHELL $ac_aux_dir/config.sub" >&2;}
+ { (exit 1); exit 1; }; }
+
+{ echo "$as_me:$LINENO: checking build system type" >&5
+echo $ECHO_N "checking build system type... $ECHO_C" >&6; }
+if test "${ac_cv_build+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_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 &&
+ { { echo "$as_me:$LINENO: error: cannot guess build type; you must specify one" >&5
+echo "$as_me: error: cannot guess build type; you must specify one" >&2;}
+ { (exit 1); exit 1; }; }
+ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` ||
+ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&5
+echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $ac_build_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_build" >&5
+echo "${ECHO_T}$ac_cv_build" >&6; }
+case $ac_cv_build in
+*-*-*) ;;
+*) { { echo "$as_me:$LINENO: error: invalid value of canonical build" >&5
+echo "$as_me: error: invalid value of canonical build" >&2;}
+ { (exit 1); exit 1; }; };;
+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
+
+
+{ echo "$as_me:$LINENO: checking host system type" >&5
+echo $ECHO_N "checking host system type... $ECHO_C" >&6; }
+if test "${ac_cv_host+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ 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` ||
+ { { echo "$as_me:$LINENO: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&5
+echo "$as_me: error: $SHELL $ac_aux_dir/config.sub $host_alias failed" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_host" >&5
+echo "${ECHO_T}$ac_cv_host" >&6; }
+case $ac_cv_host in
+*-*-*) ;;
+*) { { echo "$as_me:$LINENO: error: invalid value of canonical host" >&5
+echo "$as_me: error: invalid value of canonical host" >&2;}
+ { (exit 1); exit 1; }; };;
+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 ;;
+ *) { { echo "$as_me:$LINENO: error: Unknown or unsupported OS \"$host_os\". Only \"linux\", \"gnu\" and \"beos\" are supported in this version of GNU Parted." >&5
+echo "$as_me: error: Unknown or unsupported OS \"$host_os\". Only \"linux\", \"gnu\" and \"beos\" are supported in this version of GNU Parted." >&2;}
+ { (exit 1); exit 1; }; } ;;
+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
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_MTRACE 1
+_ACEOF
+
+fi
+
+# Check whether --enable-device-mapper was given.
+if test "${enable_device_mapper+set}" = set; then
+ enableval=$enable_device_mapper;
+else
+ enable_device_mapper=no
+
+fi
+
+if test "$enable_device_mapper" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_DEVICE_MAPPER 1
+_ACEOF
+
+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
+
+cat >>confdefs.h <<\_ACEOF
+#define DISCOVER_ONLY 1
+_ACEOF
+
+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 -a "$enable_dynamic_loading" = yes; then
+ { { echo "$as_me:$LINENO: error: You can't use --enable-dynamic-loading and --disable-discover-only together
+ " >&5
+echo "$as_me: error: You can't use --enable-dynamic-loading and --disable-discover-only together
+ " >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+# Check whether --enable-fs was given.
+if test "${enable_fs+set}" = set; then
+ enableval=$enable_fs;
+else
+ enable_fs=yes
+
+fi
+
+if test "$enable_fs" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_FS 1
+_ACEOF
+
+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
+
+cat >>confdefs.h <<\_ACEOF
+#define DEBUG 1
+_ACEOF
+
+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
+
+cat >>confdefs.h <<\_ACEOF
+#define READ_ONLY 1
+_ACEOF
+
+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
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_PC98 1
+_ACEOF
+
+fi
+
+# Check whether --enable-Werror was given.
+if test "${enable_Werror+set}" = set; then
+ enableval=$enable_Werror;
+else
+ enable_Werror=yes
+
+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
+
+cat >>confdefs.h <<\_ACEOF
+#define HFS_EXTRACT_FS 1
+_ACEOF
+
+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 done
+.PHONY: am__doit
+END
+# If we don't find an include directive, just comment out the code.
+{ echo "$as_me:$LINENO: checking for style of include used by $am_make" >&5
+echo $ECHO_N "checking for style of include used by $am_make... $ECHO_C" >&6; }
+am__include="#"
+am__quote=
+_am_result=none
+# First try GNU make style include.
+echo "include confinc" > confmf
+# We grep out `Entering directory' and `Leaving directory'
+# messages which can occur if `w' ends up in MAKEFLAGS.
+# In particular we don't look at `^make:' because GNU make might
+# be invoked under some other name (usually "gmake"), in which
+# case it prints its new name instead of `make'.
+if test "`$am_make -s -f confmf 2> /dev/null | grep -v 'ing directory'`" = "done"; then
+ am__include=include
+ am__quote=
+ _am_result=GNU
+fi
+# Now try BSD make style include.
+if test "$am__include" = "#"; then
+ echo '.include "confinc"' > confmf
+ if test "`$am_make -s -f confmf 2> /dev/null`" = "done"; then
+ am__include=.include
+ am__quote="\""
+ _am_result=BSD
+ fi
+fi
+
+
+{ echo "$as_me:$LINENO: result: $_am_result" >&5
+echo "${ECHO_T}$_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='\'
+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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO: checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compiler --version >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compiler -v >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compiler -V >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ echo "$as_me:$LINENO: checking for C compiler default output file name" >&5
+echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; }
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+#
+# List of possible output files, starting from the most likely.
+# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
+# only as a last resort. b.out is created by i960 compilers.
+ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
+#
+# The IRIX 6 linker writes into existing files which may not be
+# executable, retaining their permissions. Remove them first so a
+# subsequent execution test works.
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; 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 | *.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
+
+{ echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6; }
+if test -z "$ac_file"; then
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: C compiler cannot create executables
+See \`config.log' for more details." >&5
+echo "$as_me: error: C compiler cannot create executables
+See \`config.log' for more details." >&2;}
+ { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ echo "$as_me:$LINENO: checking whether the C compiler works" >&5
+echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; }
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+ if { ac_try='./$ac_file'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { echo "$as_me:$LINENO: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run C compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ fi
+fi
+{ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+
+rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6; }
+
+{ echo "$as_me:$LINENO: checking for suffix of executables" >&5
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+{ echo "$as_me:$LINENO: checking for suffix of object files" >&5
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
+if test "${ac_cv_objext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; 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 ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ CFLAGS=""
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+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
+{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* 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"
+ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_c89=$ac_arg
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+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)
+ { echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6; } ;;
+ xno)
+ { echo "$as_me:$LINENO: result: unsupported" >&5
+echo "${ECHO_T}unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+
+
+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=
+
+{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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'.
+ 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
+ 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
+
+ case $depmode in
+ 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
+ ;;
+ none) break ;;
+ esac
+ # 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.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} 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 sub/conftest.${OBJEXT-o} 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
+{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+echo "${ECHO_T}$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
+
+
+
+{ echo "$as_me:$LINENO: checking for library containing strerror" >&5
+echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6; }
+if test "${ac_cv_search_strerror+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any 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
+ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_search_strerror=$ac_res
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext
+ if test "${ac_cv_search_strerror+set}" = set; then
+ break
+fi
+done
+if test "${ac_cv_search_strerror+set}" = set; then
+ :
+else
+ ac_cv_search_strerror=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
+echo "${ECHO_T}$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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_CC"; then
+ ac_ct_CC=$CC
+ # Extract the first word of "gcc", so it can be a program name with args.
+set dummy gcc; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+ fi
+fi
+if test -z "$CC"; then
+ # Extract the first word of "cc", so it can be a program name with args.
+set dummy cc; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+ ac_prog_rejected=no
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$CC"; then
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in cl.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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CC"; then
+ ac_cv_prog_CC="$CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $CC" >&5
+echo "${ECHO_T}$CC" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+ test -n "$CC" && break
+ done
+fi
+if test -z "$CC"; then
+ ac_ct_CC=$CC
+ for ac_prog in cl.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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CC"; then
+ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { 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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $ac_ct_CC" >&5
+echo "${ECHO_T}$ac_ct_CC" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CC" && break
+done
+
+ if test "x$ac_ct_CC" = x; then
+ CC=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+ CC=$ac_ct_CC
+ fi
+fi
+
+fi
+
+
+test -z "$CC" && { { echo "$as_me:$LINENO: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&5
+echo "$as_me: error: no acceptable C compiler found in \$PATH
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO: checking for C compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compiler --version >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compiler -v >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compiler -V >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+{ echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; }
+if test "${ac_cv_c_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_c_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_c_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_c_compiler_gnu" >&6; }
+GCC=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CFLAGS=${CFLAGS+set}
+ac_save_CFLAGS=$CFLAGS
+{ echo "$as_me:$LINENO: checking whether $CC accepts -g" >&5
+echo $ECHO_N "checking whether $CC accepts -g... $ECHO_C" >&6; }
+if test "${ac_cv_prog_cc_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_save_c_werror_flag=$ac_c_werror_flag
+ ac_c_werror_flag=yes
+ ac_cv_prog_cc_g=no
+ CFLAGS="-g"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ CFLAGS=""
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_c_werror_flag=$ac_save_c_werror_flag
+ CFLAGS="-g"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+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
+{ echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_g" >&6; }
+if test "$ac_test_CFLAGS" = set; then
+ CFLAGS=$ac_save_CFLAGS
+elif test $ac_cv_prog_cc_g = yes; then
+ if test "$GCC" = yes; then
+ CFLAGS="-g -O2"
+ else
+ CFLAGS="-g"
+ fi
+else
+ if test "$GCC" = yes; then
+ CFLAGS="-O2"
+ else
+ CFLAGS=
+ fi
+fi
+{ echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* 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"
+ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_c89=$ac_arg
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+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)
+ { echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6; } ;;
+ xno)
+ { echo "$as_me:$LINENO: result: unsupported" >&5
+echo "${ECHO_T}unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_c89" >&6; } ;;
+esac
+
+
+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=
+
+{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
+if test "${am_cv_CC_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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'.
+ 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
+ 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
+
+ case $depmode in
+ 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
+ ;;
+ none) break ;;
+ esac
+ # 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.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} 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 sub/conftest.${OBJEXT-o} 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
+{ echo "$as_me:$LINENO: result: $am_cv_CC_dependencies_compiler_type" >&5
+echo "${ECHO_T}$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
+{ echo "$as_me:$LINENO: checking how to run the C preprocessor" >&5
+echo $ECHO_N "checking how to run the C preprocessor... $ECHO_C" >&6; }
+# On Suns, sometimes $CPP names a directory.
+if test -n "$CPP" && test -d "$CPP"; then
+ CPP=
+fi
+if test -z "$CPP"; then
+ if test "${ac_cv_prog_CPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Double quotes because CPP needs to be expanded
+ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ break
+fi
+
+ done
+ ac_cv_prog_CPP=$CPP
+
+fi
+ CPP=$ac_cv_prog_CPP
+else
+ ac_cv_prog_CPP=$CPP
+fi
+{ echo "$as_me:$LINENO: result: $CPP" >&5
+echo "${ECHO_T}$CPP" >&6; }
+ac_preproc_ok=false
+for ac_c_preproc_warn_flag in '' yes
+do
+ # Use a header file that comes with gcc, so configuring glibc
+ # with a fresh cross-compiler works.
+ # Prefer <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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ :
+else
+ { { echo "$as_me:$LINENO: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C preprocessor \"$CPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+{ echo "$as_me:$LINENO: checking for grep that handles long lines and -e" >&5
+echo $ECHO_N "checking for grep that handles long lines and -e... $ECHO_C" >&6; }
+if test "${ac_cv_path_GREP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Extract the first word of "grep ggrep" to use in msg output
+if test -z "$GREP"; then
+set dummy grep ggrep; ac_prog_name=$2
+if test "${ac_cv_path_GREP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ 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
+ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ echo 'GREP' >> "conftest.nl"
+ "$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
+ ac_count=`expr $ac_count + 1`
+ 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
+
+
+fi
+
+GREP="$ac_cv_path_GREP"
+if test -z "$GREP"; then
+ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+else
+ ac_cv_path_GREP=$GREP
+fi
+
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_path_GREP" >&5
+echo "${ECHO_T}$ac_cv_path_GREP" >&6; }
+ GREP="$ac_cv_path_GREP"
+
+
+{ echo "$as_me:$LINENO: checking for egrep" >&5
+echo $ECHO_N "checking for egrep... $ECHO_C" >&6; }
+if test "${ac_cv_path_EGREP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1
+ then ac_cv_path_EGREP="$GREP -E"
+ else
+ # Extract the first word of "egrep" to use in msg output
+if test -z "$EGREP"; then
+set dummy egrep; ac_prog_name=$2
+if test "${ac_cv_path_EGREP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ 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
+ echo $ECHO_N "0123456789$ECHO_C" >"conftest.in"
+ while :
+ do
+ cat "conftest.in" "conftest.in" >"conftest.tmp"
+ mv "conftest.tmp" "conftest.in"
+ cp "conftest.in" "conftest.nl"
+ 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
+ ac_count=`expr $ac_count + 1`
+ 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
+
+
+fi
+
+EGREP="$ac_cv_path_EGREP"
+if test -z "$EGREP"; then
+ { { echo "$as_me:$LINENO: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&5
+echo "$as_me: error: no acceptable $ac_prog_name could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+else
+ ac_cv_path_EGREP=$EGREP
+fi
+
+
+ fi
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_path_EGREP" >&5
+echo "${ECHO_T}$ac_cv_path_EGREP" >&6; }
+ EGREP="$ac_cv_path_EGREP"
+
+
+if test $ac_cv_c_compiler_gnu = yes; then
+ { echo "$as_me:$LINENO: checking whether $CC needs -traditional" >&5
+echo $ECHO_N "checking whether $CC needs -traditional... $ECHO_C" >&6; }
+if test "${ac_cv_prog_gcc_traditional+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_pattern="Autoconf.*'x'"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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
+{ echo "$as_me:$LINENO: result: $ac_cv_prog_gcc_traditional" >&5
+echo "${ECHO_T}$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
+ { echo "$as_me:$LINENO: checking whether $CC and cc understand -c and -o together" >&5
+echo $ECHO_N "checking whether $CC and cc understand -c and -o together... $ECHO_C" >&6; }
+else
+ { echo "$as_me:$LINENO: checking whether cc understands -c and -o together" >&5
+echo $ECHO_N "checking whether cc understands -c and -o together... $ECHO_C" >&6; }
+fi
+set dummy $CC; ac_cc=`echo $2 |
+ sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+if { as_var=ac_cv_prog_cc_${ac_cc}_c_o; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ test -f conftest2.$ac_objext && { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); };
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } &&
+ test -f conftest2.$ac_objext && { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); };
+ 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
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define NO_MINUS_C_MINUS_O 1
+_ACEOF
+
+fi
+
+# FIXME: we rely on the cache variable name because
+# there is no other way.
+set dummy $CC
+ac_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'`
+if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != 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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+ if test "x$ac_ct_RANLIB" = x; then
+ RANLIB=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+ RANLIB=$ac_ct_RANLIB
+ fi
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+
+cat >>confdefs.h <<\_ACEOF
+#define _GNU_SOURCE 1
+_ACEOF
+
+
+
+{ echo "$as_me:$LINENO: checking for AIX" >&5
+echo $ECHO_N "checking for AIX... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef _AIX
+ yes
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "yes" >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+cat >>confdefs.h <<\_ACEOF
+#define _ALL_SOURCE 1
+_ACEOF
+
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+rm -f conftest*
+
+
+{ echo "$as_me:$LINENO: checking for ANSI C header files" >&5
+echo $ECHO_N "checking for ANSI C header files... $ECHO_C" >&6; }
+if test "${ac_cv_header_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_header_stdc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_header_stdc=no
+fi
+
+rm -f 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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ :
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_stdc" >&5
+echo "${ECHO_T}$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STDC_HEADERS 1
+_ACEOF
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+
+
+
+
+
+
+
+
+
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+ inttypes.h stdint.h unistd.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+
+#include <$ac_header>
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ eval "$as_ac_Header=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_Header=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+if test "${ac_cv_header_minix_config_h+set}" = set; then
+ { echo "$as_me:$LINENO: checking for minix/config.h" >&5
+echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_minix_config_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5
+echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking minix/config.h usability" >&5
+echo $ECHO_N "checking minix/config.h usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <minix/config.h>
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking minix/config.h presence" >&5
+echo $ECHO_N "checking minix/config.h presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <minix/config.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: minix/config.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: minix/config.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: minix/config.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: minix/config.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: minix/config.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: minix/config.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: minix/config.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: minix/config.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: minix/config.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: minix/config.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: minix/config.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: minix/config.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: minix/config.h: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-parted@gnu.org ##
+## --------------------------------- ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for minix/config.h" >&5
+echo $ECHO_N "checking for minix/config.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_minix_config_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_minix_config_h=$ac_header_preproc
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_minix_config_h" >&5
+echo "${ECHO_T}$ac_cv_header_minix_config_h" >&6; }
+
+fi
+if test $ac_cv_header_minix_config_h = yes; then
+ MINIX=yes
+else
+ MINIX=
+fi
+
+
+if test "$MINIX" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define _POSIX_SOURCE 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define _POSIX_1_SOURCE 2
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define _MINIX 1
+_ACEOF
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+ { echo "$as_me:$LINENO: checking whether it is safe to define __EXTENSIONS__" >&5
+echo $ECHO_N "checking whether it is safe to define __EXTENSIONS__... $ECHO_C" >&6; }
+if test "${ac_cv_safe_to_define___extensions__+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+# define __EXTENSIONS__ 1
+ $ac_includes_default
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_safe_to_define___extensions__=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_safe_to_define___extensions__=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_safe_to_define___extensions__" >&5
+echo "${ECHO_T}$ac_cv_safe_to_define___extensions__" >&6; }
+ test $ac_cv_safe_to_define___extensions__ = yes &&
+ cat >>confdefs.h <<\_ACEOF
+#define __EXTENSIONS__ 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define _POSIX_PTHREAD_SEMANTICS 1
+_ACEOF
+
+ cat >>confdefs.h <<\_ACEOF
+#define _TANDEM_SOURCE 1
+_ACEOF
+
+
+
+ case $ac_cv_prog_cc_stdc in
+ no) ac_cv_prog_cc_c99=no; ac_cv_prog_cc_c89=no ;;
+ *) { echo "$as_me:$LINENO: checking for $CC option to accept ISO C99" >&5
+echo $ECHO_N "checking for $CC option to accept ISO C99... $ECHO_C" >&6; }
+if test "${ac_cv_prog_cc_c99+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_prog_cc_c99=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <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 -c99 -qlanglvl=extc99
+do
+ CC="$ac_save_CC $ac_arg"
+ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_c99=$ac_arg
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+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)
+ { echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6; } ;;
+ xno)
+ { echo "$as_me:$LINENO: result: unsupported" >&5
+echo "${ECHO_T}unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c99"
+ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c99" >&5
+echo "${ECHO_T}$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
+ { echo "$as_me:$LINENO: checking for $CC option to accept ISO C89" >&5
+echo $ECHO_N "checking for $CC option to accept ISO C89... $ECHO_C" >&6; }
+if test "${ac_cv_prog_cc_c89+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_prog_cc_c89=no
+ac_save_CC=$CC
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdarg.h>
+#include <stdio.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+/* 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"
+ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cc_c89=$ac_arg
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+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)
+ { echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6; } ;;
+ xno)
+ { echo "$as_me:$LINENO: result: unsupported" >&5
+echo "${ECHO_T}unsupported" >&6; } ;;
+ *)
+ CC="$CC $ac_cv_prog_cc_c89"
+ { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_c89" >&5
+echo "${ECHO_T}$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
+ { echo "$as_me:$LINENO: checking for $CC option to accept ISO Standard C" >&5
+echo $ECHO_N "checking for $CC option to accept ISO Standard C... $ECHO_C" >&6; }
+ if test "${ac_cv_prog_cc_stdc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+
+ case $ac_cv_prog_cc_stdc in
+ no) { echo "$as_me:$LINENO: result: unsupported" >&5
+echo "${ECHO_T}unsupported" >&6; } ;;
+ '') { echo "$as_me:$LINENO: result: none needed" >&5
+echo "${ECHO_T}none needed" >&6; } ;;
+ *) { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_stdc" >&5
+echo "${ECHO_T}$ac_cv_prog_cc_stdc" >&6; } ;;
+esac
+
+
+
+
+
+
+
+
+
+# Check whether --enable-largefile was given.
+if test "${enable_largefile+set}" = set; then
+ enableval=$enable_largefile;
+fi
+
+if test "$enable_largefile" != no; then
+
+ { echo "$as_me:$LINENO: checking for special C compiler options needed for large files" >&5
+echo $ECHO_N "checking for special C compiler options needed for large files... $ECHO_C" >&6; }
+if test "${ac_cv_sys_largefile_CC+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_sys_largefile_CC=no
+ if test "$GCC" != yes; then
+ ac_save_CC=$CC
+ while :; do
+ # IRIX 6.2 and later do not support large files by default,
+ # so use the C compiler's -n32 option if that helps.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <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
+ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+ CC="$CC -n32"
+ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_sys_largefile_CC=' -n32'; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext
+ break
+ done
+ CC=$ac_save_CC
+ rm -f conftest.$ac_ext
+ fi
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_sys_largefile_CC" >&5
+echo "${ECHO_T}$ac_cv_sys_largefile_CC" >&6; }
+ if test "$ac_cv_sys_largefile_CC" != no; then
+ CC=$CC$ac_cv_sys_largefile_CC
+ fi
+
+ { echo "$as_me:$LINENO: checking for _FILE_OFFSET_BITS value needed for large files" >&5
+echo $ECHO_N "checking for _FILE_OFFSET_BITS value needed for large files... $ECHO_C" >&6; }
+if test "${ac_cv_sys_file_offset_bits+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_sys_file_offset_bits=no; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#define _FILE_OFFSET_BITS 64
+#include <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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_sys_file_offset_bits=64; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_file_offset_bits=unknown
+ break
+done
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_sys_file_offset_bits" >&5
+echo "${ECHO_T}$ac_cv_sys_file_offset_bits" >&6; }
+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 -f conftest*
+ if test $ac_cv_sys_file_offset_bits = unknown; then
+ { echo "$as_me:$LINENO: checking for _LARGE_FILES value needed for large files" >&5
+echo $ECHO_N "checking for _LARGE_FILES value needed for large files... $ECHO_C" >&6; }
+if test "${ac_cv_sys_large_files+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_sys_large_files=no; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#define _LARGE_FILES 1
+#include <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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_sys_large_files=1; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cv_sys_large_files=unknown
+ break
+done
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_sys_large_files" >&5
+echo "${ECHO_T}$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 -f conftest*
+ fi
+fi
+
+
+# The Ultrix 4.2 mips builtin alloca declared by alloca.h only works
+# for constant arguments. Useless!
+{ echo "$as_me:$LINENO: checking for working alloca.h" >&5
+echo $ECHO_N "checking for working alloca.h... $ECHO_C" >&6; }
+if test "${ac_cv_working_alloca_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <alloca.h>
+int
+main ()
+{
+char *p = (char *) alloca (2 * sizeof (int));
+ if (p) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_working_alloca_h=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_working_alloca_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_working_alloca_h" >&5
+echo "${ECHO_T}$ac_cv_working_alloca_h" >&6; }
+if test $ac_cv_working_alloca_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ALLOCA_H 1
+_ACEOF
+
+fi
+
+{ echo "$as_me:$LINENO: checking for alloca" >&5
+echo $ECHO_N "checking for alloca... $ECHO_C" >&6; }
+if test "${ac_cv_func_alloca_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#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 */
+char *alloca ();
+# endif
+# endif
+# endif
+# endif
+#endif
+
+int
+main ()
+{
+char *p = (char *) alloca (1);
+ if (p) return 0;
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_alloca_works=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_alloca_works=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_alloca_works" >&5
+echo "${ECHO_T}$ac_cv_func_alloca_works" >&6; }
+
+if test $ac_cv_func_alloca_works = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ALLOCA 1
+_ACEOF
+
+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
+
+cat >>confdefs.h <<\_ACEOF
+#define C_ALLOCA 1
+_ACEOF
+
+
+{ echo "$as_me:$LINENO: checking whether \`alloca.c' needs Cray hooks" >&5
+echo $ECHO_N "checking whether \`alloca.c' needs Cray hooks... $ECHO_C" >&6; }
+if test "${ac_cv_os_cray+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#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
+{ echo "$as_me:$LINENO: result: $ac_cv_os_cray" >&5
+echo "${ECHO_T}$ac_cv_os_cray" >&6; }
+if test $ac_cv_os_cray = yes; then
+ for ac_func in _getb67 GETB67 getb67; do
+ as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <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 $ac_func
+
+/* 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 $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define CRAY_STACKSEG_END $ac_func
+_ACEOF
+
+ break
+fi
+
+ done
+fi
+
+{ echo "$as_me:$LINENO: checking stack direction for C alloca" >&5
+echo $ECHO_N "checking stack direction for C alloca... $ECHO_C" >&6; }
+if test "${ac_cv_c_stack_direction+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_c_stack_direction=0
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+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
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_c_stack_direction=1
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_c_stack_direction=-1
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_c_stack_direction" >&5
+echo "${ECHO_T}$ac_cv_c_stack_direction" >&6; }
+
+cat >>confdefs.h <<_ACEOF
+#define STACK_DIRECTION $ac_cv_c_stack_direction
+_ACEOF
+
+
+fi
+
+{ echo "$as_me:$LINENO: checking for size_t" >&5
+echo $ECHO_N "checking for size_t... $ECHO_C" >&6; }
+if test "${ac_cv_type_size_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+typedef size_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+ return 0;
+if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_size_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_size_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_size_t" >&5
+echo "${ECHO_T}$ac_cv_type_size_t" >&6; }
+if test $ac_cv_type_size_t = yes; then
+ :
+else
+
+cat >>confdefs.h <<_ACEOF
+#define size_t unsigned int
+_ACEOF
+
+fi
+
+
+ { echo "$as_me:$LINENO: checking whether system is Windows or MSDOS" >&5
+echo $ECHO_N "checking whether system is Windows or MSDOS... $ECHO_C" >&6; }
+if test "${ac_cv_win_or_dos+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __CYGWIN__
+neither MSDOS nor Windows
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_win_or_dos=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_win_or_dos=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_win_or_dos" >&5
+echo "${ECHO_T}$ac_cv_win_or_dos" >&6; }
+
+ if test x"$ac_cv_win_or_dos" = xyes; then
+ ac_fs_accepts_drive_letter_prefix=1
+ ac_fs_backslash_is_file_name_separator=1
+ { echo "$as_me:$LINENO: checking whether drive letter can start relative path" >&5
+echo $ECHO_N "checking whether drive letter can start relative path... $ECHO_C" >&6; }
+if test "${ac_cv_drive_letter_can_be_relative+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#if defined __CYGWIN__
+drive letters are always absolute
+#endif
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_drive_letter_can_be_relative=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_drive_letter_can_be_relative=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_drive_letter_can_be_relative" >&5
+echo "${ECHO_T}$ac_cv_drive_letter_can_be_relative" >&6; }
+ if test x"$ac_cv_drive_letter_can_be_relative" = xyes; then
+ ac_fs_drive_letter_can_be_relative=1
+ else
+ ac_fs_drive_letter_can_be_relative=0
+ fi
+ else
+ ac_fs_accepts_drive_letter_prefix=0
+ ac_fs_backslash_is_file_name_separator=0
+ ac_fs_drive_letter_can_be_relative=0
+ fi
+
+
+cat >>confdefs.h <<_ACEOF
+#define FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX $ac_fs_accepts_drive_letter_prefix
+_ACEOF
+
+
+
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR $ac_fs_backslash_is_file_name_separator
+_ACEOF
+
+
+
+cat >>confdefs.h <<_ACEOF
+#define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE $ac_fs_drive_letter_can_be_relative
+_ACEOF
+
+
+
+
+ { echo "$as_me:$LINENO: checking whether // is distinct from /" >&5
+echo $ECHO_N "checking whether // is distinct from /... $ECHO_C" >&6; }
+if test "${gl_cv_double_slash_root+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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 / //`
+ 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
+{ echo "$as_me:$LINENO: result: $gl_cv_double_slash_root" >&5
+echo "${ECHO_T}$gl_cv_double_slash_root" >&6; }
+ if test "$gl_cv_double_slash_root" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define DOUBLE_SLASH_IS_DISTINCT_ROOT 1
+_ACEOF
+
+ fi
+
+{ echo "$as_me:$LINENO: checking whether strerror_r is declared" >&5
+echo $ECHO_N "checking whether strerror_r is declared... $ECHO_C" >&6; }
+if test "${ac_cv_have_decl_strerror_r+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strerror_r
+ (void) strerror_r;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strerror_r=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_strerror_r=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strerror_r" >&5
+echo "${ECHO_T}$ac_cv_have_decl_strerror_r" >&6; }
+if test $ac_cv_have_decl_strerror_r = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRERROR_R 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRERROR_R 0
+_ACEOF
+
+
+fi
+
+
+
+for ac_func in strerror_r
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <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 $ac_func
+
+/* 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 $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+{ echo "$as_me:$LINENO: checking whether strerror_r returns char *" >&5
+echo $ECHO_N "checking whether strerror_r returns char *... $ECHO_C" >&6; }
+if test "${ac_cv_func_strerror_r_char_p+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ ac_cv_func_strerror_r_char_p=no
+ if test $ac_cv_have_decl_strerror_r = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+
+ 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_func_strerror_r_char_p=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_strerror_r_char_p=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ fi
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_strerror_r_char_p" >&5
+echo "${ECHO_T}$ac_cv_func_strerror_r_char_p" >&6; }
+if test $ac_cv_func_strerror_r_char_p = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define STRERROR_R_CHAR_P 1
+_ACEOF
+
+fi
+
+
+
+
+
+for ac_header in $ac_header_list
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-parted@gnu.org ##
+## --------------------------------- ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+
+ if test -z "$GETOPT_H"; then
+
+for ac_header in getopt.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-parted@gnu.org ##
+## --------------------------------- ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ GETOPT_H=getopt.h
+fi
+
+done
+
+ fi
+
+ if test -z "$GETOPT_H"; then
+
+for ac_func in getopt_long_only
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <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 $ac_func
+
+/* 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 $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ GETOPT_H=getopt.h
+fi
+done
+
+ fi
+
+ if test -z "$GETOPT_H"; then
+ { echo "$as_me:$LINENO: checking whether optreset is declared" >&5
+echo $ECHO_N "checking whether optreset is declared... $ECHO_C" >&6; }
+if test "${ac_cv_have_decl_optreset+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <getopt.h>
+
+int
+main ()
+{
+#ifndef optreset
+ (void) optreset;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_optreset=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_optreset=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_optreset" >&5
+echo "${ECHO_T}$ac_cv_have_decl_optreset" >&6; }
+if test $ac_cv_have_decl_optreset = yes; then
+ GETOPT_H=getopt.h
+fi
+
+ fi
+
+ if test -z "$GETOPT_H"; then
+ { echo "$as_me:$LINENO: checking for working GNU getopt function" >&5
+echo $ECHO_N "checking for working GNU getopt function... $ECHO_C" >&6; }
+if test "${gl_cv_func_gnu_getopt+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ { echo "$as_me:$LINENO: checking whether getopt_clip is declared" >&5
+echo $ECHO_N "checking whether getopt_clip is declared... $ECHO_C" >&6; }
+if test "${ac_cv_have_decl_getopt_clip+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <getopt.h>
+
+int
+main ()
+{
+#ifndef getopt_clip
+ (void) getopt_clip;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getopt_clip=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_getopt_clip=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_getopt_clip" >&5
+echo "${ECHO_T}$ac_cv_have_decl_getopt_clip" >&6; }
+if test $ac_cv_have_decl_getopt_clip = yes; then
+ gl_cv_func_gnu_getopt=no
+else
+ gl_cv_func_gnu_getopt=yes
+fi
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <getopt.h>
+int
+main ()
+{
+
+ char *myargv[3];
+ myargv[0] = "conftest";
+ myargv[1] = "-+";
+ myargv[2] = 0;
+ return getopt (2, myargv, "+a") != '?';
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_gnu_getopt=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_gnu_getopt=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ echo "$as_me:$LINENO: result: $gl_cv_func_gnu_getopt" >&5
+echo "${ECHO_T}$gl_cv_func_gnu_getopt" >&6; }
+ if test "$gl_cv_func_gnu_getopt" = "no"; then
+ GETOPT_H=getopt.h
+ fi
+ fi
+
+{ echo "$as_me:$LINENO: checking whether getenv is declared" >&5
+echo $ECHO_N "checking whether getenv is declared... $ECHO_C" >&6; }
+if test "${ac_cv_have_decl_getenv+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef getenv
+ (void) getenv;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getenv=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_getenv=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_getenv" >&5
+echo "${ECHO_T}$ac_cv_have_decl_getenv" >&6; }
+if test $ac_cv_have_decl_getenv = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETENV 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETENV 0
+_ACEOF
+
+
+fi
+
+
+{ echo "$as_me:$LINENO: checking for inline" >&5
+echo $ECHO_N "checking for inline... $ECHO_C" >&6; }
+if test "${ac_cv_c_inline+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_c_inline=$ac_kw
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
+echo "${ECHO_T}$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
+
+
+ { echo "$as_me:$LINENO: checking for long long int" >&5
+echo $ECHO_N "checking for long long int... $ECHO_C" >&6; }
+if test "${ac_cv_type_long_long_int+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+long long int ll = 9223372036854775807ll;
+ long long int nll = -9223372036854775807LL;
+ typedef int a[((-9223372036854775807LL < 0
+ && 0 < 9223372036854775807ll)
+ ? 1 : -1)];
+ int i = 63;
+int
+main ()
+{
+long long int llmax = 9223372036854775807ll;
+ return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+ | (llmax / ll) | (llmax % ll));
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ if test "$cross_compiling" = yes; then
+ ac_cv_type_long_long_int=yes
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_type_long_long_int=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_type_long_long_int=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_long_long_int=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_long_long_int" >&5
+echo "${ECHO_T}$ac_cv_type_long_long_int" >&6; }
+ if test $ac_cv_type_long_long_int = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LONG_LONG_INT 1
+_ACEOF
+
+ fi
+
+
+ { echo "$as_me:$LINENO: checking for unsigned long long int" >&5
+echo $ECHO_N "checking for unsigned long long int... $ECHO_C" >&6; }
+if test "${ac_cv_type_unsigned_long_long_int+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+unsigned long long int ull = 18446744073709551615ULL;
+ typedef int a[(18446744073709551615ULL <= (unsigned long long int) -1
+ ? 1 : -1)];
+ int i = 63;
+int
+main ()
+{
+unsigned long long int ullmax = 18446744073709551615ull;
+ return (ull << 63 | ull >> 63 | ull << i | ull >> i
+ | ullmax / ull | ullmax % ull);
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_type_unsigned_long_long_int=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_unsigned_long_long_int=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_unsigned_long_long_int" >&5
+echo "${ECHO_T}$ac_cv_type_unsigned_long_long_int" >&6; }
+ if test $ac_cv_type_unsigned_long_long_int = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_UNSIGNED_LONG_LONG_INT 1
+_ACEOF
+
+ 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_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 $ac_cv_header_stdint_h = yes; then
+ { echo "$as_me:$LINENO: checking absolute name of <stdint.h>" >&5
+echo $ECHO_N "checking absolute name of <stdint.h>... $ECHO_C" >&6; }
+if test "${gl_cv_absolute_stdint_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_stdint_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdint.h>
+_ACEOF
+ gl_cv_absolute_stdint_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/stdint.h#{s#.*"\(.*/stdint.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ echo "$as_me:$LINENO: result: $gl_cv_absolute_stdint_h" >&5
+echo "${ECHO_T}$gl_cv_absolute_stdint_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_STDINT_H "$gl_cv_absolute_stdint_h"
+_ACEOF
+
+
+ ABSOLUTE_STDINT_H=\"$gl_cv_absolute_stdint_h\"
+ HAVE_STDINT_H=1
+ else
+ ABSOLUTE_STDINT_H=\"no/such/file/stdint.h\"
+ HAVE_STDINT_H=0
+ fi
+
+
+
+ if test $ac_cv_header_stdint_h = yes; then
+ { echo "$as_me:$LINENO: checking whether stdint.h conforms to C99" >&5
+echo $ECHO_N "checking whether stdint.h conforms to C99... $ECHO_C" >&6; }
+if test "${gl_cv_header_working_stdint_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ gl_cv_header_working_stdint_h=no
+ cat >conftest.$ac_ext <<_ACEOF
+
+ /* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.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 */
+#include ABSOLUTE_STDINT_H
+#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;
+struct s {
+ int check_PTRDIFF: PTRDIFF_MIN < (ptrdiff_t) 0 && (ptrdiff_t) 0 < PTRDIFF_MAX ? 1 : -1;
+ int check_SIG_ATOMIC: SIG_ATOMIC_MIN <= (sig_atomic_t) 0 && (sig_atomic_t) 0 < SIG_ATOMIC_MAX ? 1 : -1;
+ int check_SIZE: (size_t) 0 < SIZE_MAX ? 1 : -1;
+ int check_WCHAR: WCHAR_MIN <= (wchar_t) 0 && (wchar_t) 0 < WCHAR_MAX ? 1 : -1;
+ int check_WINT: WINT_MIN <= (wint_t) 0 && (wint_t) 0 < WINT_MAX ? 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_header_working_stdint_h=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $gl_cv_header_working_stdint_h" >&5
+echo "${ECHO_T}$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=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-parted@gnu.org ##
+## --------------------------------- ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ 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
+
+
+
+
+
+
+
+
+
+
+ for gltype in ptrdiff_t sig_atomic_t size_t wchar_t wint_t ; do
+ { echo "$as_me:$LINENO: checking for bit size of $gltype" >&5
+echo $ECHO_N "checking for bit size of $gltype... $ECHO_C" >&6; }
+if { as_var=gl_cv_bitsizeof_${gltype}; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* 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>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* 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>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* 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>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* 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>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo= ac_hi=
+fi
+
+rm -f 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
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* 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>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) result=$ac_lo;;
+'') result=unknown ;;
+esac
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+static long int longval () { return sizeof ($gltype) * CHAR_BIT; }
+static unsigned long int ulongval () { return sizeof ($gltype) * CHAR_BIT; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if ((sizeof ($gltype) * CHAR_BIT) < 0)
+ {
+ long int i = longval ();
+ if (i != (sizeof ($gltype) * CHAR_BIT))
+ return 1;
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != (sizeof ($gltype) * CHAR_BIT))
+ return 1;
+ fprintf (f, "%lu\n", i);
+ }
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ result=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+result=unknown
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+ eval gl_cv_bitsizeof_${gltype}=\$result
+
+fi
+ac_res=`eval echo '${'gl_cv_bitsizeof_${gltype}'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$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
+ { echo "$as_me:$LINENO: checking whether $gltype is signed" >&5
+echo $ECHO_N "checking whether $gltype is signed... $ECHO_C" >&6; }
+if { as_var=gl_cv_type_${gltype}_signed; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* 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>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+ int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ result=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ result=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ eval gl_cv_type_${gltype}_signed=\$result
+
+fi
+ac_res=`eval echo '${'gl_cv_type_${gltype}_signed'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$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
+
+
+
+
+
+
+
+ for gltype in ptrdiff_t sig_atomic_t size_t wchar_t wint_t ; do
+ { echo "$as_me:$LINENO: checking for $gltype integer literal suffix" >&5
+echo $ECHO_N "checking for $gltype integer literal suffix... $ECHO_C" >&6; }
+if { as_var=gl_cv_type_${gltype}_suffix; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+ extern $gltype foo;
+ extern $gltype1 foo;
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ eval gl_cv_type_${gltype}_suffix=\$glsuf
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+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
+ac_res=`eval echo '${'gl_cv_type_${gltype}_suffix'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$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
+
+
+
+
+for ac_header in inttypes.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-parted@gnu.org ##
+## --------------------------------- ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ if test $ac_cv_header_inttypes_h = yes; then
+ { echo "$as_me:$LINENO: checking whether the inttypes.h PRIxNN macros are broken" >&5
+echo $ECHO_N "checking whether the inttypes.h PRIxNN macros are broken... $ECHO_C" >&6; }
+if test "${gt_cv_inttypes_pri_broken+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <inttypes.h>
+#ifdef PRId32
+char *p = PRId32;
+#endif
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gt_cv_inttypes_pri_broken=no
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_inttypes_pri_broken=yes
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ echo "$as_me:$LINENO: result: $gt_cv_inttypes_pri_broken" >&5
+echo "${ECHO_T}$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
+
+
+{ echo "$as_me:$LINENO: checking whether imaxabs is declared" >&5
+echo $ECHO_N "checking whether imaxabs is declared... $ECHO_C" >&6; }
+if test "${ac_cv_have_decl_imaxabs+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef imaxabs
+ (void) imaxabs;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_imaxabs=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_imaxabs=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_imaxabs" >&5
+echo "${ECHO_T}$ac_cv_have_decl_imaxabs" >&6; }
+if test $ac_cv_have_decl_imaxabs = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IMAXABS 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IMAXABS 0
+_ACEOF
+
+
+fi
+
+
+{ echo "$as_me:$LINENO: checking whether imaxdiv is declared" >&5
+echo $ECHO_N "checking whether imaxdiv is declared... $ECHO_C" >&6; }
+if test "${ac_cv_have_decl_imaxdiv+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef imaxdiv
+ (void) imaxdiv;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_imaxdiv=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_imaxdiv=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_imaxdiv" >&5
+echo "${ECHO_T}$ac_cv_have_decl_imaxdiv" >&6; }
+if test $ac_cv_have_decl_imaxdiv = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IMAXDIV 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_IMAXDIV 0
+_ACEOF
+
+
+fi
+
+
+{ echo "$as_me:$LINENO: checking whether strtoimax is declared" >&5
+echo $ECHO_N "checking whether strtoimax is declared... $ECHO_C" >&6; }
+if test "${ac_cv_have_decl_strtoimax+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strtoimax
+ (void) strtoimax;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strtoimax=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_strtoimax=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtoimax" >&5
+echo "${ECHO_T}$ac_cv_have_decl_strtoimax" >&6; }
+if test $ac_cv_have_decl_strtoimax = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRTOIMAX 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRTOIMAX 0
+_ACEOF
+
+
+fi
+
+
+{ echo "$as_me:$LINENO: checking whether strtoumax is declared" >&5
+echo $ECHO_N "checking whether strtoumax is declared... $ECHO_C" >&6; }
+if test "${ac_cv_have_decl_strtoumax+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strtoumax
+ (void) strtoumax;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strtoumax=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_strtoumax=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strtoumax" >&5
+echo "${ECHO_T}$ac_cv_have_decl_strtoumax" >&6; }
+if test $ac_cv_have_decl_strtoumax = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRTOUMAX 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRTOUMAX 0
+_ACEOF
+
+
+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;
+
+
+
+
+ { echo "$as_me:$LINENO: checking for nl_langinfo and CODESET" >&5
+echo $ECHO_N "checking for nl_langinfo and CODESET... $ECHO_C" >&6; }
+if test "${am_cv_langinfo_codeset+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <langinfo.h>
+int
+main ()
+{
+char* cs = nl_langinfo(CODESET); return !cs;
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ am_cv_langinfo_codeset=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ am_cv_langinfo_codeset=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+
+fi
+{ echo "$as_me:$LINENO: result: $am_cv_langinfo_codeset" >&5
+echo "${ECHO_T}$am_cv_langinfo_codeset" >&6; }
+ if test $am_cv_langinfo_codeset = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LANGINFO_CODESET 1
+_ACEOF
+
+ fi
+
+{ echo "$as_me:$LINENO: checking whether getc_unlocked is declared" >&5
+echo $ECHO_N "checking whether getc_unlocked is declared... $ECHO_C" >&6; }
+if test "${ac_cv_have_decl_getc_unlocked+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef getc_unlocked
+ (void) getc_unlocked;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_getc_unlocked=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_getc_unlocked=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_getc_unlocked" >&5
+echo "${ECHO_T}$ac_cv_have_decl_getc_unlocked" >&6; }
+if test $ac_cv_have_decl_getc_unlocked = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETC_UNLOCKED 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETC_UNLOCKED 0
+_ACEOF
+
+
+fi
+
+
+
+ { echo "$as_me:$LINENO: checking whether we are using the GNU C Library 2.1 or newer" >&5
+echo $ECHO_N "checking whether we are using the GNU C Library 2.1 or newer... $ECHO_C" >&6; }
+if test "${ac_cv_gnu_library_2_1+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
+ Lucky GNU user
+ #endif
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "Lucky GNU user" >/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
+{ echo "$as_me:$LINENO: result: $ac_cv_gnu_library_2_1" >&5
+echo "${ECHO_T}$ac_cv_gnu_library_2_1" >&6; }
+
+ GLIBC21="$ac_cv_gnu_library_2_1"
+
+
+
+
+
+
+for ac_func in $ac_func_list
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <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 $ac_func
+
+/* 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 $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+
+
+
+{ echo "$as_me:$LINENO: checking for C/C++ restrict keyword" >&5
+echo $ECHO_N "checking for C/C++ restrict keyword... $ECHO_C" >&6; }
+if test "${ac_cv_c_restrict+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_c_restrict=no
+ # Try the official restrict keyword, then gcc's __restrict, and
+ # the less common variants.
+ for ac_kw in restrict __restrict __restrict__ _Restrict; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_c_restrict=$ac_kw
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ test "$ac_cv_c_restrict" != no && break
+ done
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_c_restrict" >&5
+echo "${ECHO_T}$ac_cv_c_restrict" >&6; }
+ case $ac_cv_c_restrict in
+ restrict) ;;
+ no)
+cat >>confdefs.h <<\_ACEOF
+#define restrict
+_ACEOF
+ ;;
+ *) cat >>confdefs.h <<_ACEOF
+#define restrict $ac_cv_c_restrict
+_ACEOF
+ ;;
+ esac
+
+
+
+
+
+
+
+
+
+
+ { echo "$as_me:$LINENO: checking for ssize_t" >&5
+echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6; }
+if test "${gt_cv_ssize_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+int
+main ()
+{
+int x = sizeof (ssize_t *) + sizeof (ssize_t);
+ return !x;
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gt_cv_ssize_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_ssize_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $gt_cv_ssize_t" >&5
+echo "${ECHO_T}$gt_cv_ssize_t" >&6; }
+ if test $gt_cv_ssize_t = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define ssize_t int
+_ACEOF
+
+ fi
+
+{ echo "$as_me:$LINENO: checking for stdbool.h that conforms to C99" >&5
+echo $ECHO_N "checking for stdbool.h that conforms to C99... $ECHO_C" >&6; }
+if test "${ac_cv_header_stdbool_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <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];
+ bool e = &s;
+ 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 };
+ _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];
+ #if defined __xlc__ || defined __GNUC__
+ /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
+ reported by James Lemley on 2005-10-05; see
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+ This test is not quite right, since xlc is allowed to
+ reject this program, as the initializer for xlcbug is
+ not one of the forms that C requires support for.
+ However, doing the test right would require a run-time
+ test, and that would make cross-compilation harder.
+ Let us hope that IBM fixes the xlc bug, and also adds
+ support for this kind of constant expression. In the
+ meantime, this test will reject xlc, which is OK, since
+ our stdbool.h substitute should suffice. We also test
+ this with GCC, where it should work, to detect more
+ quickly whether someone messes up the test in the
+ future. */
+ char digs[] = "0123456789";
+ int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
+ #endif
+ /* 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 ()
+{
+
+ *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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_header_stdbool_h=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_header_stdbool_h=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_stdbool_h" >&5
+echo "${ECHO_T}$ac_cv_header_stdbool_h" >&6; }
+ { echo "$as_me:$LINENO: checking for _Bool" >&5
+echo $ECHO_N "checking for _Bool... $ECHO_C" >&6; }
+if test "${ac_cv_type__Bool+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+typedef _Bool ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+ return 0;
+if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type__Bool=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type__Bool=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type__Bool" >&5
+echo "${ECHO_T}$ac_cv_type__Bool" >&6; }
+if test $ac_cv_type__Bool = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE__BOOL 1
+_ACEOF
+
+
+fi
+
+ if test $ac_cv_header_stdbool_h = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_STDBOOL_H 1
+_ACEOF
+
+ fi
+
+ GNULIB_GETSUBOPT=0;
+ GNULIB_MKDTEMP=0;
+ GNULIB_MKSTEMP=0;
+ HAVE_GETSUBOPT=1;
+ HAVE_MKDTEMP=1;
+ REPLACE_MKSTEMP=0;
+
+
+
+
+ GNULIB_MEMMEM=0;
+ GNULIB_MEMPCPY=0;
+ GNULIB_MEMRCHR=0;
+ GNULIB_STPCPY=0;
+ GNULIB_STPNCPY=0;
+ GNULIB_STRCHRNUL=0;
+ GNULIB_STRDUP=0;
+ GNULIB_STRNDUP=0;
+ GNULIB_STRNLEN=0;
+ GNULIB_STRPBRK=0;
+ GNULIB_STRSEP=0;
+ GNULIB_STRCASESTR=0;
+ GNULIB_STRTOK_R=0;
+ GNULIB_MBSLEN=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;
+ HAVE_DECL_MEMMEM=1;
+ HAVE_MEMPCPY=1;
+ HAVE_DECL_MEMRCHR=1;
+ HAVE_STPCPY=1;
+ HAVE_STPNCPY=1;
+ HAVE_STRCASECMP=1;
+ HAVE_DECL_STRNCASECMP=1;
+ HAVE_STRCHRNUL=1;
+ HAVE_DECL_STRDUP=1;
+ HAVE_STRNDUP=1;
+ HAVE_DECL_STRNDUP=1;
+ HAVE_DECL_STRNLEN=1;
+ HAVE_STRPBRK=1;
+ HAVE_STRSEP=1;
+ HAVE_STRCASESTR=1;
+ HAVE_DECL_STRTOK_R=1;
+
+
+
+
+
+
+ { echo "$as_me:$LINENO: checking absolute name of <string.h>" >&5
+echo $ECHO_N "checking absolute name of <string.h>... $ECHO_C" >&6; }
+if test "${gl_cv_absolute_string_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_string_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <string.h>
+_ACEOF
+ gl_cv_absolute_string_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/string.h#{s#.*"\(.*/string.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ echo "$as_me:$LINENO: result: $gl_cv_absolute_string_h" >&5
+echo "${ECHO_T}$gl_cv_absolute_string_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_STRING_H "$gl_cv_absolute_string_h"
+_ACEOF
+
+
+ ABSOLUTE_STRING_H=\"$gl_cv_absolute_string_h\"
+
+
+{ echo "$as_me:$LINENO: checking whether strndup is declared" >&5
+echo $ECHO_N "checking whether strndup is declared... $ECHO_C" >&6; }
+if test "${ac_cv_have_decl_strndup+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strndup
+ (void) strndup;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strndup=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_strndup=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strndup" >&5
+echo "${ECHO_T}$ac_cv_have_decl_strndup" >&6; }
+if test $ac_cv_have_decl_strndup = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRNDUP 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRNDUP 0
+_ACEOF
+
+
+fi
+
+
+{ echo "$as_me:$LINENO: checking whether strnlen is declared" >&5
+echo $ECHO_N "checking whether strnlen is declared... $ECHO_C" >&6; }
+if test "${ac_cv_have_decl_strnlen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+#ifndef strnlen
+ (void) strnlen;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_strnlen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_strnlen=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_strnlen" >&5
+echo "${ECHO_T}$ac_cv_have_decl_strnlen" >&6; }
+if test $ac_cv_have_decl_strnlen = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRNLEN 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_STRNLEN 0
+_ACEOF
+
+
+fi
+
+
+
+ GNULIB_CHOWN=0;
+ GNULIB_DUP2=0;
+ GNULIB_FCHDIR=0;
+ GNULIB_FTRUNCATE=0;
+ GNULIB_GETCWD=0;
+ GNULIB_GETLOGIN_R=0;
+ GNULIB_READLINK=0;
+ GNULIB_SLEEP=0;
+ HAVE_DUP2=1;
+ HAVE_FTRUNCATE=1;
+ HAVE_READLINK=1;
+ HAVE_SLEEP=1;
+ HAVE_DECL_GETLOGIN_R=1;
+ REPLACE_CHOWN=0;
+ REPLACE_FCHDIR=0;
+ REPLACE_GETCWD=0;
+
+
+
+
+
+
+
+
+
+
+
+{ echo "$as_me:$LINENO: checking whether utime accepts a null argument" >&5
+echo $ECHO_N "checking whether utime accepts a null argument... $ECHO_C" >&6; }
+if test "${ac_cv_func_utime_null+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ rm -f conftest.data; >conftest.data
+# Sequent interprets utime(file, 0) to mean use start of epoch. Wrong.
+if test "$cross_compiling" = yes; then
+ ac_cv_func_utime_null=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+ #ifdef HAVE_UTIME_H
+ # include <utime.h>
+ #endif
+int
+main ()
+{
+struct stat s, t;
+ return ! (stat ("conftest.data", &s) == 0
+ && utime ("conftest.data", 0) == 0
+ && stat ("conftest.data", &t) == 0
+ && t.st_mtime >= s.st_mtime
+ && t.st_mtime - s.st_mtime < 120);
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_utime_null=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_utime_null=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_utime_null" >&5
+echo "${ECHO_T}$ac_cv_func_utime_null" >&6; }
+if test $ac_cv_func_utime_null = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_UTIME_NULL 1
+_ACEOF
+
+fi
+rm -f conftest.data
+
+
+
+
+
+
+
+
+
+
+
+
+ { echo "$as_me:$LINENO: checking for struct utimbuf" >&5
+echo $ECHO_N "checking for struct utimbuf... $ECHO_C" >&6; }
+if test "${gl_cv_sys_struct_utimbuf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#if HAVE_SYS_TIME_H
+ #include <sys/time.h>
+ #endif
+ #include <time.h>
+ #ifdef HAVE_UTIME_H
+ #include <utime.h>
+ #endif
+
+int
+main ()
+{
+static struct utimbuf x; x.actime = x.modtime;
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_sys_struct_utimbuf=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_sys_struct_utimbuf=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $gl_cv_sys_struct_utimbuf" >&5
+echo "${ECHO_T}$gl_cv_sys_struct_utimbuf" >&6; }
+
+ if test $gl_cv_sys_struct_utimbuf = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_STRUCT_UTIMBUF 1
+_ACEOF
+
+ fi
+
+
+
+
+
+
+
+
+ { echo "$as_me:$LINENO: checking for wint_t" >&5
+echo $ECHO_N "checking for wint_t... $ECHO_C" >&6; }
+if test "${gt_cv_c_wint_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gt_cv_c_wint_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_c_wint_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $gt_cv_c_wint_t" >&5
+echo "${ECHO_T}$gt_cv_c_wint_t" >&6; }
+ if test $gt_cv_c_wint_t = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_WINT_T 1
+_ACEOF
+
+ fi
+
+
+
+
+
+ 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_source_base='lib'
+LTALLOCA=`echo "$ALLOCA" | sed '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
+ { echo "$as_me:$LINENO: checking for alloca as a compiler built-in" >&5
+echo $ECHO_N "checking for alloca as a compiler built-in... $ECHO_C" >&6; }
+if test "${gl_cv_rpl_alloca+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#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
+{ echo "$as_me:$LINENO: result: $gl_cv_rpl_alloca" >&5
+echo "${ECHO_T}$gl_cv_rpl_alloca" >&6; }
+ if test $gl_cv_rpl_alloca = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ALLOCA 1
+_ACEOF
+
+ ALLOCA_H=alloca.h
+ else
+ ALLOCA_H=
+ fi
+ else
+ ALLOCA_H=alloca.h
+ fi
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ALLOCA_H 1
+_ACEOF
+
+
+
+ { echo "$as_me:$LINENO: checking whether to enable assertions" >&5
+echo $ECHO_N "checking whether to enable assertions... $ECHO_C" >&6; }
+ # Check whether --enable-assert was given.
+if test "${enable_assert+set}" = set; then
+ enableval=$enable_assert; { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+
+cat >>confdefs.h <<\_ACEOF
+#define NDEBUG 1
+_ACEOF
+
+else
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+
+fi
+
+
+
+
+for ac_func in atexit
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <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 $ac_func
+
+/* 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 $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_atexit = no; then
+
+ :
+
+ fi
+
+ { echo "$as_me:$LINENO: checking for GNU libc compatible calloc" >&5
+echo $ECHO_N "checking for GNU libc compatible calloc... $ECHO_C" >&6; }
+if test "${ac_cv_func_calloc_0_nonnull+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_calloc_0_nonnull=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+exit (!calloc (0, 0) || calloc ((size_t) -1 / 8 + 1, 8));
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_calloc_0_nonnull=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_calloc_0_nonnull=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_calloc_0_nonnull" >&5
+echo "${ECHO_T}$ac_cv_func_calloc_0_nonnull" >&6; }
+if test $ac_cv_func_calloc_0_nonnull = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_CALLOC 1
+_ACEOF
+
+else
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_CALLOC 0
+_ACEOF
+
+ gl_LIBOBJS="$gl_LIBOBJS calloc.$ac_objext"
+
+cat >>confdefs.h <<\_ACEOF
+#define calloc rpl_calloc
+_ACEOF
+
+fi
+
+
+
+
+ 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"
+
+ :
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS basename.$ac_objext"
+ gl_LIBOBJS="$gl_LIBOBJS dirname.$ac_objext"
+ gl_LIBOBJS="$gl_LIBOBJS stripslash.$ac_objext"
+
+
+
+
+
+
+
+ { echo "$as_me:$LINENO: checking whether // is distinct from /" >&5
+echo $ECHO_N "checking whether // is distinct from /... $ECHO_C" >&6; }
+if test "${gl_cv_double_slash_root+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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 / //`
+ 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
+{ echo "$as_me:$LINENO: result: $gl_cv_double_slash_root" >&5
+echo "${ECHO_T}$gl_cv_double_slash_root" >&6; }
+ if test "$gl_cv_double_slash_root" = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define DOUBLE_SLASH_IS_DISTINCT_ROOT 1
+_ACEOF
+
+ fi
+
+
+ { echo "$as_me:$LINENO: checking for error_at_line" >&5
+echo $ECHO_N "checking for error_at_line... $ECHO_C" >&6; }
+if test "${ac_cv_lib_error_at_line+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <error.h>
+int
+main ()
+{
+error_at_line (0, 0, "", 0, "an error occurred");
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_error_at_line=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_error_at_line=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_error_at_line" >&5
+echo "${ECHO_T}$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
+
+
+
+ :
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS exitfail.$ac_objext"
+
+ :
+
+
+
+
+
+
+
+
+
+for ac_func in __fpending
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <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 $ac_func
+
+/* 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 $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ fp_headers='
+# include <stdio.h>
+# if HAVE_STDIO_EXT_H
+# include <stdio_ext.h>
+# endif
+'
+ { echo "$as_me:$LINENO: checking whether __fpending is declared" >&5
+echo $ECHO_N "checking whether __fpending is declared... $ECHO_C" >&6; }
+if test "${ac_cv_have_decl___fpending+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$fp_headers
+
+int
+main ()
+{
+#ifndef __fpending
+ (void) __fpending;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl___fpending=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl___fpending=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_have_decl___fpending" >&5
+echo "${ECHO_T}$ac_cv_have_decl___fpending" >&6; }
+if test $ac_cv_have_decl___fpending = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL___FPENDING 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL___FPENDING 0
+_ACEOF
+
+
+fi
+
+
+ if test $ac_cv_func___fpending = no; then
+ { echo "$as_me:$LINENO: checking how to determine the number of pending output bytes on a stream" >&5
+echo $ECHO_N "checking how to determine the number of pending output bytes on a stream... $ECHO_C" >&6; }
+if test "${ac_cv_sys_pending_output_n_bytes+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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)' \
+ \
+ '# old glibc?' \
+ 'fp->__bufp - fp->__buffer' \
+ \
+ '# old glibc iostream?' \
+ 'fp->_pptr - fp->_pbase' \
+ \
+ '# 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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdio.h>
+
+int
+main ()
+{
+FILE *fp = stdin; (void) ($ac_expr);
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ fp_done=yes
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+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
+{ echo "$as_me:$LINENO: result: $ac_cv_sys_pending_output_n_bytes" >&5
+echo "${ECHO_T}$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
+
+ fi
+
+
+ { echo "$as_me:$LINENO: checking whether free (NULL) is known to work" >&5
+echo $ECHO_N "checking whether free (NULL) is known to work... $ECHO_C" >&6; }
+if test "${gl_cv_func_free+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <unistd.h>
+int
+main ()
+{
+#if _POSIX_VERSION < 199009L && \
+ (defined unix || defined _unix || defined _unix_ \
+ || defined __unix || defined __unix__)
+ #error "'free (NULL)' is not known to work"
+ #endif
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_func_free=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_free=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $gl_cv_func_free" >&5
+echo "${ECHO_T}$gl_cv_func_free" >&6; }
+
+ if test $gl_cv_func_free = no; then
+ gl_LIBOBJS="$gl_LIBOBJS free.$ac_objext"
+
+cat >>confdefs.h <<\_ACEOF
+#define free rpl_free
+_ACEOF
+
+ fi
+
+
+
+ if test -n "$GETOPT_H"; then
+
+ gl_LIBOBJS="$gl_LIBOBJS getopt.$ac_objext"
+ gl_LIBOBJS="$gl_LIBOBJS getopt1.$ac_objext"
+
+ GETOPT_H=getopt.h
+
+cat >>confdefs.h <<\_ACEOF
+#define __GETOPT_PREFIX rpl_
+_ACEOF
+
+
+
+
+
+
+
+
+
+
+fi
+
+
+
+
+
+
+
+ { echo "$as_me:$LINENO: checking whether the compiler generally respects inline" >&5
+echo $ECHO_N "checking whether the compiler generally respects inline... $ECHO_C" >&6; }
+if test "${gl_cv_c_inline_effective+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test $ac_cv_c_inline = no; then
+ gl_cv_c_inline_effective=no
+ else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifdef __NO_INLINE__
+ #error "inline is not effective"
+ #endif
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_c_inline_effective=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_c_inline_effective=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+
+fi
+{ echo "$as_me:$LINENO: result: $gl_cv_c_inline_effective" >&5
+echo "${ECHO_T}$gl_cv_c_inline_effective" >&6; }
+ if test $gl_cv_c_inline_effective = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_INLINE 1
+_ACEOF
+
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { echo "$as_me:$LINENO: checking whether inttypes.h conforms to C99" >&5
+echo $ECHO_N "checking whether inttypes.h conforms to C99... $ECHO_C" >&6; }
+if test "${gl_cv_header_working_inttypes_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ gl_cv_header_working_inttypes_h=no
+ if test "$gl_cv_header_working_stdint_h" = yes \
+ && test $ac_cv_header_inttypes_h = yes \
+ && test "$ac_cv_have_decl_imaxabs" = yes \
+ && test "$ac_cv_have_decl_imaxdiv" = yes \
+ && test "$ac_cv_have_decl_strtoimax" = yes \
+ && test "$ac_cv_have_decl_strtoumax" = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+
+ /* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <stddef.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 __STDC_FORMAT_MACROS 1 /* to make it work also in C++ mode */
+#include ABSOLUTE_INTTYPES_H
+
+/* No need to duplicate the tests of stdint.m4; they are subsumed by
+ $gl_cv_header_working_stdint_h = yes. */
+
+/* Tests for macros supposed to be defined in inttypes.h. */
+
+const char *k = /* implicit string concatenation */
+#ifdef INT8_MAX
+ PRId8 PRIi8
+#endif
+#ifdef UINT8_MAX
+ PRIo8 PRIu8 PRIx8 PRIX8
+#endif
+#ifdef INT16_MAX
+ PRId16 PRIi16
+#endif
+#ifdef UINT16_MAX
+ PRIo16 PRIu16 PRIx16 PRIX16
+#endif
+#ifdef INT32_MAX
+ PRId32 PRIi32
+#endif
+#ifdef UINT32_MAX
+ PRIo32 PRIu32 PRIx32 PRIX32
+#endif
+#ifdef INT64_MAX
+ PRId64 PRIi64
+#endif
+#ifdef UINT64_MAX
+ PRIo64 PRIu64 PRIx64 PRIX64
+#endif
+ PRIdLEAST8 PRIiLEAST8 PRIoLEAST8 PRIuLEAST8 PRIxLEAST8 PRIXLEAST8
+ PRIdLEAST16 PRIiLEAST16 PRIoLEAST16 PRIuLEAST16 PRIxLEAST16 PRIXLEAST16
+ PRIdLEAST32 PRIiLEAST32 PRIoLEAST32 PRIuLEAST32 PRIxLEAST32 PRIXLEAST32
+ PRIdLEAST64 PRIiLEAST64
+ PRIoLEAST64 PRIuLEAST64 PRIxLEAST64 PRIXLEAST64
+ PRIdFAST8 PRIiFAST8 PRIoFAST8 PRIuFAST8 PRIxFAST8 PRIXFAST8
+ PRIdFAST16 PRIiFAST16 PRIoFAST16 PRIuFAST16 PRIxFAST16 PRIXFAST16
+ PRIdFAST32 PRIiFAST32 PRIoFAST32 PRIuFAST32 PRIxFAST32 PRIXFAST32
+ PRIdFAST64 PRIiFAST64
+ PRIoFAST64 PRIuFAST64 PRIxFAST64 PRIXFAST64
+ PRIdMAX PRIiMAX PRIoMAX PRIuMAX PRIxMAX PRIXMAX
+#ifdef INTPTR_MAX
+ PRIdPTR PRIiPTR
+#endif
+#ifdef UINTPTR_MAX
+ PRIoPTR PRIuPTR PRIxPTR PRIXPTR
+#endif
+ ;
+const char *l = /* implicit string concatenation */
+#ifdef INT8_MAX
+ SCNd8 SCNi8
+#endif
+#ifdef UINT8_MAX
+ SCNo8 SCNu8 SCNx8
+#endif
+#ifdef INT16_MAX
+ SCNd16 SCNi16
+#endif
+#ifdef UINT16_MAX
+ SCNo16 SCNu16 SCNx16
+#endif
+#ifdef INT32_MAX
+ SCNd32 SCNi32
+#endif
+#ifdef UINT32_MAX
+ SCNo32 SCNu32 SCNx32
+#endif
+#ifdef INT64_MAX
+ SCNd64 SCNi64
+#endif
+#ifdef UINT64_MAX
+ SCNo64 SCNu64 SCNx64
+#endif
+ SCNdLEAST8 SCNiLEAST8 SCNoLEAST8 SCNuLEAST8 SCNxLEAST8
+ SCNdLEAST16 SCNiLEAST16 SCNoLEAST16 SCNuLEAST16 SCNxLEAST16
+ SCNdLEAST32 SCNiLEAST32 SCNoLEAST32 SCNuLEAST32 SCNxLEAST32
+ SCNdLEAST64 SCNiLEAST64
+ SCNoLEAST64 SCNuLEAST64 SCNxLEAST64
+ SCNdFAST8 SCNiFAST8 SCNoFAST8 SCNuFAST8 SCNxFAST8
+ SCNdFAST16 SCNiFAST16 SCNoFAST16 SCNuFAST16 SCNxFAST16
+ SCNdFAST32 SCNiFAST32 SCNoFAST32 SCNuFAST32 SCNxFAST32
+ SCNdFAST64 SCNiFAST64
+ SCNoFAST64 SCNuFAST64 SCNxFAST64
+ SCNdMAX SCNiMAX SCNoMAX SCNuMAX SCNxMAX
+#ifdef INTPTR_MAX
+ SCNdPTR SCNiPTR
+#endif
+#ifdef UINTPTR_MAX
+ SCNoPTR SCNuPTR SCNxPTR
+#endif
+ ;
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_header_working_inttypes_h=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ fi
+fi
+{ echo "$as_me:$LINENO: result: $gl_cv_header_working_inttypes_h" >&5
+echo "${ECHO_T}$gl_cv_header_working_inttypes_h" >&6; }
+
+ if false && test $gl_cv_header_working_inttypes_h = yes; then
+ INTTYPES_H=''
+ else
+
+
+ if test $ac_cv_header_inttypes_h = yes; then
+ { echo "$as_me:$LINENO: checking absolute name of <inttypes.h>" >&5
+echo $ECHO_N "checking absolute name of <inttypes.h>... $ECHO_C" >&6; }
+if test "${gl_cv_absolute_inttypes_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_inttypes_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <inttypes.h>
+_ACEOF
+ gl_cv_absolute_inttypes_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/inttypes.h#{s#.*"\(.*/inttypes.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ echo "$as_me:$LINENO: result: $gl_cv_absolute_inttypes_h" >&5
+echo "${ECHO_T}$gl_cv_absolute_inttypes_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_INTTYPES_H "$gl_cv_absolute_inttypes_h"
+_ACEOF
+
+
+ ABSOLUTE_INTTYPES_H=\"$gl_cv_absolute_inttypes_h\"
+ else
+ ABSOLUTE_INTTYPES_H=\"no/such/file/inttypes.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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdint.h>
+ extern intptr_t foo;
+ extern $gltype1 foo;
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ PRIPTR_PREFIX='"'$glpfx'"'
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ test -n "$PRIPTR_PREFIX" && break
+ done
+ fi
+
+
+ if test "$ac_cv_have_decl_imaxabs" = yes; then
+ HAVE_DECL_IMAXABS=1
+ else
+ HAVE_DECL_IMAXABS=0
+ fi
+
+ if test "$ac_cv_have_decl_imaxdiv" = yes; then
+ HAVE_DECL_IMAXDIV=1
+ else
+ HAVE_DECL_IMAXDIV=0
+ fi
+
+ if test "$ac_cv_have_decl_strtoimax" = yes; then
+ HAVE_DECL_STRTOIMAX=1
+ else
+ HAVE_DECL_STRTOIMAX=0
+ fi
+
+ if test "$ac_cv_have_decl_strtoumax" = yes; then
+ HAVE_DECL_STRTOUMAX=1
+ else
+ HAVE_DECL_STRTOUMAX=0
+ fi
+
+ INTTYPES_H='inttypes.h'
+ fi
+
+
+
+ { echo "$as_me:$LINENO: checking for flag to ignore unused libraries" >&5
+echo $ECHO_N "checking for flag to ignore unused libraries... $ECHO_C" >&6; }
+if test "${gl_cv_ignore_unused_libraries+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ gl_cv_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 '-z ignore'.
+ # 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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ gl_cv_ignore_unused_libraries=$gl_flags
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LDFLAGS=$gl_saved_ldflags
+ test "$gl_cv_ignore_unused_libraries" != none && break
+ done
+ LIBS=$gl_saved_libs
+fi
+{ echo "$as_me:$LINENO: result: $gl_cv_ignore_unused_libraries" >&5
+echo "${ECHO_T}$gl_cv_ignore_unused_libraries" >&6; }
+
+ test "$gl_cv_ignore_unused_libraries" != none &&
+ LDFLAGS="$LDFLAGS $gl_cv_ignore_unused_libraries"
+
+
+
+
+
+
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS long-options.$ac_objext"
+
+
+
+for ac_header in stdlib.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-parted@gnu.org ##
+## --------------------------------- ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+{ echo "$as_me:$LINENO: checking for GNU libc compatible malloc" >&5
+echo $ECHO_N "checking for GNU libc compatible malloc... $ECHO_C" >&6; }
+if test "${ac_cv_func_malloc_0_nonnull+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_malloc_0_nonnull=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_malloc_0_nonnull=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_malloc_0_nonnull=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_malloc_0_nonnull" >&5
+echo "${ECHO_T}$ac_cv_func_malloc_0_nonnull" >&6; }
+if test $ac_cv_func_malloc_0_nonnull = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MALLOC 1
+_ACEOF
+
+else
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_MALLOC 0
+_ACEOF
+
+ gl_LIBOBJS="$gl_LIBOBJS malloc.$ac_objext"
+
+cat >>confdefs.h <<\_ACEOF
+#define malloc rpl_malloc
+_ACEOF
+
+fi
+
+
+
+
+
+for ac_func in memchr
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <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 $ac_func
+
+/* 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 $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_memchr = no; then
+
+
+for ac_header in bp-sym.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-parted@gnu.org ##
+## --------------------------------- ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+ fi
+
+
+ { echo "$as_me:$LINENO: checking for working memcmp" >&5
+echo $ECHO_N "checking for working memcmp... $ECHO_C" >&6; }
+if test "${ac_cv_func_memcmp_working+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_memcmp_working=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+
+ /* Some versions of memcmp are not 8-bit clean. */
+ char c0 = '\100', c1 = '\200', c2 = '\201';
+ if (memcmp(&c0, &c2, 1) >= 0 || memcmp(&c1, &c2, 1) >= 0)
+ return 1;
+
+ /* The Next x86 OpenStep bug shows up only when comparing 16 bytes
+ or more and with at least one buffer not starting on a 4-byte boundary.
+ William Lewis provided this test program. */
+ {
+ char foo[21];
+ char bar[21];
+ int i;
+ for (i = 0; i < 4; i++)
+ {
+ char *a = foo + i;
+ char *b = bar + i;
+ strcpy (a, "--------01111111");
+ strcpy (b, "--------10000000");
+ if (memcmp (a, b, 16) >= 0)
+ return 1;
+ }
+ return 0;
+ }
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_memcmp_working=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_memcmp_working=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_memcmp_working" >&5
+echo "${ECHO_T}$ac_cv_func_memcmp_working" >&6; }
+test $ac_cv_func_memcmp_working = no && gl_LIBOBJS="$gl_LIBOBJS memcmp.$ac_objext"
+
+ if test $ac_cv_func_memcmp_working = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define memcmp rpl_memcmp
+_ACEOF
+
+ :
+ fi
+
+
+
+for ac_func in memcpy
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <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 $ac_func
+
+/* 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 $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_memcpy = no; then
+
+ :
+
+ fi
+
+
+
+for ac_func in memmove
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <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 $ac_func
+
+/* 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 $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_memmove = no; then
+
+ :
+
+ fi
+
+
+
+for ac_func in memset
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <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 $ac_func
+
+/* 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 $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_memset = no; then
+
+ :
+
+ fi
+
+
+ gl_LIBOBJS="$gl_LIBOBJS quotearg.$ac_objext"
+
+
+
+
+
+
+
+ { echo "$as_me:$LINENO: checking for mbstate_t" >&5
+echo $ECHO_N "checking for mbstate_t... $ECHO_C" >&6; }
+if test "${ac_cv_type_mbstate_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+# include <wchar.h>
+int
+main ()
+{
+mbstate_t x; return sizeof x;
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_mbstate_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_mbstate_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_mbstate_t" >&5
+echo "${ECHO_T}$ac_cv_type_mbstate_t" >&6; }
+ if test $ac_cv_type_mbstate_t = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MBSTATE_T 1
+_ACEOF
+
+ else
+
+cat >>confdefs.h <<\_ACEOF
+#define mbstate_t int
+_ACEOF
+
+ fi
+
+ { echo "$as_me:$LINENO: checking whether mbrtowc and mbstate_t are properly declared" >&5
+echo $ECHO_N "checking whether mbrtowc and mbstate_t are properly declared... $ECHO_C" >&6; }
+if test "${gl_cv_func_mbrtowc+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <wchar.h>
+int
+main ()
+{
+wchar_t wc;
+ char const s[] = "";
+ size_t n = 1;
+ mbstate_t state;
+ return ! (sizeof state && (mbrtowc) (&wc, s, n, &state));
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ gl_cv_func_mbrtowc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_mbrtowc=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $gl_cv_func_mbrtowc" >&5
+echo "${ECHO_T}$gl_cv_func_mbrtowc" >&6; }
+ if test $gl_cv_func_mbrtowc = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_MBRTOWC 1
+_ACEOF
+
+ fi
+
+
+
+for ac_header in stdlib.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-parted@gnu.org ##
+## --------------------------------- ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+{ echo "$as_me:$LINENO: checking for GNU libc compatible realloc" >&5
+echo $ECHO_N "checking for GNU libc compatible realloc... $ECHO_C" >&6; }
+if test "${ac_cv_func_realloc_0_nonnull+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_realloc_0_nonnull=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_realloc_0_nonnull=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_realloc_0_nonnull=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_realloc_0_nonnull" >&5
+echo "${ECHO_T}$ac_cv_func_realloc_0_nonnull" >&6; }
+if test $ac_cv_func_realloc_0_nonnull = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_REALLOC 1
+_ACEOF
+
+else
+ cat >>confdefs.h <<\_ACEOF
+#define HAVE_REALLOC 0
+_ACEOF
+
+ gl_LIBOBJS="$gl_LIBOBJS realloc.$ac_objext"
+
+cat >>confdefs.h <<\_ACEOF
+#define realloc rpl_realloc
+_ACEOF
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+# 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.
+ { echo "$as_me:$LINENO: checking for working re_compile_pattern" >&5
+echo $ECHO_N "checking for working re_compile_pattern... $ECHO_C" >&6; }
+if test "${gl_cv_func_re_compile_pattern_working+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_re_compile_pattern_working=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+ #if HAVE_LOCALE_H
+ #include <locale.h>
+ #endif
+ #include <limits.h>
+ #include <regex.h>
+
+int
+main ()
+{
+static struct re_pattern_buffer regex;
+ unsigned char folded_chars[UCHAR_MAX + 1];
+ int i;
+ const char *s;
+ struct re_registers regs;
+
+ #if HAVE_LOCALE_H
+ /* 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 (®ex, 0, sizeof regex);
+ s = re_compile_pattern (pat, sizeof pat - 1, ®ex);
+ if (s)
+ return 1;
+ if (re_search (®ex, data, sizeof data - 1,
+ 0, sizeof data - 1, ®s)
+ != -1)
+ return 1;
+ if (! setlocale (LC_ALL, "C"))
+ return 1;
+ }
+ #endif
+
+ /* This test is from glibc bug 3957, reported by Andrew Mackey. */
+ re_set_syntax (RE_SYNTAX_EGREP | RE_HAT_LISTS_NOT_NEWLINE);
+ memset (®ex, 0, sizeof regex);
+ s = re_compile_pattern ("a[^x]b", 6, ®ex);
+ if (s)
+ return 1;
+
+ /* This should fail, but succeeds for glibc-2.5. */
+ if (re_search (®ex, "a\nb", 3, 0, 3, ®s) != -1)
+ return 1;
+
+ /* This regular expression is from Spencer ere test number 75
+ in grep-2.3. */
+ re_set_syntax (RE_SYNTAX_POSIX_EGREP);
+ memset (®ex, 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, ®ex);
+ /* This should fail with _Invalid character class name_ error. */
+ if (!s)
+ return 1;
+
+ /* This should succeed, but does not for glibc-2.1.3. */
+ memset (®ex, 0, sizeof regex);
+ s = re_compile_pattern ("{1", 2, ®ex);
+
+ if (s)
+ return 1;
+
+ /* The following example is derived from a problem report
+ against gawk from Jorge Stolfi <stolfi@ic.unicamp.br>. */
+ memset (®ex, 0, sizeof regex);
+ s = re_compile_pattern ("[an\371]*n", 7, ®ex);
+ if (s)
+ return 1;
+
+ /* This should match, but does not for glibc-2.2.1. */
+ if (re_match (®ex, "an", 2, 0, ®s) != 2)
+ return 1;
+
+ memset (®ex, 0, sizeof regex);
+ s = re_compile_pattern ("x", 1, ®ex);
+ if (s)
+ return 1;
+
+ /* glibc-2.2.93 does not work with a negative RANGE argument. */
+ if (re_search (®ex, "wxy", 3, 2, -2, ®s) != 1)
+ return 1;
+
+ /* 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 (®ex, 0, sizeof regex);
+ s = re_compile_pattern ("x", 1, ®ex);
+ if (s)
+ return 1;
+
+ if (re_search (®ex, "WXY", 3, 0, 3, ®s) < 0)
+ return 1;
+
+ /* REG_STARTEND was added to glibc on 2004-01-15.
+ Reject older versions. */
+ if (! REG_STARTEND)
+ return 1;
+
+ /* Reject hosts whose regoff_t values are too narrow.
+ These include glibc 2.3.5 on hosts with 64-bit ptrdiff_t
+ and 32-bit int. */
+ if (sizeof (regoff_t) < sizeof (ptrdiff_t)
+ || sizeof (regoff_t) < sizeof (ssize_t))
+ return 1;
+
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_re_compile_pattern_working=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+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.$ac_ext
+fi
+
+
+fi
+{ echo "$as_me:$LINENO: result: $gl_cv_func_re_compile_pattern_working" >&5
+echo "${ECHO_T}$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
+ ;;
+ *) { { echo "$as_me:$LINENO: error: Invalid value for --with-included-regex: $with_included_regex" >&5
+echo "$as_me: error: Invalid value for --with-included-regex: $with_included_regex" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ esac
+
+ if test $ac_use_included_regex = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define _REGEX_LARGE_OFFSETS 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define re_syntax_options rpl_re_syntax_options
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define re_set_syntax rpl_re_set_syntax
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define re_compile_pattern rpl_re_compile_pattern
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define re_compile_fastmap rpl_re_compile_fastmap
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define re_search rpl_re_search
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define re_search_2 rpl_re_search_2
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define re_match rpl_re_match
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define re_match_2 rpl_re_match_2
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define re_set_registers rpl_re_set_registers
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define re_comp rpl_re_comp
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define re_exec rpl_re_exec
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define regcomp rpl_regcomp
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define regexec rpl_regexec
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define regerror rpl_regerror
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define regfree rpl_regfree
+_ACEOF
+
+ gl_LIBOBJS="$gl_LIBOBJS regex.$ac_objext"
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { echo "$as_me:$LINENO: checking whether isblank is declared" >&5
+echo $ECHO_N "checking whether isblank is declared... $ECHO_C" >&6; }
+if test "${ac_cv_have_decl_isblank+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ctype.h>
+
+int
+main ()
+{
+#ifndef isblank
+ (void) isblank;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_have_decl_isblank=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_have_decl_isblank=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_have_decl_isblank" >&5
+echo "${ECHO_T}$ac_cv_have_decl_isblank" >&6; }
+if test $ac_cv_have_decl_isblank = yes; then
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ISBLANK 1
+_ACEOF
+
+
+else
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ISBLANK 0
+_ACEOF
+
+
+fi
+
+
+
+ fi
+
+
+ { echo "$as_me:$LINENO: checking whether rename is broken" >&5
+echo $ECHO_N "checking whether rename is broken... $ECHO_C" >&6; }
+if test "${gl_cv_func_rename_trailing_slash_bug+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ rm -rf conftest.d1 conftest.d2
+ mkdir conftest.d1 ||
+ { { echo "$as_me:$LINENO: error: cannot create temporary directory" >&5
+echo "$as_me: error: cannot create temporary directory" >&2;}
+ { (exit 1); exit 1; }; }
+ if test "$cross_compiling" = yes; then
+ gl_cv_func_rename_trailing_slash_bug=yes
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+# include <stdio.h>
+# include <stdlib.h>
+ int
+ main ()
+ {
+ exit (rename ("conftest.d1/", "conftest.d2") ? 1 : 0);
+ }
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_rename_trailing_slash_bug=no
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_rename_trailing_slash_bug=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+ rm -rf conftest.d1 conftest.d2
+
+fi
+{ echo "$as_me:$LINENO: result: $gl_cv_func_rename_trailing_slash_bug" >&5
+echo "${ECHO_T}$gl_cv_func_rename_trailing_slash_bug" >&6; }
+ if test $gl_cv_func_rename_trailing_slash_bug = yes; then
+ gl_LIBOBJS="$gl_LIBOBJS rename.$ac_objext"
+
+cat >>confdefs.h <<\_ACEOF
+#define rename rpl_rename
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define RENAME_TRAILING_SLASH_BUG 1
+_ACEOF
+
+ :
+ fi
+
+
+
+for ac_func in rpmatch
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <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 $ac_func
+
+/* 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 $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_rpmatch = no; then
+ :
+ fi
+
+
+ gl_LIBOBJS="$gl_LIBOBJS safe-read.$ac_objext"
+
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS safe-write.$ac_objext"
+
+
+
+
+
+
+
+
+ { echo "$as_me:$LINENO: checking for ssize_t" >&5
+echo $ECHO_N "checking for ssize_t... $ECHO_C" >&6; }
+if test "${gt_cv_ssize_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <sys/types.h>
+int
+main ()
+{
+int x = sizeof (ssize_t *) + sizeof (ssize_t);
+ return !x;
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gt_cv_ssize_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_ssize_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $gt_cv_ssize_t" >&5
+echo "${ECHO_T}$gt_cv_ssize_t" >&6; }
+ if test $gt_cv_ssize_t = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define ssize_t int
+_ACEOF
+
+ fi
+
+
+ { echo "$as_me:$LINENO: checking for va_copy" >&5
+echo $ECHO_N "checking for va_copy... $ECHO_C" >&6; }
+ if test "${gl_cv_func_va_copy+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdarg.h>
+int
+main ()
+{
+
+#ifndef va_copy
+void (*func) (va_list, va_list) = va_copy;
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_func_va_copy=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func_va_copy=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ { echo "$as_me:$LINENO: result: $gl_cv_func_va_copy" >&5
+echo "${ECHO_T}$gl_cv_func_va_copy" >&6; }
+ if test $gl_cv_func_va_copy = no; then
+ # Provide a substitute, either __va_copy or as a simple assignment.
+ if test "${gl_cv_func___va_copy+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdarg.h>
+int
+main ()
+{
+
+#ifndef __va_copy
+error, bail out
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_func___va_copy=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_func___va_copy=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+ if test $gl_cv_func___va_copy = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define va_copy __va_copy
+_ACEOF
+
+ else
+
+
+
+cat >>confdefs.h <<\_ACEOF
+#define va_copy gl_va_copy
+_ACEOF
+
+ fi
+ 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 "$ac_cv_type__Bool" = yes; then
+ HAVE__BOOL=1
+ else
+ HAVE__BOOL=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_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 $ac_cv_header_stdint_h = yes; then
+ { echo "$as_me:$LINENO: checking absolute name of <stdint.h>" >&5
+echo $ECHO_N "checking absolute name of <stdint.h>... $ECHO_C" >&6; }
+if test "${gl_cv_absolute_stdint_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_stdint_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdint.h>
+_ACEOF
+ gl_cv_absolute_stdint_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/stdint.h#{s#.*"\(.*/stdint.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ echo "$as_me:$LINENO: result: $gl_cv_absolute_stdint_h" >&5
+echo "${ECHO_T}$gl_cv_absolute_stdint_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_STDINT_H "$gl_cv_absolute_stdint_h"
+_ACEOF
+
+
+ ABSOLUTE_STDINT_H=\"$gl_cv_absolute_stdint_h\"
+ HAVE_STDINT_H=1
+ else
+ ABSOLUTE_STDINT_H=\"no/such/file/stdint.h\"
+ HAVE_STDINT_H=0
+ fi
+
+
+
+ if test $ac_cv_header_stdint_h = yes; then
+ { echo "$as_me:$LINENO: checking whether stdint.h conforms to C99" >&5
+echo $ECHO_N "checking whether stdint.h conforms to C99... $ECHO_C" >&6; }
+if test "${gl_cv_header_working_stdint_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ gl_cv_header_working_stdint_h=no
+ cat >conftest.$ac_ext <<_ACEOF
+
+ /* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.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 */
+#include ABSOLUTE_STDINT_H
+#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;
+struct s {
+ int check_PTRDIFF: PTRDIFF_MIN < (ptrdiff_t) 0 && (ptrdiff_t) 0 < PTRDIFF_MAX ? 1 : -1;
+ int check_SIG_ATOMIC: SIG_ATOMIC_MIN <= (sig_atomic_t) 0 && (sig_atomic_t) 0 < SIG_ATOMIC_MAX ? 1 : -1;
+ int check_SIZE: (size_t) 0 < SIZE_MAX ? 1 : -1;
+ int check_WCHAR: WCHAR_MIN <= (wchar_t) 0 && (wchar_t) 0 < WCHAR_MAX ? 1 : -1;
+ int check_WINT: WINT_MIN <= (wint_t) 0 && (wint_t) 0 < WINT_MAX ? 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_header_working_stdint_h=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $gl_cv_header_working_stdint_h" >&5
+echo "${ECHO_T}$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=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-parted@gnu.org ##
+## --------------------------------- ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ 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
+
+
+
+
+
+
+
+
+
+
+ for gltype in ptrdiff_t sig_atomic_t size_t wchar_t wint_t ; do
+ { echo "$as_me:$LINENO: checking for bit size of $gltype" >&5
+echo $ECHO_N "checking for bit size of $gltype... $ECHO_C" >&6; }
+if { as_var=gl_cv_bitsizeof_${gltype}; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* 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>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* 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>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* 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>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* 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>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo= ac_hi=
+fi
+
+rm -f 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
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* 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>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+int
+main ()
+{
+static int test_array [1 - 2 * !((sizeof ($gltype) * CHAR_BIT) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) result=$ac_lo;;
+'') result=unknown ;;
+esac
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+#include <limits.h>
+static long int longval () { return sizeof ($gltype) * CHAR_BIT; }
+static unsigned long int ulongval () { return sizeof ($gltype) * CHAR_BIT; }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if ((sizeof ($gltype) * CHAR_BIT) < 0)
+ {
+ long int i = longval ();
+ if (i != (sizeof ($gltype) * CHAR_BIT))
+ return 1;
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != (sizeof ($gltype) * CHAR_BIT))
+ return 1;
+ fprintf (f, "%lu\n", i);
+ }
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ result=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+result=unknown
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+ eval gl_cv_bitsizeof_${gltype}=\$result
+
+fi
+ac_res=`eval echo '${'gl_cv_bitsizeof_${gltype}'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$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
+ { echo "$as_me:$LINENO: checking whether $gltype is signed" >&5
+echo $ECHO_N "checking whether $gltype is signed... $ECHO_C" >&6; }
+if { as_var=gl_cv_type_${gltype}_signed; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ /* 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>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+ int verify[2 * (($gltype) -1 < ($gltype) 0) - 1];
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ result=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ result=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ eval gl_cv_type_${gltype}_signed=\$result
+
+fi
+ac_res=`eval echo '${'gl_cv_type_${gltype}_signed'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$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
+
+
+
+
+
+
+
+ for gltype in ptrdiff_t sig_atomic_t size_t wchar_t wint_t ; do
+ { echo "$as_me:$LINENO: checking for $gltype integer literal suffix" >&5
+echo $ECHO_N "checking for $gltype integer literal suffix... $ECHO_C" >&6; }
+if { as_var=gl_cv_type_${gltype}_suffix; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+
+ extern $gltype foo;
+ extern $gltype1 foo;
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ eval gl_cv_type_${gltype}_suffix=\$glsuf
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+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
+ac_res=`eval echo '${'gl_cv_type_${gltype}_suffix'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$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
+
+
+
+
+ { echo "$as_me:$LINENO: checking absolute name of <stdlib.h>" >&5
+echo $ECHO_N "checking absolute name of <stdlib.h>... $ECHO_C" >&6; }
+if test "${gl_cv_absolute_stdlib_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_stdlib_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <stdlib.h>
+_ACEOF
+ gl_cv_absolute_stdlib_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/stdlib.h#{s#.*"\(.*/stdlib.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ echo "$as_me:$LINENO: result: $gl_cv_absolute_stdlib_h" >&5
+echo "${ECHO_T}$gl_cv_absolute_stdlib_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_STDLIB_H "$gl_cv_absolute_stdlib_h"
+_ACEOF
+
+
+ ABSOLUTE_STDLIB_H=\"$gl_cv_absolute_stdlib_h\"
+
+
+
+
+for ac_func in strcspn
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <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 $ac_func
+
+/* 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 $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+ if test $ac_cv_func_strcspn = no; then
+ :
+ fi
+
+
+
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_have_decl_strndup = no; then
+ HAVE_DECL_STRNDUP=0
+ fi
+
+ # AIX 4.3.3, AIX 5.1 have a function that fails to add the terminating '\0'.
+ { echo "$as_me:$LINENO: checking for working strndup" >&5
+echo $ECHO_N "checking for working strndup... $ECHO_C" >&6; }
+if test "${gl_cv_func_strndup+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ { echo "$as_me:$LINENO: checking for strndup" >&5
+echo $ECHO_N "checking for strndup... $ECHO_C" >&6; }
+if test "${ac_cv_func_strndup+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define strndup to an innocuous variant, in case <limits.h> declares strndup.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define strndup innocuous_strndup
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char strndup (); 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 strndup
+
+/* 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 strndup ();
+/* 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_strndup || defined __stub___strndup
+choke me
+#endif
+
+int
+main ()
+{
+return strndup ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_strndup=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_strndup=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_strndup" >&5
+echo "${ECHO_T}$ac_cv_func_strndup" >&6; }
+if test $ac_cv_func_strndup = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#ifdef _AIX
+ too risky
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+ $EGREP "too risky" >/dev/null 2>&1; then
+ gl_cv_func_strndup=no
+else
+ gl_cv_func_strndup=yes
+fi
+rm -f conftest*
+
+else
+ gl_cv_func_strndup=no
+fi
+
+else
+ cat >conftest.$ac_ext <<_ACEOF
+
+ /* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ gl_cv_func_strndup=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+gl_cv_func_strndup=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ echo "$as_me:$LINENO: result: $gl_cv_func_strndup" >&5
+echo "${ECHO_T}$gl_cv_func_strndup" >&6; }
+ if test $gl_cv_func_strndup = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_STRNDUP 1
+_ACEOF
+
+ else
+ HAVE_STRNDUP=0
+ gl_LIBOBJS="$gl_LIBOBJS strndup.$ac_objext"
+ :
+ fi
+
+
+
+ GNULIB_STRNDUP=1
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_have_decl_strnlen = no; then
+ HAVE_DECL_STRNLEN=0
+ fi
+
+ { echo "$as_me:$LINENO: checking for working strnlen" >&5
+echo $ECHO_N "checking for working strnlen... $ECHO_C" >&6; }
+if test "${ac_cv_func_strnlen_working+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_strnlen_working=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+
+#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
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_strnlen_working=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_strnlen_working=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_strnlen_working" >&5
+echo "${ECHO_T}$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
+ # This is necessary because automake-1.6.1 doens't understand
+ # that the above use of AC_FUNC_STRNLEN means we may have to use
+ # lib/strnlen.c.
+ #AC_LIBOBJ(strnlen)
+
+cat >>confdefs.h <<\_ACEOF
+#define strnlen rpl_strnlen
+_ACEOF
+
+ :
+ fi
+
+
+
+ GNULIB_STRNLEN=1
+
+
+ { echo "$as_me:$LINENO: checking for working strtod" >&5
+echo $ECHO_N "checking for working strtod... $ECHO_C" >&6; }
+if test "${ac_cv_func_strtod+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ ac_cv_func_strtod=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+$ac_includes_default
+#ifndef strtod
+double strtod ();
+#endif
+int
+main()
+{
+ {
+ /* Some versions of Linux strtod mis-parse strings with leading '+'. */
+ char *string = " +69";
+ char *term;
+ double value;
+ value = strtod (string, &term);
+ if (value != 69 || term != (string + 4))
+ return 1;
+ }
+
+ {
+ /* Under Solaris 2.4, strtod returns the wrong value for the
+ terminating character under some conditions. */
+ char *string = "NaN";
+ char *term;
+ strtod (string, &term);
+ if (term != string && *(term - 1) == 0)
+ return 1;
+ }
+ return 0;
+}
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_strtod=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_strtod=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_strtod" >&5
+echo "${ECHO_T}$ac_cv_func_strtod" >&6; }
+if test $ac_cv_func_strtod = no; then
+ gl_LIBOBJS="$gl_LIBOBJS strtod.$ac_objext"
+{ echo "$as_me:$LINENO: checking for pow" >&5
+echo $ECHO_N "checking for pow... $ECHO_C" >&6; }
+if test "${ac_cv_func_pow+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define pow to an innocuous variant, in case <limits.h> declares pow.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define pow innocuous_pow
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char pow (); 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 pow
+
+/* 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 pow ();
+/* 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_pow || defined __stub___pow
+choke me
+#endif
+
+int
+main ()
+{
+return pow ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_pow=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_pow=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_pow" >&5
+echo "${ECHO_T}$ac_cv_func_pow" >&6; }
+
+if test $ac_cv_func_pow = no; then
+ { echo "$as_me:$LINENO: checking for pow in -lm" >&5
+echo $ECHO_N "checking for pow in -lm... $ECHO_C" >&6; }
+if test "${ac_cv_lib_m_pow+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any 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 pow ();
+int
+main ()
+{
+return pow ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_m_pow=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_m_pow=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_m_pow" >&5
+echo "${ECHO_T}$ac_cv_lib_m_pow" >&6; }
+if test $ac_cv_lib_m_pow = yes; then
+ POW_LIB=-lm
+else
+ { echo "$as_me:$LINENO: WARNING: cannot find library containing definition of pow" >&5
+echo "$as_me: WARNING: cannot find library containing definition of pow" >&2;}
+fi
+
+fi
+
+fi
+
+ if test $ac_cv_func_strtod = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define strtod rpl_strtod
+_ACEOF
+
+ :
+ fi
+
+
+
+for ac_func in strtol
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <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 $ac_func
+
+/* 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 $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ gl_LIBOBJS="$gl_LIBOBJS $ac_func.$ac_objext"
+fi
+done
+
+
+
+
+
+
+
+
+
+
+
+ if test $ac_cv_header_unistd_h = yes; then
+ HAVE_UNISTD_H=1
+ { echo "$as_me:$LINENO: checking absolute name of <unistd.h>" >&5
+echo $ECHO_N "checking absolute name of <unistd.h>... $ECHO_C" >&6; }
+if test "${gl_cv_absolute_unistd_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_unistd_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <unistd.h>
+_ACEOF
+ gl_cv_absolute_unistd_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/unistd.h#{s#.*"\(.*/unistd.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ echo "$as_me:$LINENO: result: $gl_cv_absolute_unistd_h" >&5
+echo "${ECHO_T}$gl_cv_absolute_unistd_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_UNISTD_H "$gl_cv_absolute_unistd_h"
+_ACEOF
+
+
+ ABSOLUTE_UNISTD_H=\"$gl_cv_absolute_unistd_h\"
+ else
+ HAVE_UNISTD_H=0
+ fi
+
+
+
+
+
+ if test $ac_cv_func_utime_null = no; then
+ gl_LIBOBJS="$gl_LIBOBJS utime.$ac_objext"
+
+cat >>confdefs.h <<\_ACEOF
+#define utime rpl_utime
+_ACEOF
+
+
+
+
+
+
+
+
+
+ { echo "$as_me:$LINENO: checking whether utimes accepts a null argument" >&5
+echo $ECHO_N "checking whether utimes accepts a null argument... $ECHO_C" >&6; }
+if test "${ac_cv_func_utimes_null+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ rm -f conftest.data; > conftest.data
+if test "$cross_compiling" = yes; then
+ ac_cv_func_utimes_null=no
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* In case stat has been defined to rpl_stat, undef it here. */
+#undef stat
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+int
+main () {
+struct stat s, t;
+return ! (stat ("conftest.data", &s) == 0
+ && utimes ("conftest.data", 0) == 0
+ && stat ("conftest.data", &t) == 0
+ && t.st_mtime >= s.st_mtime
+ && t.st_mtime - s.st_mtime < 120));
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_func_utimes_null=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_func_utimes_null=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+rm -f core core.* *.core
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_utimes_null" >&5
+echo "${ECHO_T}$ac_cv_func_utimes_null" >&6; }
+
+ if test $ac_cv_func_utimes_null = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_UTIMES_NULL 1
+_ACEOF
+
+ fi
+
+
+
+ fi
+
+
+ { echo "$as_me:$LINENO: checking whether <wchar.h> is standalone" >&5
+echo $ECHO_N "checking whether <wchar.h> is standalone... $ECHO_C" >&6; }
+if test "${gl_cv_header_wchar_h_standalone+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+#include <wchar.h>
+wchar_t w;
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ gl_cv_header_wchar_h_standalone=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gl_cv_header_wchar_h_standalone=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $gl_cv_header_wchar_h_standalone" >&5
+echo "${ECHO_T}$gl_cv_header_wchar_h_standalone" >&6; }
+ if test $gl_cv_header_wchar_h_standalone = yes; then
+ WCHAR_H=
+ else
+ { echo "$as_me:$LINENO: checking absolute name of <wchar.h>" >&5
+echo $ECHO_N "checking absolute name of <wchar.h>... $ECHO_C" >&6; }
+if test "${gl_cv_absolute_wchar_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_wchar_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <wchar.h>
+_ACEOF
+ gl_cv_absolute_wchar_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/wchar.h#{s#.*"\(.*/wchar.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ echo "$as_me:$LINENO: result: $gl_cv_absolute_wchar_h" >&5
+echo "${ECHO_T}$gl_cv_absolute_wchar_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_WCHAR_H "$gl_cv_absolute_wchar_h"
+_ACEOF
+
+
+ ABSOLUTE_WCHAR_H=\"$gl_cv_absolute_wchar_h\"
+ WCHAR_H=wchar.h
+ fi
+
+
+
+
+
+
+
+
+
+
+ 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
+
+
+ WCTYPE_H=wctype.h
+ if test $ac_cv_header_wctype_h = yes; then
+ if test $ac_cv_func_iswcntrl = yes; then
+ WCTYPE_H=
+ fi
+ { echo "$as_me:$LINENO: checking absolute name of <wctype.h>" >&5
+echo $ECHO_N "checking absolute name of <wctype.h>... $ECHO_C" >&6; }
+if test "${gl_cv_absolute_wctype_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+
+
+
+
+ if test $ac_cv_header_wctype_h = yes; then
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <wctype.h>
+_ACEOF
+ gl_cv_absolute_wctype_h=`(eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+sed -n '\#/wctype.h#{s#.*"\(.*/wctype.h\)".*#\1#;s#^/[^/]#//&#;p;q;}'`
+ fi
+
+fi
+{ echo "$as_me:$LINENO: result: $gl_cv_absolute_wctype_h" >&5
+echo "${ECHO_T}$gl_cv_absolute_wctype_h" >&6; }
+cat >>confdefs.h <<_ACEOF
+#define ABSOLUTE_WCTYPE_H "$gl_cv_absolute_wctype_h"
+_ACEOF
+
+
+ ABSOLUTE_WCTYPE_H=\"$gl_cv_absolute_wctype_h\"
+ HAVE_WCTYPE_H=1
+ else
+ ABSOLUTE_WCTYPE_H=\"no/such/file/wctype.h\"
+ HAVE_WCTYPE_H=0
+ fi
+
+
+
+
+
+ gl_LIBOBJS="$gl_LIBOBJS xmalloc.$ac_objext"
+
+
+
+ :
+
+
+ :
+
+
+
+
+ :
+
+
+
+
+
+
+
+
+{ echo "$as_me:$LINENO: checking for off_t" >&5
+echo $ECHO_N "checking for off_t... $ECHO_C" >&6; }
+if test "${ac_cv_type_off_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <stdio.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+
+
+typedef off_t ac__type_new_;
+int
+main ()
+{
+if ((ac__type_new_ *) 0)
+ return 0;
+if (sizeof (ac__type_new_))
+ return 0;
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_type_off_t=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_type_off_t=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_type_off_t" >&5
+echo "${ECHO_T}$ac_cv_type_off_t" >&6; }
+
+# 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.
+{ echo "$as_me:$LINENO: checking size of off_t" >&5
+echo $ECHO_N "checking size of off_t... $ECHO_C" >&6; }
+if test "${ac_cv_sizeof_off_t+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test "$cross_compiling" = yes; then
+ # Depending upon the size, compute the lo and hi bounds.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <stdio.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+
+
+ typedef off_t ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=0 ac_mid=0
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <stdio.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+
+
+ typedef off_t ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr $ac_mid + 1`
+ if test $ac_lo -le $ac_mid; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <stdio.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+
+
+ typedef off_t ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) < 0)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=-1 ac_mid=-1
+ while :; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <stdio.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+
+
+ typedef off_t ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) >= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_lo=$ac_mid; break
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_hi=`expr '(' $ac_mid ')' - 1`
+ if test $ac_mid -le $ac_hi; then
+ ac_lo= ac_hi=
+ break
+ fi
+ ac_mid=`expr 2 '*' $ac_mid`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo= ac_hi=
+fi
+
+rm -f 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
+ ac_mid=`expr '(' $ac_hi - $ac_lo ')' / 2 + $ac_lo`
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <stdio.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+
+
+ typedef off_t ac__type_sizeof_;
+int
+main ()
+{
+static int test_array [1 - 2 * !(((long int) (sizeof (ac__type_sizeof_))) <= $ac_mid)];
+test_array [0] = 0
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_hi=$ac_mid
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_lo=`expr '(' $ac_mid ')' + 1`
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+done
+case $ac_lo in
+?*) ac_cv_sizeof_off_t=$ac_lo;;
+'') if test "$ac_cv_type_off_t" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t)
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (off_t)
+See \`config.log' for more details." >&2;}
+ { (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_off_t=0
+ fi ;;
+esac
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #include <stdio.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+
+
+ typedef off_t ac__type_sizeof_;
+static long int longval () { return (long int) (sizeof (ac__type_sizeof_)); }
+static unsigned long int ulongval () { return (long int) (sizeof (ac__type_sizeof_)); }
+#include <stdio.h>
+#include <stdlib.h>
+int
+main ()
+{
+
+ FILE *f = fopen ("conftest.val", "w");
+ if (! f)
+ return 1;
+ if (((long int) (sizeof (ac__type_sizeof_))) < 0)
+ {
+ long int i = longval ();
+ if (i != ((long int) (sizeof (ac__type_sizeof_))))
+ return 1;
+ fprintf (f, "%ld\n", i);
+ }
+ else
+ {
+ unsigned long int i = ulongval ();
+ if (i != ((long int) (sizeof (ac__type_sizeof_))))
+ return 1;
+ fprintf (f, "%lu\n", i);
+ }
+ return ferror (f) || fclose (f) != 0;
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_sizeof_off_t=`cat conftest.val`
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+if test "$ac_cv_type_off_t" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot compute sizeof (off_t)
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute sizeof (off_t)
+See \`config.log' for more details." >&2;}
+ { (exit 77); exit 77; }; }
+ else
+ ac_cv_sizeof_off_t=0
+ fi
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f conftest.val
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_sizeof_off_t" >&5
+echo "${ECHO_T}$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 -a $ac_cv_sizeof_off_t -lt 8; then
+ { echo "$as_me:$LINENO: WARNING: off_t is less than 8 bytes. Using llseek syscall" >&5
+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
+# 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 --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
+
+
+{ echo "$as_me:$LINENO: checking for a sed that does not truncate output" >&5
+echo $ECHO_N "checking for a sed that does not truncate output... $ECHO_C" >&6; }
+if test "${lt_cv_path_SED+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # 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
+
+fi
+
+SED=$lt_cv_path_SED
+
+{ echo "$as_me:$LINENO: result: $SED" >&5
+echo "${ECHO_T}$SED" >&6; }
+
+
+# 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.
+ { echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&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
+ { echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
+else
+ { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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
+ { echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+{ echo "$as_me:$LINENO: checking for $LD option to reload object files" >&5
+echo $ECHO_N "checking for $LD option to reload object files... $ECHO_C" >&6; }
+if test "${lt_cv_ld_reload_flag+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_ld_reload_flag='-r'
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_ld_reload_flag" >&5
+echo "${ECHO_T}$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
+ 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
+
+{ echo "$as_me:$LINENO: checking for BSD-compatible nm" >&5
+echo $ECHO_N "checking for BSD-compatible nm... $ECHO_C" >&6; }
+if test "${lt_cv_path_NM+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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
+ test -z "$lt_cv_path_NM" && lt_cv_path_NM=nm
+fi
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_path_NM" >&5
+echo "${ECHO_T}$lt_cv_path_NM" >&6; }
+NM="$lt_cv_path_NM"
+
+{ echo "$as_me:$LINENO: checking whether ln -s works" >&5
+echo $ECHO_N "checking whether ln -s works... $ECHO_C" >&6; }
+LN_S=$as_ln_s
+if test "$LN_S" = "ln -s"; then
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no, using $LN_S" >&5
+echo "${ECHO_T}no, using $LN_S" >&6; }
+fi
+
+{ echo "$as_me:$LINENO: checking how to recognise dependent libraries" >&5
+echo $ECHO_N "checking how to recognise dependent libraries... $ECHO_C" >&6; }
+if test "${lt_cv_deplibs_check_method+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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
+aix4* | aix5*)
+ 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'.
+ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?'
+ lt_cv_file_magic_cmd='$OBJDUMP -f'
+ ;;
+
+darwin* | rhapsody*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+
+freebsd* | kfreebsd*-gnu | 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
+ ;;
+
+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]) 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
+ ;;
+
+interix3*)
+ # 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*)
+ 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=unknown
+ ;;
+
+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
+ ;;
+
+solaris*)
+ 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
+ ;;
+
+sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*)
+ lt_cv_deplibs_check_method=pass_all
+ ;;
+esac
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_deplibs_check_method" >&5
+echo "${ECHO_T}$lt_cv_deplibs_check_method" >&6; }
+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 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 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:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; 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 17567 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ 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-*linux*|ppc*-*linux*|powerpc*-*linux*|s390*-*linux*|sparc*-*linux*)
+ # Find out which ABI we are using.
+ echo 'int i;' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.o` in
+ *32-bit*)
+ case $host in
+ 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-*linux*)
+ LD="${LD-ld} -m elf_x86_64"
+ ;;
+ ppc*-*linux*|powerpc*-*linux*)
+ LD="${LD-ld} -m elf64ppc"
+ ;;
+ s390*-*linux*)
+ 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"
+ { echo "$as_me:$LINENO: checking whether the C compiler needs -belf" >&5
+echo $ECHO_N "checking whether the C compiler needs -belf... $ECHO_C" >&6; }
+if test "${lt_cv_cc_needs_belf+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ lt_cv_cc_needs_belf=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ lt_cv_cc_needs_belf=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ 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
+{ echo "$as_me:$LINENO: result: $lt_cv_cc_needs_belf" >&5
+echo "${ECHO_T}$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:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.o` in
+ *64-bit*)
+ case $lt_cv_prog_gnu_ld in
+ yes*) LD="${LD-ld} -m elf64_sparc" ;;
+ *) LD="${LD-ld} -64" ;;
+ esac
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+
+
+esac
+
+need_locks="$enable_libtool_lock"
+
+
+
+for ac_header in dlfcn.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-parted@gnu.org ##
+## --------------------------------- ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+ if test -n "$CCC"; then
+ CXX=$CCC
+ else
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CXX"; then
+ ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ 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_CXX="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+ { echo "$as_me:$LINENO: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+ test -n "$CXX" && break
+ done
+fi
+if test -z "$CXX"; then
+ ac_ct_CXX=$CXX
+ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CXX"; then
+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ 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_CXX="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+ { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+echo "${ECHO_T}$ac_ct_CXX" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CXX" && break
+done
+
+ if test "x$ac_ct_CXX" = x; then
+ CXX="g++"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+ CXX=$ac_ct_CXX
+ fi
+fi
+
+ fi
+fi
+# Provide some information about the compiler.
+echo "$as_me:$LINENO: checking for C++ compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compiler --version >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compiler -v >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compiler -V >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; }
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; }
+GXX=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; }
+if test "${ac_cv_prog_cxx_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+ ac_cxx_werror_flag=yes
+ ac_cv_prog_cxx_g=no
+ CXXFLAGS="-g"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cxx_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ CXXFLAGS=""
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+ CXXFLAGS="-g"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cxx_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+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_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+ if test "$GXX" = yes; then
+ CXXFLAGS="-g -O2"
+ else
+ CXXFLAGS="-g"
+ fi
+else
+ if test "$GXX" = yes; then
+ CXXFLAGS="-O2"
+ else
+ CXXFLAGS=
+ fi
+fi
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+depcc="$CXX" am_compiler_list=
+
+{ echo "$as_me:$LINENO: checking dependency style of $depcc" >&5
+echo $ECHO_N "checking dependency style of $depcc... $ECHO_C" >&6; }
+if test "${am_cv_CXX_dependencies_compiler_type+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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'.
+ 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_CXX_dependencies_compiler_type=none
+ if test "$am_compiler_list" = ""; then
+ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp`
+ fi
+ 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
+
+ case $depmode in
+ 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
+ ;;
+ none) break ;;
+ esac
+ # 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.
+ if depmode=$depmode \
+ source=sub/conftest.c object=sub/conftest.${OBJEXT-o} \
+ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \
+ $SHELL ./depcomp $depcc -c -o sub/conftest.${OBJEXT-o} 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 sub/conftest.${OBJEXT-o} 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_CXX_dependencies_compiler_type=$depmode
+ break
+ fi
+ fi
+ done
+
+ cd ..
+ rm -rf conftest.dir
+else
+ am_cv_CXX_dependencies_compiler_type=none
+fi
+
+fi
+{ echo "$as_me:$LINENO: result: $am_cv_CXX_dependencies_compiler_type" >&5
+echo "${ECHO_T}$am_cv_CXX_dependencies_compiler_type" >&6; }
+CXXDEPMODE=depmode=$am_cv_CXX_dependencies_compiler_type
+
+ if
+ test "x$enable_dependency_tracking" != xno \
+ && test "$am_cv_CXX_dependencies_compiler_type" = gcc3; then
+ am__fastdepCXX_TRUE=
+ am__fastdepCXX_FALSE='#'
+else
+ am__fastdepCXX_TRUE='#'
+ am__fastdepCXX_FALSE=
+fi
+
+
+
+
+if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+{ echo "$as_me:$LINENO: checking how to run the C++ preprocessor" >&5
+echo $ECHO_N "checking how to run the C++ preprocessor... $ECHO_C" >&6; }
+if test -z "$CXXCPP"; then
+ if test "${ac_cv_prog_CXXCPP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # Double quotes because CXXCPP needs to be expanded
+ for CXXCPP in "$CXX -E" "/lib/cpp"
+ do
+ ac_preproc_ok=false
+for ac_cxx_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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ break
+fi
+
+ done
+ ac_cv_prog_CXXCPP=$CXXCPP
+
+fi
+ CXXCPP=$ac_cv_prog_CXXCPP
+else
+ ac_cv_prog_CXXCPP=$CXXCPP
+fi
+{ echo "$as_me:$LINENO: result: $CXXCPP" >&5
+echo "${ECHO_T}$CXXCPP" >&6; }
+ac_preproc_ok=false
+for ac_cxx_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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#ifdef __STDC__
+# include <limits.h>
+#else
+# include <assert.h>
+#endif
+ Syntax error
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Broken: fails on valid input.
+continue
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+ # OK, works on sane cases. Now check whether nonexistent headers
+ # can be detected and how.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <ac_nonexistent.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_cxx_preproc_warn_flag$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ # Broken: success on invalid input.
+continue
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # Passes both tests.
+ac_preproc_ok=:
+break
+fi
+
+rm -f conftest.err conftest.$ac_ext
+
+done
+# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped.
+rm -f conftest.err conftest.$ac_ext
+if $ac_preproc_ok; then
+ :
+else
+ { { echo "$as_me:$LINENO: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&5
+echo "$as_me: error: C++ preprocessor \"$CXXCPP\" fails sanity check
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+fi
+
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+if test -n "$ac_tool_prefix"; then
+ for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$F77"; then
+ ac_cv_prog_F77="$F77" # 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_F77="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+F77=$ac_cv_prog_F77
+if test -n "$F77"; then
+ { echo "$as_me:$LINENO: result: $F77" >&5
+echo "${ECHO_T}$F77" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+ test -n "$F77" && break
+ done
+fi
+if test -z "$F77"; then
+ ac_ct_F77=$F77
+ for ac_prog in g77 xlf f77 frt pgf77 cf77 fort77 fl32 af77 xlf90 f90 pgf90 pghpf epcf90 gfortran g95 xlf95 f95 fort ifort ifc efc pgf95 lf95 ftn
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_F77"; then
+ ac_cv_prog_ac_ct_F77="$ac_ct_F77" # 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_F77="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_F77=$ac_cv_prog_ac_ct_F77
+if test -n "$ac_ct_F77"; then
+ { echo "$as_me:$LINENO: result: $ac_ct_F77" >&5
+echo "${ECHO_T}$ac_ct_F77" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+ test -n "$ac_ct_F77" && break
+done
+
+ if test "x$ac_ct_F77" = x; then
+ F77=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+ F77=$ac_ct_F77
+ fi
+fi
+
+
+# Provide some information about the compiler.
+echo "$as_me:$LINENO: checking for Fortran 77 compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compiler --version >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compiler -v >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compiler -V >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+rm -f a.out
+
+# If we don't use `.F' as extension, the preprocessor is not run on the
+# input file. (Note that this only needs to work for GNU compilers.)
+ac_save_ext=$ac_ext
+ac_ext=F
+{ echo "$as_me:$LINENO: checking whether we are using the GNU Fortran 77 compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU Fortran 77 compiler... $ECHO_C" >&6; }
+if test "${ac_cv_f77_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+ program main
+#ifndef __GNUC__
+ choke me
+#endif
+
+ end
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_f77_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_f77_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_f77_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_f77_compiler_gnu" >&6; }
+ac_ext=$ac_save_ext
+ac_test_FFLAGS=${FFLAGS+set}
+ac_save_FFLAGS=$FFLAGS
+FFLAGS=
+{ echo "$as_me:$LINENO: checking whether $F77 accepts -g" >&5
+echo $ECHO_N "checking whether $F77 accepts -g... $ECHO_C" >&6; }
+if test "${ac_cv_prog_f77_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ FFLAGS=-g
+cat >conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_f77_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_f77_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_prog_f77_g=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_prog_f77_g" >&5
+echo "${ECHO_T}$ac_cv_prog_f77_g" >&6; }
+if test "$ac_test_FFLAGS" = set; then
+ FFLAGS=$ac_save_FFLAGS
+elif test $ac_cv_prog_f77_g = yes; then
+ if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+ FFLAGS="-g -O2"
+ else
+ FFLAGS="-g"
+ fi
+else
+ if test "x$ac_cv_f77_compiler_gnu" = xyes; then
+ FFLAGS="-O2"
+ else
+ FFLAGS=
+ fi
+fi
+
+G77=`test $ac_compiler_gnu = yes && echo yes`
+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
+
+
+
+# Autoconf 2.13's AC_OBJEXT and AC_EXEEXT macros only works for C compilers!
+
+# find the maximum length of command line arguments
+{ echo "$as_me:$LINENO: checking the maximum length of command line arguments" >&5
+echo $ECHO_N "checking the maximum length of command line arguments... $ECHO_C" >&6; }
+if test "${lt_cv_sys_max_cmd_len+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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*)
+ # 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;
+ ;;
+
+ 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
+ ;;
+ *)
+ # 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.
+ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}}
+ while (test "X"`$SHELL $0 --fallback-echo "X$teststring" 2>/dev/null` \
+ = "XX$teststring") >/dev/null 2>&1 &&
+ new_result=`expr "X$teststring" : ".*" 2>&1` &&
+ lt_cv_sys_max_cmd_len=$new_result &&
+ test $i != 17 # 1/2 MB should be enough
+ do
+ i=`expr $i + 1`
+ teststring=$teststring$teststring
+ done
+ 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`
+ ;;
+ esac
+
+fi
+
+if test -n $lt_cv_sys_max_cmd_len ; then
+ { echo "$as_me:$LINENO: result: $lt_cv_sys_max_cmd_len" >&5
+echo "${ECHO_T}$lt_cv_sys_max_cmd_len" >&6; }
+else
+ { echo "$as_me:$LINENO: result: none" >&5
+echo "${ECHO_T}none" >&6; }
+fi
+
+
+
+
+# Check for command to grab the raw symbol name followed by C symbol from nm.
+{ echo "$as_me:$LINENO: checking command to parse $NM output from $compiler object" >&5
+echo $ECHO_N "checking command to parse $NM output from $compiler object... $ECHO_C" >&6; }
+if test "${lt_cv_sys_global_symbol_pipe+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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]*\)'
+
+# Transform an extracted symbol line into a proper C declaration
+lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^. .* \(.*\)$/extern int \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\\\", (lt_ptr) 0},/p' -e 's/^$symcode \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+
+# Define system-specific variables.
+case $host_os in
+aix*)
+ symcode='[BCDT]'
+ ;;
+cygwin* | mingw* | pw32*)
+ symcode='[ABCDGISTW]'
+ ;;
+hpux*) # Its linker distinguishes data from code symbols
+ if test "$host_cpu" = ia64; then
+ symcode='[ABCDEGRST]'
+ fi
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ ;;
+linux*)
+ if test "$host_cpu" = ia64; then
+ symcode='[ABCDGIRSTW]'
+ lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'"
+ lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (lt_ptr) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (lt_ptr) \&\2},/p'"
+ 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
+
+# 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
+
+# If we're using GNU nm, then use its standard symbol codes.
+case `$NM -V 2>&1` in
+*GNU* | *'with BFD'*)
+ symcode='[ABCDGIRSTW]' ;;
+esac
+
+# Try without a prefix undercore, 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.
+ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'"
+
+ # Check to see that the pipe works correctly.
+ pipe_works=no
+
+ rm -f conftest*
+ cat > conftest.$ac_ext <<EOF
+#ifdef __cplusplus
+extern "C" {
+#endif
+char nm_test_var;
+void nm_test_func(){}
+#ifdef __cplusplus
+}
+#endif
+int main(){nm_test_var='a';nm_test_func();return(0);}
+EOF
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Now try to grab the symbols.
+ nlist=conftest.nm
+ if { (eval echo "$as_me:$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=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && 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 <<EOF > conftest.$ac_ext
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+EOF
+ # Now generate the symbol file.
+ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | grep -v main >> conftest.$ac_ext'
+
+ cat <<EOF >> conftest.$ac_ext
+#if defined (__STDC__) && __STDC__
+# define lt_ptr_t void *
+#else
+# define lt_ptr_t char *
+# define const
+#endif
+
+/* The mapping between symbol names and symbols. */
+const struct {
+ const char *name;
+ lt_ptr_t address;
+}
+lt_preloaded_symbols[] =
+{
+EOF
+ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (lt_ptr_t) \&\2},/" < "$nlist" | grep -v main >> conftest.$ac_ext
+ cat <<\EOF >> conftest.$ac_ext
+ {0, (lt_ptr_t) 0}
+};
+
+#ifdef __cplusplus
+}
+#endif
+EOF
+ # Now try linking the two files.
+ mv conftest.$ac_objext conftstm.$ac_objext
+ lt_save_LIBS="$LIBS"
+ lt_save_CFLAGS="$CFLAGS"
+ LIBS="conftstm.$ac_objext"
+ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag"
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && test -s conftest${ac_exeext}; then
+ pipe_works=yes
+ fi
+ LIBS="$lt_save_LIBS"
+ CFLAGS="$lt_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 -f 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
+ { echo "$as_me:$LINENO: result: failed" >&5
+echo "${ECHO_T}failed" >&6; }
+else
+ { echo "$as_me:$LINENO: result: ok" >&5
+echo "${ECHO_T}ok" >&6; }
+fi
+
+{ echo "$as_me:$LINENO: checking for objdir" >&5
+echo $ECHO_N "checking for objdir... $ECHO_C" >&6; }
+if test "${lt_cv_objdir+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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
+{ echo "$as_me:$LINENO: result: $lt_cv_objdir" >&5
+echo "${ECHO_T}$lt_cv_objdir" >&6; }
+objdir=$lt_cv_objdir
+
+
+
+
+
+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
+
+# 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 to delay expansion of an escaped shell variable in a
+# double_quote_subst'ed string.
+delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g'
+
+# Sed substitution to avoid accidental globbing in evaled expressions
+no_glob_subst='s/\*/\\\*/g'
+
+# Constants:
+rm="rm -f"
+
+# Global variables:
+default_ofile=libtool
+can_build_shared=yes
+
+# All known linkers require a `.a' archive for static linking (except MSVC,
+# which needs '.lib').
+libext=a
+ltmain="$ac_aux_dir/ltmain.sh"
+ofile="$default_ofile"
+with_gnu_ld="$lt_cv_prog_gnu_ld"
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ar; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_AR+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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}ar"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $AR" >&5
+echo "${ECHO_T}$AR" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+fi
+if test -z "$ac_cv_prog_AR"; then
+ ac_ct_AR=$AR
+ # Extract the first word of "ar", so it can be a program name with args.
+set dummy ar; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_AR+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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="ar"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $ac_ct_AR" >&5
+echo "${ECHO_T}$ac_ct_AR" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+ if test "x$ac_ct_AR" = x; then
+ AR="false"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+ AR=$ac_ct_AR
+ fi
+else
+ AR="$ac_cv_prog_AR"
+fi
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args.
+set dummy ${ac_tool_prefix}ranlib; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $RANLIB" >&5
+echo "${ECHO_T}$RANLIB" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_RANLIB+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $ac_ct_RANLIB" >&5
+echo "${ECHO_T}$ac_ct_RANLIB" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+ if test "x$ac_ct_RANLIB" = x; then
+ RANLIB=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+ RANLIB=$ac_ct_RANLIB
+ fi
+else
+ RANLIB="$ac_cv_prog_RANLIB"
+fi
+
+if test -n "$ac_tool_prefix"; then
+ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args.
+set dummy ${ac_tool_prefix}strip; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $STRIP" >&5
+echo "${ECHO_T}$STRIP" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_STRIP+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $ac_ct_STRIP" >&5
+echo "${ECHO_T}$ac_ct_STRIP" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+ if test "x$ac_ct_STRIP" = x; then
+ STRIP=":"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+ STRIP=$ac_ct_STRIP
+ fi
+else
+ STRIP="$ac_cv_prog_STRIP"
+fi
+
+
+old_CC="$CC"
+old_CFLAGS="$CFLAGS"
+
+# Set sane defaults for various variables
+test -z "$AR" && AR=ar
+test -z "$AR_FLAGS" && AR_FLAGS=cru
+test -z "$AS" && AS=as
+test -z "$CC" && CC=cc
+test -z "$LTCC" && LTCC=$CC
+test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS
+test -z "$DLLTOOL" && DLLTOOL=dlltool
+test -z "$LD" && LD=ld
+test -z "$LN_S" && LN_S="ln -s"
+test -z "$MAGIC_CMD" && MAGIC_CMD=file
+test -z "$NM" && NM=nm
+test -z "$SED" && SED=sed
+test -z "$OBJDUMP" && OBJDUMP=objdump
+test -z "$RANLIB" && RANLIB=:
+test -z "$STRIP" && STRIP=:
+test -z "$ac_objext" && ac_objext=o
+
+# Determine commands to create old-style static archives.
+old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs$old_deplibs'
+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
+
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# Only perform the check for file, if the check method requires it
+case $deplibs_check_method in
+file_magic*)
+ if test "$file_magic_cmd" = '$MAGIC_CMD'; then
+ { echo "$as_me:$LINENO: checking for ${ac_tool_prefix}file" >&5
+echo $ECHO_N "checking for ${ac_tool_prefix}file... $ECHO_C" >&6; }
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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 <<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
+
+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
+ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+if test -z "$lt_cv_path_MAGIC_CMD"; then
+ if test -n "$ac_tool_prefix"; then
+ { echo "$as_me:$LINENO: checking for file" >&5
+echo $ECHO_N "checking for file... $ECHO_C" >&6; }
+if test "${lt_cv_path_MAGIC_CMD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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 <<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
+
+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
+ { echo "$as_me:$LINENO: result: $MAGIC_CMD" >&5
+echo "${ECHO_T}$MAGIC_CMD" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+ else
+ MAGIC_CMD=:
+ fi
+fi
+
+ fi
+ ;;
+esac
+
+enable_dlopen=no
+enable_win32_dll=no
+
+# 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
+
+
+# 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
+
+# Use C for the default configuration in the libtool script
+tagname=
+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;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(){return(0);}\n'
+
+
+# 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 warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$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
+printf "$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 conftest*
+
+
+
+lt_prog_compiler_no_builtin_flag=
+
+if test "$GCC" = yes; then
+ lt_prog_compiler_no_builtin_flag=' -fno-builtin'
+
+
+{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; }
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ printf "$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:19824: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:19828: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$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=
+
+{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
+
+ 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*)
+ # 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'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # 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'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic='-fno-common'
+ ;;
+
+ interix3*)
+ # 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
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # 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='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ lt_prog_compiler_pic='-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
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ lt_prog_compiler_pic='-qnocommon'
+ lt_prog_compiler_wl='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # 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'
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ ;;
+
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ lt_prog_compiler_wl='-Wl,'
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # 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'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static='-non_shared'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic='-KPIC'
+ lt_prog_compiler_static='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ 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
+
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic" >&6; }
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic"; then
+
+{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_pic_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works=no
+ ac_outfile=conftest.$ac_objext
+ printf "$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:20092: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:20096: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_pic_works=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works" >&6; }
+
+if test x"$lt_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
+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
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\"
+{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_static_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ printf "$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 "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_static_works=yes
+ fi
+ else
+ lt_prog_compiler_static_works=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works" >&6; }
+
+if test x"$lt_prog_compiler_static_works" = xyes; then
+ :
+else
+ lt_prog_compiler_static=
+fi
+
+
+{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+if test "${lt_cv_prog_compiler_c_o+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$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:20196: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:20200: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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 ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o" >&5
+echo "${ECHO_T}$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
+ { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&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
+ { echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6; }
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+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
+
+{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
+
+ runpath_var=
+ allow_undefined_flag=
+ enable_shared_with_static_runtimes=no
+ archive_cmds=
+ archive_expsym_cmds=
+ old_archive_From_new_cmds=
+ old_archive_from_expsyms_cmds=
+ export_dynamic_flag_spec=
+ whole_archive_flag_spec=
+ thread_safe_flag_spec=
+ hardcode_libdir_flag_spec=
+ hardcode_libdir_flag_spec_ld=
+ hardcode_libdir_separator=
+ hardcode_direct=no
+ hardcode_minus_L=no
+ hardcode_shlibpath_var=unsupported
+ link_all_deplibs=unknown
+ hardcode_automatic=no
+ module_cmds=
+ module_expsym_cmds=
+ always_export_symbols=no
+ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # 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_"
+ # 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.
+ extract_expsyms_cmds=
+ # Just being paranoid about ensuring that cc_basename is set.
+ for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # 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
+ # 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>/dev/null` in
+ *\ [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
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, 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 modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ 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
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ ld_shlibs=no
+ ;;
+
+ 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*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec='-L$libdir'
+ 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/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ 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
+ ;;
+
+ interix3*)
+ 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'
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_addflag=
+ 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; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # 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; $echo \"$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' ;;
+ esac
+ archive_cmds='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test $supports_anon_versioning = yes; 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 -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ 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 $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'
+ fi
+ ;;
+
+ solaris*)
+ if $LD -v 2>&1 | grep 'BFD 2\.8' > /dev/null; then
+ ld_shlibs=no
+ cat <<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.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ 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
+ ;;
+
+ 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
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$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 $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
+
+ 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
+ ;;
+
+ aix4* | aix5*)
+ 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
+ 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")) && (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].*|aix5*)
+ 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_libdir_separator=':'
+ link_all_deplibs=yes
+
+ 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
+ hardcode_direct=yes
+ 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
+
+ # 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.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; 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 echo "${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.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; 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'
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec='$convenience'
+ 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*)
+ 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
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs=no
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # 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=' '
+ 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 `echo "$deplibs" | $SED -e '\''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'
+ fix_srcfile_path='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc=no
+ hardcode_direct=no
+ hardcode_automatic=yes
+ hardcode_shlibpath_var=unsupported
+ whole_archive_flag_spec=''
+ link_all_deplibs=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ archive_cmds='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs=no
+ ;;
+ esac
+ 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* | kfreebsd*-gnu | dragonfly*)
+ archive_cmds='$CC -shared -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 -fPIC ${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 -a "$with_gnu_ld" = no; then
+ archive_cmds='$CC -shared -fPIC ${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_separator=:
+
+ hardcode_direct=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 -a "$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 ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds='$CC -shared -fPIC ${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'
+ ;;
+ *)
+ archive_cmds='$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
+ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_libdir_flag_spec_ld='+b $libdir'
+ hardcode_direct=no
+ hardcode_shlibpath_var=no
+ ;;
+ *)
+ hardcode_direct=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 $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_ld='-rpath $libdir'
+ fi
+ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator=:
+ 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
+ ;;
+
+ openbsd*)
+ hardcode_direct=yes
+ hardcode_shlibpath_var=no
+ 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
+ ;;
+
+ 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" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag=' -expect_unresolved \*'
+ archive_cmds='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ 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} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${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='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -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; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_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
+ hardcode_libdir_separator=:
+ ;;
+
+ solaris*)
+ no_undefined_flag=' -z text'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds='$CC -shared ${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 ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ 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'
+ 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 linker options so we
+ # cannot just pass the convience library names through
+ # without $wl, iff we do not link with $LD.
+ # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ case $wlarc in
+ '')
+ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' ;;
+ *)
+ whole_archive_flag_spec='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ esac ;;
+ 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*)
+ 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='`test -z "$SCOABSPATH" && echo ${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,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$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
+ fi
+
+{ echo "$as_me:$LINENO: result: $ld_shlibs" >&5
+echo "${ECHO_T}$ld_shlibs" >&6; }
+test "$ld_shlibs" = no && can_build_shared=no
+
+#
+# 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.
+ { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 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:$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=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc=no
+ else
+ archive_cmds_need_lc=yes
+ fi
+ allow_undefined_flag=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ { echo "$as_me:$LINENO: result: $archive_cmds_need_lc" >&5
+echo "${ECHO_T}$archive_cmds_need_lc" >&6; }
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
+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"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # 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.
+ 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
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+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'
+ ;;
+
+aix4* | aix5*)
+ 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*)
+ 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=`$echo "X$lib" | $Xsed -e '\''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'
+ ;;
+
+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*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ 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'
+ 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="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ 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
+ ;;
+ 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
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # 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}${versuffix}$shared_ext ${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`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ 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
+ ;;
+
+kfreebsd*-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
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+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
+ ;;
+ freebsd*) # from 4.6 on
+ 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
+ ;;
+
+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'
+ ;;
+
+interix3*)
+ 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*)
+ 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
+ # 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
+
+ # find out which ABI we are using
+ libsuff=
+ case "$host_cpu" in
+ x86_64*|s390x*|powerpc64*)
+ echo '#line 21661 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *64-bit*)
+ libsuff=64
+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+ esac
+
+ # 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/^ *//;s/#.*//;/^[^\/]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $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'
+ ;;
+
+knetbsd*-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
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU 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=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
+ ;;
+
+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"
+ ;;
+
+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
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ 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
+ 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'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ 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'
+ ;;
+
+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
+{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$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
+
+{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
+hardcode_action=
+if test -n "$hardcode_libdir_flag_spec" || \
+ test -n "$runpath_var" || \
+ test "X$hardcode_automatic" = "Xyes" ; then
+
+ # We can hardcode non-existant 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_AC_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
+{ echo "$as_me:$LINENO: result: $hardcode_action" >&5
+echo "${ECHO_T}$hardcode_action" >&6; }
+
+if test "$hardcode_action" = relink; 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
+
+striplib=
+old_striplib=
+{ echo "$as_me:$LINENO: checking whether stripping libraries is possible" >&5
+echo $ECHO_N "checking whether stripping libraries is possible... $ECHO_C" >&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"
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}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"
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+ ;;
+ *)
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+ ;;
+ esac
+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*)
+ 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
+ { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_dl_dlopen=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
+if test $ac_cv_lib_dl_dlopen = yes; 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
+
+ ;;
+
+ *)
+ { echo "$as_me:$LINENO: checking for shl_load" >&5
+echo $ECHO_N "checking for shl_load... $ECHO_C" >&6; }
+if test "${ac_cv_func_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define shl_load to an innocuous variant, in case <limits.h> declares shl_load.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define shl_load innocuous_shl_load
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char shl_load (); 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 shl_load
+
+/* 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 ();
+/* 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_shl_load || defined __stub___shl_load
+choke me
+#endif
+
+int
+main ()
+{
+return shl_load ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_shl_load=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_shl_load" >&5
+echo "${ECHO_T}$ac_cv_func_shl_load" >&6; }
+if test $ac_cv_func_shl_load = yes; then
+ lt_cv_dlopen="shl_load"
+else
+ { echo "$as_me:$LINENO: checking for shl_load in -ldld" >&5
+echo $ECHO_N "checking for shl_load in -ldld... $ECHO_C" >&6; }
+if test "${ac_cv_lib_dld_shl_load+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_dld_shl_load=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_dld_shl_load=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_shl_load" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_shl_load" >&6; }
+if test $ac_cv_lib_dld_shl_load = yes; then
+ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-dld"
+else
+ { echo "$as_me:$LINENO: checking for dlopen" >&5
+echo $ECHO_N "checking for dlopen... $ECHO_C" >&6; }
+if test "${ac_cv_func_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define dlopen to an innocuous variant, in case <limits.h> declares dlopen.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define dlopen innocuous_dlopen
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char dlopen (); 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 dlopen
+
+/* 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 ();
+/* 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_dlopen || defined __stub___dlopen
+choke me
+#endif
+
+int
+main ()
+{
+return dlopen ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_func_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_func_dlopen=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_func_dlopen" >&5
+echo "${ECHO_T}$ac_cv_func_dlopen" >&6; }
+if test $ac_cv_func_dlopen = yes; then
+ lt_cv_dlopen="dlopen"
+else
+ { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_dl_dlopen=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
+if test $ac_cv_lib_dl_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl"
+else
+ { echo "$as_me:$LINENO: checking for dlopen in -lsvld" >&5
+echo $ECHO_N "checking for dlopen in -lsvld... $ECHO_C" >&6; }
+if test "${ac_cv_lib_svld_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lsvld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_svld_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_svld_dlopen=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_svld_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_svld_dlopen" >&6; }
+if test $ac_cv_lib_svld_dlopen = yes; then
+ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld"
+else
+ { echo "$as_me:$LINENO: checking for dld_link in -ldld" >&5
+echo $ECHO_N "checking for dld_link in -ldld... $ECHO_C" >&6; }
+if test "${ac_cv_lib_dld_dld_link+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldld $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_dld_dld_link=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_dld_dld_link=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dld_dld_link" >&5
+echo "${ECHO_T}$ac_cv_lib_dld_dld_link" >&6; }
+if test $ac_cv_lib_dld_dld_link = yes; then
+ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-dld"
+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"
+
+ { echo "$as_me:$LINENO: checking whether a program can dlopen itself" >&5
+echo $ECHO_N "checking whether a program can dlopen itself... $ECHO_C" >&6; }
+if test "${lt_cv_dlopen_self+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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 <<EOF
+#line 22525 "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
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=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;
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && 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
+{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self" >&5
+echo "${ECHO_T}$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\"
+ { echo "$as_me:$LINENO: checking whether a statically linked program can dlopen itself" >&5
+echo $ECHO_N "checking whether a statically linked program can dlopen itself... $ECHO_C" >&6; }
+if test "${lt_cv_dlopen_self_static+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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 <<EOF
+#line 22625 "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
+
+#ifdef __cplusplus
+extern "C" void exit (int);
+#endif
+
+void fnord() { int i=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;
+ /* dlclose (self); */
+ }
+ else
+ puts (dlerror ());
+
+ exit (status);
+}
+EOF
+ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
+ (eval $ac_link) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && 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
+{ echo "$as_me:$LINENO: result: $lt_cv_dlopen_self_static" >&5
+echo "${ECHO_T}$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
+
+
+# Report which library types will actually be built
+{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6; }
+
+{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&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
+ ;;
+
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+esac
+{ echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6; }
+
+{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; }
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+{ echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6; }
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # 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
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler \
+ CC \
+ LD \
+ lt_prog_compiler_wl \
+ lt_prog_compiler_pic \
+ lt_prog_compiler_static \
+ lt_prog_compiler_no_builtin_flag \
+ export_dynamic_flag_spec \
+ thread_safe_flag_spec \
+ whole_archive_flag_spec \
+ enable_shared_with_static_runtimes \
+ old_archive_cmds \
+ old_archive_from_new_cmds \
+ predep_objects \
+ postdep_objects \
+ predeps \
+ postdeps \
+ compiler_lib_search_path \
+ archive_cmds \
+ archive_expsym_cmds \
+ postinstall_cmds \
+ postuninstall_cmds \
+ old_archive_from_expsyms_cmds \
+ allow_undefined_flag \
+ no_undefined_flag \
+ export_symbols_cmds \
+ hardcode_libdir_flag_spec \
+ hardcode_libdir_flag_spec_ld \
+ hardcode_libdir_separator \
+ hardcode_automatic \
+ module_cmds \
+ module_expsym_cmds \
+ lt_cv_prog_compiler_c_o \
+ exclude_expsyms \
+ include_expsyms; do
+
+ case $var in
+ old_archive_cmds | \
+ old_archive_from_new_cmds | \
+ archive_cmds | \
+ archive_expsym_cmds | \
+ module_cmds | \
+ module_expsym_cmds | \
+ old_archive_from_expsyms_cmds | \
+ export_symbols_cmds | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="${ofile}T"
+ trap "$rm \"$cfgfile\"; exit 1" 1 2 15
+ $rm -f "$cfgfile"
+ { echo "$as_me:$LINENO: creating $ofile" >&5
+echo "$as_me: creating $ofile" >&6;}
+
+ cat <<__EOF__ >> "$cfgfile"
+#! $SHELL
+
+# `$echo "$cfgfile" | sed 's%^.*/%%'` - Provide generalized library-building support services.
+# Generated automatically by $PROGRAM (GNU $PACKAGE $VERSION$TIMESTAMP)
+# NOTE: Changes made to this file will be lost: look at ltmain.sh.
+#
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001
+# Free Software Foundation, Inc.
+#
+# This file is part of GNU Libtool:
+# Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 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 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.
+
+# 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//"
+
+# 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
+
+# The names of the tagged configurations supported by this script.
+available_tags=
+
+# ### BEGIN LIBTOOL CONFIG
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# 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
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# 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
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# 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
+
+# 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
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag
+
+# 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
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec
+
+# Library versioning type.
+version_type=$version_type
+
+# 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
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# 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 and install a shared archive.
+archive_cmds=$lt_archive_cmds
+archive_expsym_cmds=$lt_archive_expsym_cmds
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds
+module_expsym_cmds=$lt_module_expsym_cmds
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path
+
+# 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
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# 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
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# 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 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
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs
+
+# 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
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path"
+
+# 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
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_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
+
+# ### END LIBTOOL CONFIG
+
+__EOF__
+
+
+ case $host_os in
+ aix3*)
+ cat <<\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
+EOF
+ ;;
+ esac
+
+ # 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)
+
+ mv -f "$cfgfile" "$ofile" || \
+ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile")
+ chmod +x "$ofile"
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+
+# Check whether --with-tags was given.
+if test "${with_tags+set}" = set; then
+ withval=$with_tags; tagnames="$withval"
+fi
+
+
+if test -f "$ltmain" && test -n "$tagnames"; then
+ if test ! -f "${ofile}"; then
+ { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not exist" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not exist" >&2;}
+ fi
+
+ if test -z "$LTCC"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCC='`"
+ if test -z "$LTCC"; then
+ { echo "$as_me:$LINENO: WARNING: output file \`$ofile' does not look like a libtool script" >&5
+echo "$as_me: WARNING: output file \`$ofile' does not look like a libtool script" >&2;}
+ else
+ { echo "$as_me:$LINENO: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&5
+echo "$as_me: WARNING: using \`LTCC=$LTCC', extracted from \`$ofile'" >&2;}
+ fi
+ fi
+ if test -z "$LTCFLAGS"; then
+ eval "`$SHELL ${ofile} --config | grep '^LTCFLAGS='`"
+ fi
+
+ # Extract list of available tagged configurations in $ofile.
+ # Note that this assumes the entire list is on one line.
+ available_tags=`grep "^available_tags=" "${ofile}" | $SED -e 's/available_tags=\(.*$\)/\1/' -e 's/\"//g'`
+
+ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR,"
+ for tagname in $tagnames; do
+ IFS="$lt_save_ifs"
+ # Check whether tagname contains only valid characters
+ case `$echo "X$tagname" | $Xsed -e 's:[-_ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz1234567890,/]::g'` in
+ "") ;;
+ *) { { echo "$as_me:$LINENO: error: invalid tag name: $tagname" >&5
+echo "$as_me: error: invalid tag name: $tagname" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ esac
+
+ if grep "^# ### BEGIN LIBTOOL TAG CONFIG: $tagname$" < "${ofile}" > /dev/null
+ then
+ { { echo "$as_me:$LINENO: error: tag name \"$tagname\" already exists" >&5
+echo "$as_me: error: tag name \"$tagname\" already exists" >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+
+ # Update the list of available tags.
+ if test -n "$tagname"; then
+ echo appending configuration tag \"$tagname\" to $ofile
+
+ case $tagname in
+ CXX)
+ if test -n "$CXX" && ( test "X$CXX" != "Xno" &&
+ ( (test "X$CXX" = "Xg++" && `g++ -v >/dev/null 2>&1` ) ||
+ (test "X$CXX" != "Xg++"))) ; then
+ ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+
+
+archive_cmds_need_lc_CXX=no
+allow_undefined_flag_CXX=
+always_export_symbols_CXX=no
+archive_expsym_cmds_CXX=
+export_dynamic_flag_spec_CXX=
+hardcode_direct_CXX=no
+hardcode_libdir_flag_spec_CXX=
+hardcode_libdir_flag_spec_ld_CXX=
+hardcode_libdir_separator_CXX=
+hardcode_minus_L_CXX=no
+hardcode_shlibpath_var_CXX=unsupported
+hardcode_automatic_CXX=no
+module_cmds_CXX=
+module_expsym_cmds_CXX=
+link_all_deplibs_CXX=unknown
+old_archive_cmds_CXX=$old_archive_cmds
+no_undefined_flag_CXX=
+whole_archive_flag_spec_CXX=
+enable_shared_with_static_runtimes_CXX=no
+
+# Dependencies to place before and after the object being linked:
+predep_objects_CXX=
+postdep_objects_CXX=
+predeps_CXX=
+postdeps_CXX=
+compiler_lib_search_path_CXX=
+
+# Source file extension for C++ test sources.
+ac_ext=cpp
+
+# Object file extension for compiled C++ test sources.
+objext=o
+objext_CXX=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="int some_variable = 0;\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='int main(int, char *[]) { return(0); }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# 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 warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$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
+printf "$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 conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC=$CC
+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++"}
+compiler=$CC
+compiler_CXX=$CC
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# We don't want -fno-exception wen compiling C++ code, so set the
+# no_builtin_flag separately
+if test "$GXX" = yes; then
+ lt_prog_compiler_no_builtin_flag_CXX=' -fno-builtin'
+else
+ lt_prog_compiler_no_builtin_flag_CXX=
+fi
+
+if test "$GXX" = yes; then
+ # Set up default GNU C++ configuration
+
+
+# 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.
+ { echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&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
+ { echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
+else
+ { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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
+ { echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_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
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_CXX='${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
+ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_CXX=
+ 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.
+ archive_cmds_CXX='$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 "\-L"'
+
+else
+ GXX=no
+ with_gnu_ld=no
+ wlarc=
+fi
+
+# PORTME: fill in a description of your system's C++ link characteristics
+{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
+ld_shlibs_CXX=yes
+case $host_os in
+ aix3*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ aix4* | aix5*)
+ 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].*|aix5*)
+ 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.
+
+ archive_cmds_CXX=''
+ hardcode_direct_CXX=yes
+ hardcode_libdir_separator_CXX=':'
+ link_all_deplibs_CXX=yes
+
+ 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
+ hardcode_direct_CXX=yes
+ else
+ # We have old collect2
+ hardcode_direct_CXX=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_CXX=yes
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ hardcode_libdir_separator_CXX=
+ 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
+
+ # 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_CXX=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_CXX='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-blibpath:$libdir:'"$aix_libpath"
+
+ archive_expsym_cmds_CXX="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${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_CXX='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_CXX="-z nodefs"
+ archive_expsym_cmds_CXX="\$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.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_CXX='${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_CXX=' ${wl}-bernotok'
+ allow_undefined_flag_CXX=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_CXX='$convenience'
+ archive_cmds_need_lc_CXX=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds_CXX="\$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
+ allow_undefined_flag_CXX=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds_CXX='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs_CXX=no
+ fi
+ ;;
+
+ chorus*)
+ case $cc_basename in
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, CXX) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_CXX='-L$libdir'
+ allow_undefined_flag_CXX=unsupported
+ always_export_symbols_CXX=no
+ enable_shared_with_static_runtimes_CXX=yes
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds_CXX='$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...
+ archive_expsym_cmds_CXX='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
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag_CXX='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag_CXX='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag_CXX='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc_CXX=no
+ hardcode_direct_CXX=no
+ hardcode_automatic_CXX=yes
+ hardcode_shlibpath_var_CXX=unsupported
+ whole_archive_flag_spec_CXX=''
+ link_all_deplibs_CXX=yes
+
+ if test "$GXX" = yes ; then
+ lt_int_apple_cc_single_mod=no
+ output_verbose_link_cmd='echo'
+ if $CC -dumpspecs 2>&1 | $EGREP 'single_module' >/dev/null ; then
+ lt_int_apple_cc_single_mod=yes
+ fi
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ archive_cmds_CXX='$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ else
+ archive_cmds_CXX='$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'
+ fi
+ module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ if test "X$lt_int_apple_cc_single_mod" = Xyes ; then
+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib -single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "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~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ fi
+ module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds_CXX='$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds_CXX='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj ${wl}-single_module $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_CXX='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ freebsd[12]*)
+ # C++ shared libraries reported to be fairly broken before switch to ELF
+ ld_shlibs_CXX=no
+ ;;
+ freebsd-elf*)
+ archive_cmds_need_lc_CXX=no
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ # FreeBSD 3 and later use GNU C++ and GNU ld with standard ELF
+ # conventions
+ ld_shlibs_CXX=yes
+ ;;
+ gnu*)
+ ;;
+ hpux9*)
+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ hardcode_direct_CXX=yes
+ hardcode_minus_L_CXX=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
+ ld_shlibs_CXX=no
+ ;;
+ aCC*)
+ archive_cmds_CXX='$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) | grep "[-]L"`; list=""; for z in $templist; do case $z in conftest.$objext) list="$list $z";; *.$objext);; *) list="$list $z";;esac; done; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ archive_cmds_CXX='$rm $output_objdir/$soname~$CC -shared -nostdlib -fPIC ${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
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ hpux10*|hpux11*)
+ if test $with_gnu_ld = no; then
+ hardcode_libdir_flag_spec_CXX='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_libdir_flag_spec_ld_CXX='+b $libdir'
+ ;;
+ *)
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ ;;
+ esac
+ fi
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ ;;
+ *)
+ hardcode_direct_CXX=yes
+ hardcode_minus_L_CXX=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
+ ld_shlibs_CXX=no
+ ;;
+ aCC*)
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_CXX='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$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; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test $with_gnu_ld = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared -nostdlib -fPIC ${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
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ interix3*)
+ hardcode_direct_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${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_CXX='$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_CXX='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++
+ archive_cmds_CXX='$CC -shared -all -multigot $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -soname $soname `test -n "$verstring" && echo -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.
+ old_archive_cmds_CXX='$CC -ar -WR,-u -o $oldlib $oldobjs'
+ ;;
+ *)
+ if test "$GXX" = yes; then
+ if test "$with_gnu_ld" = no; then
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds_CXX='$CC -shared -nostdlib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` -o $lib'
+ fi
+ fi
+ link_all_deplibs_CXX=yes
+ ;;
+ esac
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+ ;;
+ linux*)
+ 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.
+ archive_cmds_CXX='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'
+ archive_expsym_cmds_CXX='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; echo $list'
+
+ hardcode_libdir_flag_spec_CXX='${wl}--rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+ ;;
+ icpc*)
+ # 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."*)
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$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
+ archive_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$CC -shared'"$tmp_idyn"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ ;;
+ esac
+ archive_cmds_need_lc_CXX=no
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+ whole_archive_flag_spec_CXX='${wl}--whole-archive$convenience ${wl}--no-whole-archive'
+ ;;
+ pgCC*)
+ # Portland Group C++ compiler
+ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname -o $lib'
+ archive_expsym_cmds_CXX='$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'
+
+ hardcode_libdir_flag_spec_CXX='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_CXX='${wl}--export-dynamic'
+ whole_archive_flag_spec_CXX='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ ;;
+ cxx*)
+ # Compaq C++
+ archive_cmds_CXX='$CC -shared $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$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
+ hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # 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=`echo $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; echo $list'
+ ;;
+ esac
+ ;;
+ lynxos*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ m88k*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_CXX='$LD -Bshareable -o $lib $predep_objects $libobjs $deplibs $postdep_objects $linker_flags'
+ wlarc=
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ hardcode_direct_CXX=yes
+ hardcode_shlibpath_var_CXX=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::"'
+ ;;
+ openbsd2*)
+ # C++ shared libraries are fairly broken
+ ld_shlibs_CXX=no
+ ;;
+ openbsd*)
+ hardcode_direct_CXX=yes
+ hardcode_shlibpath_var_CXX=no
+ archive_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -o $lib'
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_expsym_cmds_CXX='$CC -shared $pic_flag $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-retain-symbols-file,$export_symbols -o $lib'
+ export_dynamic_flag_spec_CXX='${wl}-E'
+ whole_archive_flag_spec_CXX="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ fi
+ output_verbose_link_cmd='echo'
+ ;;
+ osf3*)
+ 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.
+ archive_cmds_CXX='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'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Archives containing C++ object files must be created using
+ # "CC -Bstatic", where "CC" is the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -Bstatic -o $oldlib $oldobjs'
+
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ cxx*)
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname $soname `test -n "$verstring" && echo ${wl}-set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # 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=`echo $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; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # 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 "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ 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.
+ archive_cmds_CXX='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'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath,$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # Archives containing C++ object files must be created using
+ # the KAI C++ compiler.
+ old_archive_cmds_CXX='$CC -o $oldlib $oldobjs'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ cxx*)
+ allow_undefined_flag_CXX=' -expect_unresolved \*'
+ archive_cmds_CXX='$CC -shared${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_CXX='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'
+
+ hardcode_libdir_flag_spec_CXX='-rpath $libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # 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=`echo $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; echo $list'
+ ;;
+ *)
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ allow_undefined_flag_CXX=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_CXX='$CC -shared -nostdlib ${allow_undefined_flag} $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+
+ hardcode_libdir_flag_spec_CXX='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_CXX=:
+
+ # 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 "\-L"'
+
+ else
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ fi
+ ;;
+ esac
+ ;;
+ psos*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ lcc*)
+ # Lucid
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ archive_cmds_need_lc_CXX=yes
+ no_undefined_flag_CXX=' -zdefs'
+ archive_cmds_CXX='$CC -G${allow_undefined_flag} -h$soname -o $lib $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags'
+ archive_expsym_cmds_CXX='$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'
+
+ hardcode_libdir_flag_spec_CXX='-R$libdir'
+ hardcode_shlibpath_var_CXX=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The C++ compiler is used as linker so we must use $wl
+ # flag to pass the commands to the underlying system
+ # linker. We must also pass each convience library through
+ # to the system linker between allextract/defaultextract.
+ # The C++ compiler will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ whole_archive_flag_spec_CXX='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract'
+ ;;
+ esac
+ link_all_deplibs_CXX=yes
+
+ output_verbose_link_cmd='echo'
+
+ # 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.
+ old_archive_cmds_CXX='$CC -xar -o $oldlib $oldobjs'
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ archive_cmds_CXX='$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.
+ old_archive_cmds_CXX='$CC $LDFLAGS -archive -o $oldlib $oldobjs'
+ ;;
+ *)
+ # GNU C++ compiler with Solaris linker
+ if test "$GXX" = yes && test "$with_gnu_ld" = no; then
+ no_undefined_flag_CXX=' ${wl}-z ${wl}defs'
+ if $CC --version | grep -v '^2\.7' > /dev/null; then
+ archive_cmds_CXX='$CC -shared -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared -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 \"\-L\""
+ else
+ # g++ 2.7 appears to require `-G' NOT `-shared' on this
+ # platform.
+ archive_cmds_CXX='$CC -G -nostdlib $LDFLAGS $predep_objects $libobjs $deplibs $postdep_objects $compiler_flags ${wl}-h $wl$soname -o $lib'
+ archive_expsym_cmds_CXX='$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 \"\-L\""
+ fi
+
+ hardcode_libdir_flag_spec_CXX='${wl}-R $wl$libdir'
+ fi
+ ;;
+ esac
+ ;;
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*)
+ no_undefined_flag_CXX='${wl}-z,text'
+ archive_cmds_need_lc_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ archive_cmds_CXX='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$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.
+ # 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.
+ # So that behaviour is only enabled if SCOABSPATH is set to a
+ # non-empty value in the environment. Most likely only useful for
+ # creating official distributions of packages.
+ # This is a hack until libtool officially supports absolute path
+ # names for shared libraries.
+ no_undefined_flag_CXX='${wl}-z,text'
+ allow_undefined_flag_CXX='${wl}-z,nodefs'
+ archive_cmds_need_lc_CXX=no
+ hardcode_shlibpath_var_CXX=no
+ hardcode_libdir_flag_spec_CXX='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator_CXX=':'
+ link_all_deplibs_CXX=yes
+ export_dynamic_flag_spec_CXX='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ case $cc_basename in
+ CC*)
+ archive_cmds_CXX='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_CXX='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_CXX='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$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
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ esac
+ ;;
+ vxworks*)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+ *)
+ # FIXME: insert proper C++ library support
+ ld_shlibs_CXX=no
+ ;;
+esac
+{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6; }
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+GCC_CXX="$GXX"
+LD_CXX="$LD"
+
+
+cat > conftest.$ac_ext <<EOF
+class Foo
+{
+public:
+ Foo (void) { a = 0; }
+private:
+ int a;
+};
+EOF
+
+if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # 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
+
+ # The `*' in the case matches for architectures that use `case' in
+ # $output_verbose_cmd can trigger glob expansion during the loop
+ # eval without this substitution.
+ output_verbose_link_cmd=`$echo "X$output_verbose_link_cmd" | $Xsed -e "$no_glob_subst"`
+
+ for p in `eval $output_verbose_link_cmd`; do
+ case $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
+ else
+ prev=
+ fi
+
+ if test "$pre_test_object_deps_done" = no; then
+ case $p 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 "$compiler_lib_search_path_CXX"; then
+ compiler_lib_search_path_CXX="${prev}${p}"
+ else
+ compiler_lib_search_path_CXX="${compiler_lib_search_path_CXX} ${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 "$postdeps_CXX"; then
+ postdeps_CXX="${prev}${p}"
+ else
+ postdeps_CXX="${postdeps_CXX} ${prev}${p}"
+ fi
+ fi
+ ;;
+
+ *.$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 "$predep_objects_CXX"; then
+ predep_objects_CXX="$p"
+ else
+ predep_objects_CXX="$predep_objects_CXX $p"
+ fi
+ else
+ if test -z "$postdep_objects_CXX"; then
+ postdep_objects_CXX="$p"
+ else
+ postdep_objects_CXX="$postdep_objects_CXX $p"
+ fi
+ fi
+ ;;
+
+ *) ;; # Ignore the rest.
+
+ esac
+ done
+
+ # Clean up.
+ rm -f a.out a.exe
+else
+ echo "libtool.m4: error: problem compiling CXX test program"
+fi
+
+$rm -f confest.$objext
+
+# PORTME: override above test on systems where it is broken
+case $host_os in
+interix3*)
+ # Interix 3.5 installs completely hosed .la files for C++, so rather than
+ # hack all around it, let's just trust "g++" to DTRT.
+ predep_objects_CXX=
+ postdep_objects_CXX=
+ postdeps_CXX=
+ ;;
+
+solaris*)
+ case $cc_basename in
+ CC*)
+ # 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.
+ postdeps_CXX='-lCstd -lCrun'
+ ;;
+ esac
+ ;;
+esac
+
+
+case " $postdeps_CXX " in
+*" -lc "*) archive_cmds_need_lc_CXX=no ;;
+esac
+
+lt_prog_compiler_wl_CXX=
+lt_prog_compiler_pic_CXX=
+lt_prog_compiler_static_CXX=
+
+{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
+
+ # C++ specific cases for pic, static, wl, etc.
+ if test "$GXX" = yes; then
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='-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_CXX='-Bstatic'
+ fi
+ ;;
+ amigaos*)
+ # 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_CXX='-m68020 -resident32 -malways-restore-a4'
+ ;;
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+ mingw* | os2* | pw32*)
+ # 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_CXX='-DDLL_EXPORT'
+ ;;
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_CXX='-fno-common'
+ ;;
+ *djgpp*)
+ # DJGPP does not support shared libraries at all
+ lt_prog_compiler_pic_CXX=
+ ;;
+ interix3*)
+ # 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_prog_compiler_pic_CXX=-Kconform_pic
+ fi
+ ;;
+ hpux*)
+ # 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*)
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ esac
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ esac
+ else
+ case $host_os in
+ aix4* | aix5*)
+ # All AIX code is PIC.
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_CXX='-Bstatic'
+ else
+ lt_prog_compiler_static_CXX='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ chorus*)
+ case $cc_basename in
+ cxch68*)
+ # Green Hills C++ Compiler
+ # _LT_AC_TAGVAR(lt_prog_compiler_static, CXX)="--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
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ lt_prog_compiler_pic_CXX='-qnocommon'
+ lt_prog_compiler_wl_CXX='-Wl,'
+ ;;
+ esac
+ ;;
+ dgux*)
+ case $cc_basename in
+ ec++*)
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+ ghcx*)
+ # Green Hills C++ Compiler
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ # FreeBSD uses GNU C++
+ ;;
+ hpux9* | hpux10* | hpux11*)
+ case $cc_basename in
+ CC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+ if test "$host_cpu" != ia64; then
+ lt_prog_compiler_pic_CXX='+Z'
+ fi
+ ;;
+ aCC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='${wl}-a ${wl}archive'
+ case $host_cpu in
+ hppa*64*|ia64*)
+ # +Z the default
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX='+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_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_static_CXX='-non_shared'
+ # CC pic flag -KPIC is the default.
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ linux*)
+ case $cc_basename in
+ KCC*)
+ # KAI C++ Compiler
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ lt_prog_compiler_pic_CXX='-fPIC'
+ ;;
+ icpc* | ecpc*)
+ # Intel C++
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-static'
+ ;;
+ pgCC*)
+ # Portland Group C++ compiler.
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-fpic'
+ lt_prog_compiler_static_CXX='-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_prog_compiler_pic_CXX=
+ lt_prog_compiler_static_CXX='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ lynxos*)
+ ;;
+ m88k*)
+ ;;
+ mvs*)
+ case $cc_basename in
+ cxx*)
+ lt_prog_compiler_pic_CXX='-W c,exportall'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ netbsd*)
+ ;;
+ osf3* | osf4* | osf5*)
+ case $cc_basename in
+ KCC*)
+ lt_prog_compiler_wl_CXX='--backend -Wl,'
+ ;;
+ RCC*)
+ # Rational C++ 2.4.1
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ cxx*)
+ # Digital/Compaq C++
+ lt_prog_compiler_wl_CXX='-Wl,'
+ # Make sure the PIC flag is empty. It appears that all Alpha
+ # Linux and Compaq Tru64 Unix objects are PIC.
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_static_CXX='-non_shared'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ psos*)
+ ;;
+ solaris*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.2, 5.x and Centerline C++
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ lt_prog_compiler_wl_CXX='-Qoption ld '
+ ;;
+ gcx*)
+ # Green Hills C++ Compiler
+ lt_prog_compiler_pic_CXX='-PIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sunos4*)
+ case $cc_basename in
+ CC*)
+ # Sun C++ 4.x
+ lt_prog_compiler_pic_CXX='-pic'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+ lcc*)
+ # Lucid
+ lt_prog_compiler_pic_CXX='-pic'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ tandem*)
+ case $cc_basename in
+ NCC*)
+ # NonStop-UX NCC 3.20
+ lt_prog_compiler_pic_CXX='-KPIC'
+ ;;
+ *)
+ ;;
+ esac
+ ;;
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ case $cc_basename in
+ CC*)
+ lt_prog_compiler_wl_CXX='-Wl,'
+ lt_prog_compiler_pic_CXX='-KPIC'
+ lt_prog_compiler_static_CXX='-Bstatic'
+ ;;
+ esac
+ ;;
+ vxworks*)
+ ;;
+ *)
+ lt_prog_compiler_can_build_shared_CXX=no
+ ;;
+ esac
+ fi
+
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_CXX" >&6; }
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_CXX"; then
+
+{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_CXX works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_pic_works_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works_CXX=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_CXX -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:24961: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:24965: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_pic_works_CXX=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_CXX" >&6; }
+
+if test x"$lt_prog_compiler_pic_works_CXX" = xyes; then
+ case $lt_prog_compiler_pic_CXX in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_CXX=" $lt_prog_compiler_pic_CXX" ;;
+ esac
+else
+ lt_prog_compiler_pic_CXX=
+ lt_prog_compiler_can_build_shared_CXX=no
+fi
+
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_CXX=
+ ;;
+ *)
+ lt_prog_compiler_pic_CXX="$lt_prog_compiler_pic_CXX -DPIC"
+ ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_CXX eval lt_tmp_static_flag=\"$lt_prog_compiler_static_CXX\"
+{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_static_works_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works_CXX=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ printf "$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 "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_static_works_CXX=yes
+ fi
+ else
+ lt_prog_compiler_static_works_CXX=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_CXX" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_CXX" >&6; }
+
+if test x"$lt_prog_compiler_static_works_CXX" = xyes; then
+ :
+else
+ lt_prog_compiler_static_CXX=
+fi
+
+
+{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+if test "${lt_cv_prog_compiler_c_o_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o_CXX=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$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:25065: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:25069: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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_CXX=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 ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_CXX" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_CXX" >&6; }
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_CXX" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&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
+ { echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6; }
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+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
+
+{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
+
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ case $host_os in
+ aix4* | aix5*)
+ # 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
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds_CXX='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_CXX='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ fi
+ ;;
+ pw32*)
+ export_symbols_cmds_CXX="$ltdll_cmds"
+ ;;
+ cygwin* | mingw*)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/;/^.* __nm__/s/^.* __nm__\([^ ]*\) [^ ]*/\1 DATA/;/^I /d;/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ *)
+ export_symbols_cmds_CXX='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ ;;
+ esac
+
+{ echo "$as_me:$LINENO: result: $ld_shlibs_CXX" >&5
+echo "${ECHO_T}$ld_shlibs_CXX" >&6; }
+test "$ld_shlibs_CXX" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_CXX" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_CXX=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_CXX 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.
+ { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_CXX
+ pic_flag=$lt_prog_compiler_pic_CXX
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_CXX
+ allow_undefined_flag_CXX=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds_CXX 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc_CXX=no
+ else
+ archive_cmds_need_lc_CXX=yes
+ fi
+ allow_undefined_flag_CXX=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_CXX" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_CXX" >&6; }
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
+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"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # 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.
+ 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
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+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'
+ ;;
+
+aix4* | aix5*)
+ 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*)
+ 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=`$echo "X$lib" | $Xsed -e '\''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'
+ ;;
+
+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*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ 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'
+ 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="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ 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
+ ;;
+ 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
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # 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}${versuffix}$shared_ext ${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`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ 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
+ ;;
+
+kfreebsd*-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
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+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
+ ;;
+ freebsd*) # from 4.6 on
+ 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
+ ;;
+
+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'
+ ;;
+
+interix3*)
+ 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*)
+ 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
+ # 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
+
+ # find out which ABI we are using
+ libsuff=
+ case "$host_cpu" in
+ x86_64*|s390x*|powerpc64*)
+ echo '#line 25601 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *64-bit*)
+ libsuff=64
+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+ esac
+
+ # 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/^ *//;s/#.*//;/^[^\/]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $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'
+ ;;
+
+knetbsd*-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
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU 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=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
+ ;;
+
+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"
+ ;;
+
+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
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ 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
+ 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'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ 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'
+ ;;
+
+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
+{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$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
+
+{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
+hardcode_action_CXX=
+if test -n "$hardcode_libdir_flag_spec_CXX" || \
+ test -n "$runpath_var_CXX" || \
+ test "X$hardcode_automatic_CXX" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_CXX" != 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_AC_TAGVAR(hardcode_shlibpath_var, CXX)" != no &&
+ test "$hardcode_minus_L_CXX" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_CXX=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_CXX=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_CXX=unsupported
+fi
+{ echo "$as_me:$LINENO: result: $hardcode_action_CXX" >&5
+echo "${ECHO_T}$hardcode_action_CXX" >&6; }
+
+if test "$hardcode_action_CXX" = relink; 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
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # 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
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_CXX \
+ CC_CXX \
+ LD_CXX \
+ lt_prog_compiler_wl_CXX \
+ lt_prog_compiler_pic_CXX \
+ lt_prog_compiler_static_CXX \
+ lt_prog_compiler_no_builtin_flag_CXX \
+ export_dynamic_flag_spec_CXX \
+ thread_safe_flag_spec_CXX \
+ whole_archive_flag_spec_CXX \
+ enable_shared_with_static_runtimes_CXX \
+ old_archive_cmds_CXX \
+ old_archive_from_new_cmds_CXX \
+ predep_objects_CXX \
+ postdep_objects_CXX \
+ predeps_CXX \
+ postdeps_CXX \
+ compiler_lib_search_path_CXX \
+ archive_cmds_CXX \
+ archive_expsym_cmds_CXX \
+ postinstall_cmds_CXX \
+ postuninstall_cmds_CXX \
+ old_archive_from_expsyms_cmds_CXX \
+ allow_undefined_flag_CXX \
+ no_undefined_flag_CXX \
+ export_symbols_cmds_CXX \
+ hardcode_libdir_flag_spec_CXX \
+ hardcode_libdir_flag_spec_ld_CXX \
+ hardcode_libdir_separator_CXX \
+ hardcode_automatic_CXX \
+ module_cmds_CXX \
+ module_expsym_cmds_CXX \
+ lt_cv_prog_compiler_c_o_CXX \
+ exclude_expsyms_CXX \
+ include_expsyms_CXX; do
+
+ case $var in
+ old_archive_cmds_CXX | \
+ old_archive_from_new_cmds_CXX | \
+ archive_cmds_CXX | \
+ archive_expsym_cmds_CXX | \
+ module_cmds_CXX | \
+ module_expsym_cmds_CXX | \
+ old_archive_from_expsyms_cmds_CXX | \
+ export_symbols_cmds_CXX | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_CXX
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_CXX
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# 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
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_CXX
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_CXX
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_CXX
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_CXX
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_CXX
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_CXX
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# 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
+
+# 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
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_CXX
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_CXX
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_CXX
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_CXX
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_CXX
+
+# Library versioning type.
+version_type=$version_type
+
+# 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
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_CXX
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_CXX
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_CXX
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_CXX
+archive_expsym_cmds=$lt_archive_expsym_cmds_CXX
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_CXX
+module_expsym_cmds=$lt_module_expsym_cmds_CXX
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_CXX
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_CXX
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_CXX
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+
+# 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
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_CXX
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_CXX
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# 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
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_CXX
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# 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_CXX
+
+# 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_CXX
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_CXX
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_CXX
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_CXX
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_CXX
+
+# 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_CXX
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_CXX
+
+# 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
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_CXX"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_CXX
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_CXX
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_CXX
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_CXX
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC=$lt_save_CC
+LDCXX=$LD
+LD=$lt_save_LD
+GCC=$lt_save_GCC
+with_gnu_ldcxx=$with_gnu_ld
+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
+
+ else
+ tagname=""
+ fi
+ ;;
+
+ F77)
+ if test -n "$F77" && test "X$F77" != "Xno"; then
+
+ac_ext=f
+ac_compile='$F77 -c $FFLAGS conftest.$ac_ext >&5'
+ac_link='$F77 -o conftest$ac_exeext $FFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_f77_compiler_gnu
+
+
+archive_cmds_need_lc_F77=no
+allow_undefined_flag_F77=
+always_export_symbols_F77=no
+archive_expsym_cmds_F77=
+export_dynamic_flag_spec_F77=
+hardcode_direct_F77=no
+hardcode_libdir_flag_spec_F77=
+hardcode_libdir_flag_spec_ld_F77=
+hardcode_libdir_separator_F77=
+hardcode_minus_L_F77=no
+hardcode_automatic_F77=no
+module_cmds_F77=
+module_expsym_cmds_F77=
+link_all_deplibs_F77=unknown
+old_archive_cmds_F77=$old_archive_cmds
+no_undefined_flag_F77=
+whole_archive_flag_spec_F77=
+enable_shared_with_static_runtimes_F77=no
+
+# Source file extension for f77 test sources.
+ac_ext=f
+
+# Object file extension for compiled f77 test sources.
+objext=o
+objext_F77=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code=" subroutine t\n return\n end\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code=" program t\n end\n"
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# 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 warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$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
+printf "$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 conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${F77-"f77"}
+compiler=$CC
+compiler_F77=$CC
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+{ echo "$as_me:$LINENO: checking if libtool supports shared libraries" >&5
+echo $ECHO_N "checking if libtool supports shared libraries... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: $can_build_shared" >&5
+echo "${ECHO_T}$can_build_shared" >&6; }
+
+{ echo "$as_me:$LINENO: checking whether to build shared libraries" >&5
+echo $ECHO_N "checking whether to build shared libraries... $ECHO_C" >&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
+ ;;
+aix4* | aix5*)
+ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then
+ test "$enable_shared" = yes && enable_static=no
+ fi
+ ;;
+esac
+{ echo "$as_me:$LINENO: result: $enable_shared" >&5
+echo "${ECHO_T}$enable_shared" >&6; }
+
+{ echo "$as_me:$LINENO: checking whether to build static libraries" >&5
+echo $ECHO_N "checking whether to build static libraries... $ECHO_C" >&6; }
+# Make sure either enable_shared or enable_static is yes.
+test "$enable_shared" = yes || enable_static=yes
+{ echo "$as_me:$LINENO: result: $enable_static" >&5
+echo "${ECHO_T}$enable_static" >&6; }
+
+GCC_F77="$G77"
+LD_F77="$LD"
+
+lt_prog_compiler_wl_F77=
+lt_prog_compiler_pic_F77=
+lt_prog_compiler_static_F77=
+
+{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_static_F77='-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_F77='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # 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_F77='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # 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_F77='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_F77='-fno-common'
+ ;;
+
+ interix3*)
+ # 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_F77=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_F77=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # 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_F77='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ lt_prog_compiler_pic_F77='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_F77='-Bstatic'
+ else
+ lt_prog_compiler_static_F77='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ lt_prog_compiler_pic_F77='-qnocommon'
+ lt_prog_compiler_wl_F77='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # 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_F77='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl_F77='-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_F77='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static_F77='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-fpic'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static_F77='-non_shared'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ lt_prog_compiler_wl_F77='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl_F77='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl_F77='-Qoption ld '
+ lt_prog_compiler_pic_F77='-PIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic_F77='-Kconform_pic'
+ lt_prog_compiler_static_F77='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_pic_F77='-KPIC'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl_F77='-Wl,'
+ lt_prog_compiler_can_build_shared_F77=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic_F77='-pic'
+ lt_prog_compiler_static_F77='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared_F77=no
+ ;;
+ esac
+ fi
+
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_F77" >&6; }
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_F77"; then
+
+{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_F77 works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_pic_works_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works_F77=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_F77"
+ # 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:26656: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:26660: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_pic_works_F77=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_F77" >&6; }
+
+if test x"$lt_prog_compiler_pic_works_F77" = xyes; then
+ case $lt_prog_compiler_pic_F77 in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_F77=" $lt_prog_compiler_pic_F77" ;;
+ esac
+else
+ lt_prog_compiler_pic_F77=
+ lt_prog_compiler_can_build_shared_F77=no
+fi
+
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_F77=
+ ;;
+ *)
+ lt_prog_compiler_pic_F77="$lt_prog_compiler_pic_F77"
+ ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_F77 eval lt_tmp_static_flag=\"$lt_prog_compiler_static_F77\"
+{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_static_works_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works_F77=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ printf "$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 "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_static_works_F77=yes
+ fi
+ else
+ lt_prog_compiler_static_works_F77=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_F77" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_F77" >&6; }
+
+if test x"$lt_prog_compiler_static_works_F77" = xyes; then
+ :
+else
+ lt_prog_compiler_static_F77=
+fi
+
+
+{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+if test "${lt_cv_prog_compiler_c_o_F77+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o_F77=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$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:26760: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:26764: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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_F77=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 ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_F77" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_F77" >&6; }
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_F77" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&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
+ { echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6; }
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+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
+
+{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
+
+ runpath_var=
+ allow_undefined_flag_F77=
+ enable_shared_with_static_runtimes_F77=no
+ archive_cmds_F77=
+ archive_expsym_cmds_F77=
+ old_archive_From_new_cmds_F77=
+ old_archive_from_expsyms_cmds_F77=
+ export_dynamic_flag_spec_F77=
+ whole_archive_flag_spec_F77=
+ thread_safe_flag_spec_F77=
+ hardcode_libdir_flag_spec_F77=
+ hardcode_libdir_flag_spec_ld_F77=
+ hardcode_libdir_separator_F77=
+ hardcode_direct_F77=no
+ hardcode_minus_L_F77=no
+ hardcode_shlibpath_var_F77=unsupported
+ link_all_deplibs_F77=unknown
+ hardcode_automatic_F77=no
+ module_cmds_F77=
+ module_expsym_cmds_F77=
+ always_export_symbols_F77=no
+ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms_F77=
+ # 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_F77="_GLOBAL_OFFSET_TABLE_"
+ # 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.
+ extract_expsyms_cmds=
+ # Just being paranoid about ensuring that cc_basename is set.
+ for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # 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_F77=yes
+ if test "$with_gnu_ld" = 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_F77='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_F77='${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_F77="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_F77=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ [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
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs_F77=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, 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 modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_F77='$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_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ ld_shlibs_F77=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag_F77=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds_F77='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, F77) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ allow_undefined_flag_F77=unsupported
+ always_export_symbols_F77=no
+ enable_shared_with_static_runtimes_F77=yes
+ export_symbols_cmds_F77='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds_F77='$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_F77='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_F77=no
+ fi
+ ;;
+
+ interix3*)
+ hardcode_direct_F77=no
+ hardcode_shlibpath_var_F77=no
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_F77='${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_F77='$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_F77='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'
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_addflag=
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec_F77='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$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' ;;
+ esac
+ archive_cmds_F77='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test $supports_anon_versioning = yes; then
+ archive_expsym_cmds_F77='$echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ $echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_F77='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $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_F77=no
+ cat <<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.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs_F77=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
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ archive_cmds_F77='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_F77=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs_F77" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec_F77=
+ export_dynamic_flag_spec_F77=
+ whole_archive_flag_spec_F77=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag_F77=unsupported
+ always_export_symbols_F77=yes
+ archive_expsym_cmds_F77='$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_F77=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_F77=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ 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
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds_F77='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_F77='$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].*|aix5*)
+ 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_F77=''
+ hardcode_direct_F77=yes
+ hardcode_libdir_separator_F77=':'
+ link_all_deplibs_F77=yes
+
+ 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
+ hardcode_direct_F77=yes
+ else
+ # We have old collect2
+ hardcode_direct_F77=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_F77=yes
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_libdir_separator_F77=
+ 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
+
+ # 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_F77=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_F77='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_f77_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_F77='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds_F77="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${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_F77='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_F77="-z nodefs"
+ archive_expsym_cmds_F77="\$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.
+ cat >conftest.$ac_ext <<_ACEOF
+ program main
+
+ end
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_f77_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_F77='${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_F77=' ${wl}-bernotok'
+ allow_undefined_flag_F77=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_F77='$convenience'
+ archive_cmds_need_lc_F77=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds_F77="\$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*)
+ archive_cmds_F77='$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_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs_F77=no
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec_F77=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # 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_F77=' '
+ allow_undefined_flag_F77=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_F77='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_From_new_cmds_F77='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds_F77='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path_F77='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes_F77=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag_F77='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag_F77='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag_F77='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc_F77=no
+ hardcode_direct_F77=no
+ hardcode_automatic_F77=yes
+ hardcode_shlibpath_var_F77=unsupported
+ whole_archive_flag_spec_F77=''
+ link_all_deplibs_F77=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ archive_cmds_F77='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds_F77='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds_F77='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_F77='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs_F77=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs_F77=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_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes
+ hardcode_minus_L_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ archive_cmds_F77='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$rm $output_objdir/$soname~$CC -shared -fPIC ${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_F77='$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_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_direct_F77=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ archive_cmds_F77='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$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_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+
+ hardcode_direct_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_F77='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_F77='$CC -shared -fPIC ${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_F77='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_F77='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_F77='$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
+ hardcode_libdir_flag_spec_F77='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_libdir_flag_spec_ld_F77='+b $libdir'
+ hardcode_direct_F77=no
+ hardcode_shlibpath_var_F77=no
+ ;;
+ *)
+ hardcode_direct_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_F77=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds_F77='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_ld_F77='-rpath $libdir'
+ fi
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ link_all_deplibs_F77=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds_F77='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ newsos6)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ openbsd*)
+ hardcode_direct_F77=yes
+ hardcode_shlibpath_var_F77=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_F77='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds_F77='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ ;;
+ *)
+ archive_cmds_F77='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_minus_L_F77=yes
+ allow_undefined_flag_F77=unsupported
+ archive_cmds_F77='$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_F77='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag_F77=' -expect_unresolved \*'
+ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_F77=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag_F77=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_F77='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_F77='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag_F77=' -expect_unresolved \*'
+ archive_cmds_F77='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_F77='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_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_F77='-rpath $libdir'
+ fi
+ hardcode_libdir_separator_F77=:
+ ;;
+
+ solaris*)
+ no_undefined_flag_F77=' -z text'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds_F77='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ wlarc=''
+ archive_cmds_F77='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_F77='$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'
+ fi
+ hardcode_libdir_flag_spec_F77='-R$libdir'
+ hardcode_shlibpath_var_F77=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl, iff we do not link with $LD.
+ # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ case $wlarc in
+ '')
+ whole_archive_flag_spec_F77='-z allextract$convenience -z defaultextract' ;;
+ *)
+ whole_archive_flag_spec_F77='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ esac ;;
+ esac
+ link_all_deplibs_F77=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_F77='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_direct_F77=yes
+ hardcode_minus_L_F77=yes
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds_F77='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds_F77='$CC -r -o $output$reload_objs'
+ hardcode_direct_F77=no
+ ;;
+ motorola)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_F77=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_F77=no
+ export_dynamic_flag_spec_F77='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_F77=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs_F77=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+ no_undefined_flag_F77='${wl}-z,text'
+ archive_cmds_need_lc_F77=no
+ hardcode_shlibpath_var_F77=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$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_F77='${wl}-z,text'
+ allow_undefined_flag_F77='${wl}-z,nodefs'
+ archive_cmds_need_lc_F77=no
+ hardcode_shlibpath_var_F77=no
+ hardcode_libdir_flag_spec_F77='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator_F77=':'
+ link_all_deplibs_F77=yes
+ export_dynamic_flag_spec_F77='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds_F77='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_F77='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_F77='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ archive_cmds_F77='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_F77='-L$libdir'
+ hardcode_shlibpath_var_F77=no
+ ;;
+
+ *)
+ ld_shlibs_F77=no
+ ;;
+ esac
+ fi
+
+{ echo "$as_me:$LINENO: result: $ld_shlibs_F77" >&5
+echo "${ECHO_T}$ld_shlibs_F77" >&6; }
+test "$ld_shlibs_F77" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_F77" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_F77=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_F77 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.
+ { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_F77
+ pic_flag=$lt_prog_compiler_pic_F77
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_F77
+ allow_undefined_flag_F77=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds_F77 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc_F77=no
+ else
+ archive_cmds_need_lc_F77=yes
+ fi
+ allow_undefined_flag_F77=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_F77" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_F77" >&6; }
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
+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"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # 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.
+ 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
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+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'
+ ;;
+
+aix4* | aix5*)
+ 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*)
+ 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=`$echo "X$lib" | $Xsed -e '\''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'
+ ;;
+
+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*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ 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'
+ 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="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ 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
+ ;;
+ 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
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # 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}${versuffix}$shared_ext ${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`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ 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
+ ;;
+
+kfreebsd*-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
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+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
+ ;;
+ freebsd*) # from 4.6 on
+ 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
+ ;;
+
+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'
+ ;;
+
+interix3*)
+ 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*)
+ 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
+ # 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
+
+ # find out which ABI we are using
+ libsuff=
+ case "$host_cpu" in
+ x86_64*|s390x*|powerpc64*)
+ echo '#line 28205 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *64-bit*)
+ libsuff=64
+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+ esac
+
+ # 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/^ *//;s/#.*//;/^[^\/]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $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'
+ ;;
+
+knetbsd*-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
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU 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=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
+ ;;
+
+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"
+ ;;
+
+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
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ 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
+ 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'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ 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'
+ ;;
+
+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
+{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$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
+
+{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
+hardcode_action_F77=
+if test -n "$hardcode_libdir_flag_spec_F77" || \
+ test -n "$runpath_var_F77" || \
+ test "X$hardcode_automatic_F77" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_F77" != 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_AC_TAGVAR(hardcode_shlibpath_var, F77)" != no &&
+ test "$hardcode_minus_L_F77" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_F77=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_F77=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_F77=unsupported
+fi
+{ echo "$as_me:$LINENO: result: $hardcode_action_F77" >&5
+echo "${ECHO_T}$hardcode_action_F77" >&6; }
+
+if test "$hardcode_action_F77" = relink; 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
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # 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
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_F77 \
+ CC_F77 \
+ LD_F77 \
+ lt_prog_compiler_wl_F77 \
+ lt_prog_compiler_pic_F77 \
+ lt_prog_compiler_static_F77 \
+ lt_prog_compiler_no_builtin_flag_F77 \
+ export_dynamic_flag_spec_F77 \
+ thread_safe_flag_spec_F77 \
+ whole_archive_flag_spec_F77 \
+ enable_shared_with_static_runtimes_F77 \
+ old_archive_cmds_F77 \
+ old_archive_from_new_cmds_F77 \
+ predep_objects_F77 \
+ postdep_objects_F77 \
+ predeps_F77 \
+ postdeps_F77 \
+ compiler_lib_search_path_F77 \
+ archive_cmds_F77 \
+ archive_expsym_cmds_F77 \
+ postinstall_cmds_F77 \
+ postuninstall_cmds_F77 \
+ old_archive_from_expsyms_cmds_F77 \
+ allow_undefined_flag_F77 \
+ no_undefined_flag_F77 \
+ export_symbols_cmds_F77 \
+ hardcode_libdir_flag_spec_F77 \
+ hardcode_libdir_flag_spec_ld_F77 \
+ hardcode_libdir_separator_F77 \
+ hardcode_automatic_F77 \
+ module_cmds_F77 \
+ module_expsym_cmds_F77 \
+ lt_cv_prog_compiler_c_o_F77 \
+ exclude_expsyms_F77 \
+ include_expsyms_F77; do
+
+ case $var in
+ old_archive_cmds_F77 | \
+ old_archive_from_new_cmds_F77 | \
+ archive_cmds_F77 | \
+ archive_expsym_cmds_F77 | \
+ module_cmds_F77 | \
+ module_expsym_cmds_F77 | \
+ old_archive_from_expsyms_cmds_F77 | \
+ export_symbols_cmds_F77 | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_F77
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_F77
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# 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
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_F77
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_F77
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_F77
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_F77
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_F77
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_F77
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# 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
+
+# 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
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_F77
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_F77
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_F77
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_F77
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_F77
+
+# Library versioning type.
+version_type=$version_type
+
+# 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
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_F77
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_F77
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_F77
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_F77
+archive_expsym_cmds=$lt_archive_expsym_cmds_F77
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_F77
+module_expsym_cmds=$lt_module_expsym_cmds_F77
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_F77
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_F77
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_F77
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_F77
+
+# 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
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_F77
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_F77
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# 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
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_F77
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# 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_F77
+
+# 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_F77
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_F77
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_F77
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_F77
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_F77
+
+# 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_F77
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_F77
+
+# 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
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_F77"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_F77
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_F77
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_F77
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_F77
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+ else
+ tagname=""
+ fi
+ ;;
+
+ GCJ)
+ if test -n "$GCJ" && test "X$GCJ" != "Xno"; then
+
+
+# Source file extension for Java test sources.
+ac_ext=java
+
+# Object file extension for compiled Java test sources.
+objext=o
+objext_GCJ=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code="class foo {}\n"
+
+# Code to be used in simple link tests
+lt_simple_link_test_code='public class conftest { public static void main(String[] argv) {}; }\n'
+
+# ltmain only uses $CC for tagged configurations so make sure $CC is set.
+
+# 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 warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$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
+printf "$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 conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${GCJ-"gcj"}
+compiler=$CC
+compiler_GCJ=$CC
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+
+# GCJ did not exist at the time GCC didn't implicitly link libc in.
+archive_cmds_need_lc_GCJ=no
+
+old_archive_cmds_GCJ=$old_archive_cmds
+
+
+lt_prog_compiler_no_builtin_flag_GCJ=
+
+if test "$GCC" = yes; then
+ lt_prog_compiler_no_builtin_flag_GCJ=' -fno-builtin'
+
+
+{ echo "$as_me:$LINENO: checking if $compiler supports -fno-rtti -fno-exceptions" >&5
+echo $ECHO_N "checking if $compiler supports -fno-rtti -fno-exceptions... $ECHO_C" >&6; }
+if test "${lt_cv_prog_compiler_rtti_exceptions+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_rtti_exceptions=no
+ ac_outfile=conftest.$ac_objext
+ printf "$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:28979: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:28983: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_rtti_exceptions" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_rtti_exceptions" >&6; }
+
+if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then
+ lt_prog_compiler_no_builtin_flag_GCJ="$lt_prog_compiler_no_builtin_flag_GCJ -fno-rtti -fno-exceptions"
+else
+ :
+fi
+
+fi
+
+lt_prog_compiler_wl_GCJ=
+lt_prog_compiler_pic_GCJ=
+lt_prog_compiler_static_GCJ=
+
+{ echo "$as_me:$LINENO: checking for $compiler option to produce PIC" >&5
+echo $ECHO_N "checking for $compiler option to produce PIC... $ECHO_C" >&6; }
+
+ if test "$GCC" = yes; then
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_static_GCJ='-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_GCJ='-Bstatic'
+ fi
+ ;;
+
+ amigaos*)
+ # 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_GCJ='-m68020 -resident32 -malways-restore-a4'
+ ;;
+
+ beos* | cygwin* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*)
+ # PIC is the default for these OSes.
+ ;;
+
+ mingw* | pw32* | os2*)
+ # 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_GCJ='-DDLL_EXPORT'
+ ;;
+
+ darwin* | rhapsody*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ lt_prog_compiler_pic_GCJ='-fno-common'
+ ;;
+
+ interix3*)
+ # 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_GCJ=no
+ enable_shared=no
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ lt_prog_compiler_pic_GCJ=-Kconform_pic
+ fi
+ ;;
+
+ hpux*)
+ # 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_GCJ='-fPIC'
+ ;;
+ esac
+ ;;
+
+ *)
+ lt_prog_compiler_pic_GCJ='-fPIC'
+ ;;
+ esac
+ else
+ # PORTME Check for flag to pass linker flags through the system compiler.
+ case $host_os in
+ aix*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ if test "$host_cpu" = ia64; then
+ # AIX 5 now supports IA64 processor
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ else
+ lt_prog_compiler_static_GCJ='-bnso -bI:/lib/syscalls.exp'
+ fi
+ ;;
+ darwin*)
+ # PIC is the default on this platform
+ # Common symbols not allowed in MH_DYLIB files
+ case $cc_basename in
+ xlc*)
+ lt_prog_compiler_pic_GCJ='-qnocommon'
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ ;;
+ esac
+ ;;
+
+ mingw* | pw32* | os2*)
+ # 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_GCJ='-DDLL_EXPORT'
+ ;;
+
+ hpux9* | hpux10* | hpux11*)
+ lt_prog_compiler_wl_GCJ='-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_GCJ='+Z'
+ ;;
+ esac
+ # Is there a better lt_prog_compiler_static that works with the bundled CC?
+ lt_prog_compiler_static_GCJ='${wl}-a ${wl}archive'
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # PIC (with -KPIC) is the default.
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+
+ newsos6)
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ linux*)
+ case $cc_basename in
+ icc* | ecc*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-static'
+ ;;
+ pgcc* | pgf77* | pgf90* | pgf95*)
+ # Portland Group compilers (*not* the Pentium gcc compiler,
+ # which looks to be a dead project)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-fpic'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+ ccc*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # All Alpha code is PIC.
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+ esac
+ ;;
+
+ osf3* | osf4* | osf5*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ # All OSF/1 code is PIC.
+ lt_prog_compiler_static_GCJ='-non_shared'
+ ;;
+
+ solaris*)
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ case $cc_basename in
+ f77* | f90* | f95*)
+ lt_prog_compiler_wl_GCJ='-Qoption ld ';;
+ *)
+ lt_prog_compiler_wl_GCJ='-Wl,';;
+ esac
+ ;;
+
+ sunos4*)
+ lt_prog_compiler_wl_GCJ='-Qoption ld '
+ lt_prog_compiler_pic_GCJ='-PIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ sysv4 | sysv4.2uw2* | sysv4.3*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec ;then
+ lt_prog_compiler_pic_GCJ='-Kconform_pic'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ fi
+ ;;
+
+ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_pic_GCJ='-KPIC'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ unicos*)
+ lt_prog_compiler_wl_GCJ='-Wl,'
+ lt_prog_compiler_can_build_shared_GCJ=no
+ ;;
+
+ uts4*)
+ lt_prog_compiler_pic_GCJ='-pic'
+ lt_prog_compiler_static_GCJ='-Bstatic'
+ ;;
+
+ *)
+ lt_prog_compiler_can_build_shared_GCJ=no
+ ;;
+ esac
+ fi
+
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_GCJ" >&6; }
+
+#
+# Check to make sure the PIC flag actually works.
+#
+if test -n "$lt_prog_compiler_pic_GCJ"; then
+
+{ echo "$as_me:$LINENO: checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works" >&5
+echo $ECHO_N "checking if $compiler PIC flag $lt_prog_compiler_pic_GCJ works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_pic_works_GCJ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_pic_works_GCJ=no
+ ac_outfile=conftest.$ac_objext
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+ lt_compiler_flag="$lt_prog_compiler_pic_GCJ"
+ # 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:29247: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>conftest.err)
+ ac_status=$?
+ cat conftest.err >&5
+ echo "$as_me:29251: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/d' >conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_pic_works_GCJ=yes
+ fi
+ fi
+ $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_pic_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_pic_works_GCJ" >&6; }
+
+if test x"$lt_prog_compiler_pic_works_GCJ" = xyes; then
+ case $lt_prog_compiler_pic_GCJ in
+ "" | " "*) ;;
+ *) lt_prog_compiler_pic_GCJ=" $lt_prog_compiler_pic_GCJ" ;;
+ esac
+else
+ lt_prog_compiler_pic_GCJ=
+ lt_prog_compiler_can_build_shared_GCJ=no
+fi
+
+fi
+case $host_os in
+ # For platforms which do not support PIC, -DPIC is meaningless:
+ *djgpp*)
+ lt_prog_compiler_pic_GCJ=
+ ;;
+ *)
+ lt_prog_compiler_pic_GCJ="$lt_prog_compiler_pic_GCJ"
+ ;;
+esac
+
+#
+# Check to make sure the static flag actually works.
+#
+wl=$lt_prog_compiler_wl_GCJ eval lt_tmp_static_flag=\"$lt_prog_compiler_static_GCJ\"
+{ echo "$as_me:$LINENO: checking if $compiler static flag $lt_tmp_static_flag works" >&5
+echo $ECHO_N "checking if $compiler static flag $lt_tmp_static_flag works... $ECHO_C" >&6; }
+if test "${lt_prog_compiler_static_works_GCJ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_prog_compiler_static_works_GCJ=no
+ save_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$LDFLAGS $lt_tmp_static_flag"
+ printf "$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 "X$_lt_linker_boilerplate" | $Xsed -e '/^$/d' > conftest.exp
+ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2
+ if diff conftest.exp conftest.er2 >/dev/null; then
+ lt_prog_compiler_static_works_GCJ=yes
+ fi
+ else
+ lt_prog_compiler_static_works_GCJ=yes
+ fi
+ fi
+ $rm conftest*
+ LDFLAGS="$save_LDFLAGS"
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_prog_compiler_static_works_GCJ" >&5
+echo "${ECHO_T}$lt_prog_compiler_static_works_GCJ" >&6; }
+
+if test x"$lt_prog_compiler_static_works_GCJ" = xyes; then
+ :
+else
+ lt_prog_compiler_static_GCJ=
+fi
+
+
+{ echo "$as_me:$LINENO: checking if $compiler supports -c -o file.$ac_objext" >&5
+echo $ECHO_N "checking if $compiler supports -c -o file.$ac_objext... $ECHO_C" >&6; }
+if test "${lt_cv_prog_compiler_c_o_GCJ+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ lt_cv_prog_compiler_c_o_GCJ=no
+ $rm -r conftest 2>/dev/null
+ mkdir conftest
+ cd conftest
+ mkdir out
+ printf "$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:29351: $lt_compile\"" >&5)
+ (eval "$lt_compile" 2>out/conftest.err)
+ ac_status=$?
+ cat out/conftest.err >&5
+ echo "$as_me:29355: \$? = $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 "X$_lt_compiler_boilerplate" | $Xsed -e '/^$/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_GCJ=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 ..
+ rmdir conftest
+ $rm conftest*
+
+fi
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_compiler_c_o_GCJ" >&5
+echo "${ECHO_T}$lt_cv_prog_compiler_c_o_GCJ" >&6; }
+
+
+hard_links="nottested"
+if test "$lt_cv_prog_compiler_c_o_GCJ" = no && test "$need_locks" != no; then
+ # do not overwrite the value of need_locks provided by the user
+ { echo "$as_me:$LINENO: checking if we can lock with hard links" >&5
+echo $ECHO_N "checking if we can lock with hard links... $ECHO_C" >&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
+ { echo "$as_me:$LINENO: result: $hard_links" >&5
+echo "${ECHO_T}$hard_links" >&6; }
+ if test "$hard_links" = no; then
+ { echo "$as_me:$LINENO: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5
+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
+
+{ echo "$as_me:$LINENO: checking whether the $compiler linker ($LD) supports shared libraries" >&5
+echo $ECHO_N "checking whether the $compiler linker ($LD) supports shared libraries... $ECHO_C" >&6; }
+
+ runpath_var=
+ allow_undefined_flag_GCJ=
+ enable_shared_with_static_runtimes_GCJ=no
+ archive_cmds_GCJ=
+ archive_expsym_cmds_GCJ=
+ old_archive_From_new_cmds_GCJ=
+ old_archive_from_expsyms_cmds_GCJ=
+ export_dynamic_flag_spec_GCJ=
+ whole_archive_flag_spec_GCJ=
+ thread_safe_flag_spec_GCJ=
+ hardcode_libdir_flag_spec_GCJ=
+ hardcode_libdir_flag_spec_ld_GCJ=
+ hardcode_libdir_separator_GCJ=
+ hardcode_direct_GCJ=no
+ hardcode_minus_L_GCJ=no
+ hardcode_shlibpath_var_GCJ=unsupported
+ link_all_deplibs_GCJ=unknown
+ hardcode_automatic_GCJ=no
+ module_cmds_GCJ=
+ module_expsym_cmds_GCJ=
+ always_export_symbols_GCJ=no
+ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols'
+ # include_expsyms should be a list of space-separated symbols to be *always*
+ # included in the symbol list
+ include_expsyms_GCJ=
+ # 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_GCJ="_GLOBAL_OFFSET_TABLE_"
+ # 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.
+ extract_expsyms_cmds=
+ # Just being paranoid about ensuring that cc_basename is set.
+ for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+ case $host_os in
+ cygwin* | mingw* | pw32*)
+ # 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_GCJ=yes
+ if test "$with_gnu_ld" = 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_GCJ='${wl}--rpath ${wl}$libdir'
+ export_dynamic_flag_spec_GCJ='${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_GCJ="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive'
+ else
+ whole_archive_flag_spec_GCJ=
+ fi
+ supports_anon_versioning=no
+ case `$LD -v 2>/dev/null` in
+ *\ [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
+ aix3* | aix4* | aix5*)
+ # On AIX/PPC, the GNU linker is very broken
+ if test "$host_cpu" != ia64; then
+ ld_shlibs_GCJ=no
+ cat <<EOF 1>&2
+
+*** Warning: the GNU linker, at least up to release 2.9.1, 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 modify your PATH
+*** so that a non-GNU linker is found, and then restart.
+
+EOF
+ fi
+ ;;
+
+ amigaos*)
+ archive_cmds_GCJ='$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_GCJ='-L$libdir'
+ hardcode_minus_L_GCJ=yes
+
+ # Samuel A. Falvo II <kc5tja@dolphin.openprojects.net> reports
+ # that the semantics of dynamic libraries on AmigaOS, at least up
+ # to version 4, is to share data among multiple programs linked
+ # with the same dynamic library. Since this doesn't match the
+ # behavior of shared libraries on other platforms, we can't use
+ # them.
+ ld_shlibs_GCJ=no
+ ;;
+
+ beos*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ allow_undefined_flag_GCJ=unsupported
+ # Joseph Beckenbach <jrb3@best.com> says some releases of gcc
+ # support --undefined. This deserves some investigation. FIXME
+ archive_cmds_GCJ='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # _LT_AC_TAGVAR(hardcode_libdir_flag_spec, GCJ) is actually meaningless,
+ # as there is no search path for DLLs.
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ allow_undefined_flag_GCJ=unsupported
+ always_export_symbols_GCJ=no
+ enable_shared_with_static_runtimes_GCJ=yes
+ export_symbols_cmds_GCJ='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS] /s/.* \([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW] /s/.* //'\'' | sort | uniq > $export_symbols'
+
+ if $LD --help 2>&1 | grep 'auto-import' > /dev/null; then
+ archive_cmds_GCJ='$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_GCJ='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_GCJ=no
+ fi
+ ;;
+
+ interix3*)
+ hardcode_direct_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_GCJ='${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_GCJ='$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_GCJ='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'
+ ;;
+
+ linux*)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ tmp_addflag=
+ case $cc_basename,$host_cpu in
+ pgcc*) # Portland Group C compiler
+ whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}--no-whole-archive'
+ tmp_addflag=' $pic_flag'
+ ;;
+ pgf77* | pgf90* | pgf95*) # Portland Group f77 and f90 compilers
+ whole_archive_flag_spec_GCJ='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$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' ;;
+ esac
+ archive_cmds_GCJ='$CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+
+ if test $supports_anon_versioning = yes; then
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $output_objdir/$libname.ver~
+ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~
+ $echo "local: *; };" >> $output_objdir/$libname.ver~
+ $CC -shared'"$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib'
+ fi
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_GCJ='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib'
+ wlarc=
+ else
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $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_GCJ=no
+ cat <<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.
+
+EOF
+ elif $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+
+ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*)
+ case `$LD -v 2>&1` in
+ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*)
+ ld_shlibs_GCJ=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
+ ;;
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-rpath,$libdir`'
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname,\${SCOABSPATH:+${install_libdir}/}$soname,-retain-symbols-file,$export_symbols -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+ esac
+ ;;
+
+ sunos4*)
+ archive_cmds_GCJ='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ wlarc=
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ *)
+ if $LD --help 2>&1 | grep ': supported targets:.* elf' > /dev/null; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib'
+ archive_expsym_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib'
+ else
+ ld_shlibs_GCJ=no
+ fi
+ ;;
+ esac
+
+ if test "$ld_shlibs_GCJ" = no; then
+ runpath_var=
+ hardcode_libdir_flag_spec_GCJ=
+ export_dynamic_flag_spec_GCJ=
+ whole_archive_flag_spec_GCJ=
+ fi
+ else
+ # PORTME fill in a description of your system's linker (not GNU ld)
+ case $host_os in
+ aix3*)
+ allow_undefined_flag_GCJ=unsupported
+ always_export_symbols_GCJ=yes
+ archive_expsym_cmds_GCJ='$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_GCJ=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_GCJ=unsupported
+ fi
+ ;;
+
+ aix4* | aix5*)
+ 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
+ if $NM -V 2>&1 | grep 'GNU' > /dev/null; then
+ export_symbols_cmds_GCJ='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$2 == "T") || (\$2 == "D") || (\$2 == "B")) && (substr(\$3,1,1) != ".")) { print \$3 } }'\'' | sort -u > $export_symbols'
+ else
+ export_symbols_cmds_GCJ='$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].*|aix5*)
+ 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_GCJ=''
+ hardcode_direct_GCJ=yes
+ hardcode_libdir_separator_GCJ=':'
+ link_all_deplibs_GCJ=yes
+
+ 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
+ hardcode_direct_GCJ=yes
+ else
+ # We have old collect2
+ hardcode_direct_GCJ=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_GCJ=yes
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_libdir_separator_GCJ=
+ 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
+
+ # 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_GCJ=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_GCJ='-berok'
+ # Determine the default libpath from the value encoded in an empty executable.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_GCJ='${wl}-blibpath:$libdir:'"$aix_libpath"
+ archive_expsym_cmds_GCJ="\$CC"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then echo "${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_GCJ='${wl}-R $libdir:/usr/lib:/lib'
+ allow_undefined_flag_GCJ="-z nodefs"
+ archive_expsym_cmds_GCJ="\$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.
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+
+aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`
+# Check for a 64-bit object if we didn't find anything.
+if test -z "$aix_libpath"; then aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e '/Import File Strings/,/^$/ { /^0/ { s/^0 *\(.*\)$/\1/; p; }
+}'`; fi
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi
+
+ hardcode_libdir_flag_spec_GCJ='${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_GCJ=' ${wl}-bernotok'
+ allow_undefined_flag_GCJ=' ${wl}-berok'
+ # Exported symbols can be pulled into shared objects from archives
+ whole_archive_flag_spec_GCJ='$convenience'
+ archive_cmds_need_lc_GCJ=yes
+ # This is similar to how AIX traditionally builds its shared libraries.
+ archive_expsym_cmds_GCJ="\$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*)
+ archive_cmds_GCJ='$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_GCJ='-L$libdir'
+ hardcode_minus_L_GCJ=yes
+ # see comment about different semantics on the GNU ld section
+ ld_shlibs_GCJ=no
+ ;;
+
+ bsdi[45]*)
+ export_dynamic_flag_spec_GCJ=-rdynamic
+ ;;
+
+ cygwin* | mingw* | pw32*)
+ # 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_GCJ=' '
+ allow_undefined_flag_GCJ=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_GCJ='$CC -o $lib $libobjs $compiler_flags `echo "$deplibs" | $SED -e '\''s/ -lc$//'\''` -link -dll~linknames='
+ # The linker will automatically build a .lib file if we build a DLL.
+ old_archive_From_new_cmds_GCJ='true'
+ # FIXME: Should let the user specify the lib program.
+ old_archive_cmds_GCJ='lib /OUT:$oldlib$oldobjs$old_deplibs'
+ fix_srcfile_path_GCJ='`cygpath -w "$srcfile"`'
+ enable_shared_with_static_runtimes_GCJ=yes
+ ;;
+
+ darwin* | rhapsody*)
+ case $host_os in
+ rhapsody* | darwin1.[012])
+ allow_undefined_flag_GCJ='${wl}-undefined ${wl}suppress'
+ ;;
+ *) # Darwin 1.3 on
+ if test -z ${MACOSX_DEPLOYMENT_TARGET} ; then
+ allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ else
+ case ${MACOSX_DEPLOYMENT_TARGET} in
+ 10.[012])
+ allow_undefined_flag_GCJ='${wl}-flat_namespace ${wl}-undefined ${wl}suppress'
+ ;;
+ 10.*)
+ allow_undefined_flag_GCJ='${wl}-undefined ${wl}dynamic_lookup'
+ ;;
+ esac
+ fi
+ ;;
+ esac
+ archive_cmds_need_lc_GCJ=no
+ hardcode_direct_GCJ=no
+ hardcode_automatic_GCJ=yes
+ hardcode_shlibpath_var_GCJ=unsupported
+ whole_archive_flag_spec_GCJ=''
+ link_all_deplibs_GCJ=yes
+ if test "$GCC" = yes ; then
+ output_verbose_link_cmd='echo'
+ archive_cmds_GCJ='$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring'
+ module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -dynamiclib $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags -install_name $rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ else
+ case $cc_basename in
+ xlc*)
+ output_verbose_link_cmd='echo'
+ archive_cmds_GCJ='$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}`echo $rpath/$soname` $verstring'
+ module_cmds_GCJ='$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags'
+ # Don't fix this by using the ld -exported_symbols_list flag, it doesn't exist in older darwin lds
+ archive_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC -qmkshrobj $allow_undefined_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-install_name ${wl}$rpath/$soname $verstring~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ module_expsym_cmds_GCJ='sed -e "s,#.*,," -e "s,^[ ]*,," -e "s,^\(..*\),_&," < $export_symbols > $output_objdir/${libname}-symbols.expsym~$CC $allow_undefined_flag -o $lib -bundle $libobjs $deplibs$compiler_flags~nmedit -s $output_objdir/${libname}-symbols.expsym ${lib}'
+ ;;
+ *)
+ ld_shlibs_GCJ=no
+ ;;
+ esac
+ fi
+ ;;
+
+ dgux*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ freebsd1*)
+ ld_shlibs_GCJ=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_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ # Unfortunately, older versions of FreeBSD 2 do not have this feature.
+ freebsd2*)
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes
+ hardcode_minus_L_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ # FreeBSD 3 and greater uses gcc -shared to do shared libraries.
+ freebsd* | kfreebsd*-gnu | dragonfly*)
+ archive_cmds_GCJ='$CC -shared -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ hpux9*)
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$rm $output_objdir/$soname~$CC -shared -fPIC ${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_GCJ='$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_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ hardcode_direct_GCJ=yes
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+ ;;
+
+ hpux10*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ archive_cmds_GCJ='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$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_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+
+ hardcode_direct_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_GCJ=yes
+ fi
+ ;;
+
+ hpux11*)
+ if test "$GCC" = yes -a "$with_gnu_ld" = no; then
+ case $host_cpu in
+ hppa*64*)
+ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_GCJ='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_GCJ='$CC -shared -fPIC ${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_GCJ='$CC -b ${wl}+h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ ia64*)
+ archive_cmds_GCJ='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags'
+ ;;
+ *)
+ archive_cmds_GCJ='$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
+ hardcode_libdir_flag_spec_GCJ='${wl}+b ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+
+ case $host_cpu in
+ hppa*64*|ia64*)
+ hardcode_libdir_flag_spec_ld_GCJ='+b $libdir'
+ hardcode_direct_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+ *)
+ hardcode_direct_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+
+ # hardcode_minus_L: Not really in the search PATH,
+ # but as the default location of the library.
+ hardcode_minus_L_GCJ=yes
+ ;;
+ esac
+ fi
+ ;;
+
+ irix5* | irix6* | nonstopux*)
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ archive_cmds_GCJ='$LD -shared $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_ld_GCJ='-rpath $libdir'
+ fi
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ link_all_deplibs_GCJ=yes
+ ;;
+
+ netbsd*)
+ if echo __ELF__ | $CC -E - | grep __ELF__ >/dev/null; then
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out
+ else
+ archive_cmds_GCJ='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF
+ fi
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ newsos6)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ openbsd*)
+ hardcode_direct_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ if test -z "`echo __ELF__ | $CC -E - | grep __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then
+ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+ export_dynamic_flag_spec_GCJ='${wl}-E'
+ else
+ case $host_os in
+ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*)
+ archive_cmds_GCJ='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ ;;
+ *)
+ archive_cmds_GCJ='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath,$libdir'
+ ;;
+ esac
+ fi
+ ;;
+
+ os2*)
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_minus_L_GCJ=yes
+ allow_undefined_flag_GCJ=unsupported
+ archive_cmds_GCJ='$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_GCJ='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def'
+ ;;
+
+ osf3*)
+ if test "$GCC" = yes; then
+ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ else
+ allow_undefined_flag_GCJ=' -expect_unresolved \*'
+ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ fi
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ hardcode_libdir_separator_GCJ=:
+ ;;
+
+ osf4* | osf5*) # as osf3* with the addition of -msym flag
+ if test "$GCC" = yes; then
+ allow_undefined_flag_GCJ=' ${wl}-expect_unresolved ${wl}\*'
+ archive_cmds_GCJ='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && echo ${wl}-set_version ${wl}$verstring` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib'
+ hardcode_libdir_flag_spec_GCJ='${wl}-rpath ${wl}$libdir'
+ else
+ allow_undefined_flag_GCJ=' -expect_unresolved \*'
+ archive_cmds_GCJ='$LD -shared${allow_undefined_flag} $libobjs $deplibs $linker_flags -msym -soname $soname `test -n "$verstring" && echo -set_version $verstring` -update_registry ${output_objdir}/so_locations -o $lib'
+ archive_expsym_cmds_GCJ='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; echo "-hidden">> $lib.exp~
+ $LD -shared${allow_undefined_flag} -input $lib.exp $linker_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_GCJ='-rpath $libdir'
+ fi
+ hardcode_libdir_separator_GCJ=:
+ ;;
+
+ solaris*)
+ no_undefined_flag_GCJ=' -z text'
+ if test "$GCC" = yes; then
+ wlarc='${wl}'
+ archive_cmds_GCJ='$CC -shared ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~$echo "local: *; };" >> $lib.exp~
+ $CC -shared ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$rm $lib.exp'
+ else
+ wlarc=''
+ archive_cmds_GCJ='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ archive_expsym_cmds_GCJ='$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'
+ fi
+ hardcode_libdir_flag_spec_GCJ='-R$libdir'
+ hardcode_shlibpath_var_GCJ=no
+ case $host_os in
+ solaris2.[0-5] | solaris2.[0-5].*) ;;
+ *)
+ # The compiler driver will combine linker options so we
+ # cannot just pass the convience library names through
+ # without $wl, iff we do not link with $LD.
+ # Luckily, gcc supports the same syntax we need for Sun Studio.
+ # Supported since Solaris 2.6 (maybe 2.5.1?)
+ case $wlarc in
+ '')
+ whole_archive_flag_spec_GCJ='-z allextract$convenience -z defaultextract' ;;
+ *)
+ whole_archive_flag_spec_GCJ='${wl}-z ${wl}allextract`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; $echo \"$new_convenience\"` ${wl}-z ${wl}defaultextract' ;;
+ esac ;;
+ esac
+ link_all_deplibs_GCJ=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_GCJ='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags'
+ fi
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_direct_GCJ=yes
+ hardcode_minus_L_GCJ=yes
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ sysv4)
+ case $host_vendor in
+ sni)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=yes # is this really true???
+ ;;
+ siemens)
+ ## LD is ld it makes a PLAMLIB
+ ## CC just makes a GrossModule.
+ archive_cmds_GCJ='$LD -G -o $lib $libobjs $deplibs $linker_flags'
+ reload_cmds_GCJ='$CC -r -o $output$reload_objs'
+ hardcode_direct_GCJ=no
+ ;;
+ motorola)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_direct_GCJ=no #Motorola manual says yes, but my tests say they lie
+ ;;
+ esac
+ runpath_var='LD_RUN_PATH'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ sysv4.3*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_GCJ=no
+ export_dynamic_flag_spec_GCJ='-Bexport'
+ ;;
+
+ sysv4*MP*)
+ if test -d /usr/nec; then
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_shlibpath_var_GCJ=no
+ runpath_var=LD_RUN_PATH
+ hardcode_runpath_var=yes
+ ld_shlibs_GCJ=yes
+ fi
+ ;;
+
+ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7*)
+ no_undefined_flag_GCJ='${wl}-z,text'
+ archive_cmds_need_lc_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$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_GCJ='${wl}-z,text'
+ allow_undefined_flag_GCJ='${wl}-z,nodefs'
+ archive_cmds_need_lc_GCJ=no
+ hardcode_shlibpath_var_GCJ=no
+ hardcode_libdir_flag_spec_GCJ='`test -z "$SCOABSPATH" && echo ${wl}-R,$libdir`'
+ hardcode_libdir_separator_GCJ=':'
+ link_all_deplibs_GCJ=yes
+ export_dynamic_flag_spec_GCJ='${wl}-Bexport'
+ runpath_var='LD_RUN_PATH'
+
+ if test "$GCC" = yes; then
+ archive_cmds_GCJ='$CC -shared ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ else
+ archive_cmds_GCJ='$CC -G ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ archive_expsym_cmds_GCJ='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,\${SCOABSPATH:+${install_libdir}/}$soname -o $lib $libobjs $deplibs $compiler_flags'
+ fi
+ ;;
+
+ uts4*)
+ archive_cmds_GCJ='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags'
+ hardcode_libdir_flag_spec_GCJ='-L$libdir'
+ hardcode_shlibpath_var_GCJ=no
+ ;;
+
+ *)
+ ld_shlibs_GCJ=no
+ ;;
+ esac
+ fi
+
+{ echo "$as_me:$LINENO: result: $ld_shlibs_GCJ" >&5
+echo "${ECHO_T}$ld_shlibs_GCJ" >&6; }
+test "$ld_shlibs_GCJ" = no && can_build_shared=no
+
+#
+# Do we need to explicitly link libc?
+#
+case "x$archive_cmds_need_lc_GCJ" in
+x|xyes)
+ # Assume -lc should be added
+ archive_cmds_need_lc_GCJ=yes
+
+ if test "$enable_shared" = yes && test "$GCC" = yes; then
+ case $archive_cmds_GCJ 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.
+ { echo "$as_me:$LINENO: checking whether -lc should be explicitly linked in" >&5
+echo $ECHO_N "checking whether -lc should be explicitly linked in... $ECHO_C" >&6; }
+ $rm conftest*
+ printf "$lt_simple_compile_test_code" > conftest.$ac_ext
+
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } 2>conftest.err; then
+ soname=conftest
+ lib=conftest
+ libobjs=conftest.$ac_objext
+ deplibs=
+ wl=$lt_prog_compiler_wl_GCJ
+ pic_flag=$lt_prog_compiler_pic_GCJ
+ compiler_flags=-v
+ linker_flags=-v
+ verstring=
+ output_objdir=.
+ libname=conftest
+ lt_save_allow_undefined_flag=$allow_undefined_flag_GCJ
+ allow_undefined_flag_GCJ=
+ if { (eval echo "$as_me:$LINENO: \"$archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1\"") >&5
+ (eval $archive_cmds_GCJ 2\>\&1 \| grep \" -lc \" \>/dev/null 2\>\&1) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+ then
+ archive_cmds_need_lc_GCJ=no
+ else
+ archive_cmds_need_lc_GCJ=yes
+ fi
+ allow_undefined_flag_GCJ=$lt_save_allow_undefined_flag
+ else
+ cat conftest.err 1>&5
+ fi
+ $rm conftest*
+ { echo "$as_me:$LINENO: result: $archive_cmds_need_lc_GCJ" >&5
+echo "${ECHO_T}$archive_cmds_need_lc_GCJ" >&6; }
+ ;;
+ esac
+ fi
+ ;;
+esac
+
+{ echo "$as_me:$LINENO: checking dynamic linker characteristics" >&5
+echo $ECHO_N "checking dynamic linker characteristics... $ECHO_C" >&6; }
+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"
+if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';' >/dev/null ; then
+ # 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.
+ 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
+else
+ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib"
+fi
+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'
+ ;;
+
+aix4* | aix5*)
+ 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*)
+ 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=`$echo "X$lib" | $Xsed -e '\''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'
+ ;;
+
+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*)
+ version_type=windows
+ shrext_cmds=".dll"
+ need_version=no
+ need_lib_prefix=no
+
+ case $GCC,$host_os in
+ yes,cygwin* | yes,mingw* | yes,pw32*)
+ 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'
+ 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="/usr/lib /lib/w32api /lib /usr/local/lib"
+ ;;
+ mingw*)
+ # MinGW DLLs use traditional 'lib' prefix
+ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}'
+ sys_lib_search_path_spec=`$CC -print-search-dirs | grep "^libraries:" | $SED -e "s/^libraries://" -e "s,=/,/,g"`
+ if echo "$sys_lib_search_path_spec" | grep ';[c-zC-Z]:/' >/dev/null; then
+ # It is most probably a Windows format PATH printed by
+ # mingw gcc, but we are running on Cygwin. Gcc prints its search
+ # path with ; separators, and with drive letters. We can handle the
+ # drive letters (cygwin fileutils understands them), so leave them,
+ # especially as we might pass files found there to a mingw objdump,
+ # which wouldn't understand a cygwinified path. Ahh.
+ 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
+ ;;
+ 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
+ ;;
+
+ *)
+ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib'
+ ;;
+ esac
+ dynamic_linker='Win32 ld.exe'
+ # 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}${versuffix}$shared_ext ${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`'
+ # Apple's gcc prints 'gcc -print-search-dirs' doesn't operate the same.
+ if test "$GCC" = yes; then
+ sys_lib_search_path_spec=`$CC -print-search-dirs | tr "\n" "$PATH_SEPARATOR" | sed -e 's/libraries:/@libraries:/' | tr "@" "\n" | grep "^libraries:" | sed -e "s/^libraries://" -e "s,=/,/,g" -e "s,$PATH_SEPARATOR, ,g" -e "s,.*,& /lib /usr/lib /usr/local/lib,g"`
+ else
+ sys_lib_search_path_spec='/lib /usr/lib /usr/local/lib'
+ fi
+ 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
+ ;;
+
+kfreebsd*-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
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU ld.so'
+ ;;
+
+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
+ ;;
+ freebsd*) # from 4.6 on
+ 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
+ ;;
+
+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'
+ ;;
+
+interix3*)
+ 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*)
+ 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
+ # 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
+
+ # find out which ABI we are using
+ libsuff=
+ case "$host_cpu" in
+ x86_64*|s390x*|powerpc64*)
+ echo '#line 30816 "configure"' > conftest.$ac_ext
+ if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
+ (eval $ac_compile) 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ case `/usr/bin/file conftest.$ac_objext` in
+ *64-bit*)
+ libsuff=64
+ sys_lib_search_path_spec="/lib${libsuff} /usr/lib${libsuff} /usr/local/lib${libsuff}"
+ ;;
+ esac
+ fi
+ rm -rf conftest*
+ ;;
+ esac
+
+ # 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/^ *//;s/#.*//;/^[^\/]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+ sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $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'
+ ;;
+
+knetbsd*-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
+ shlibpath_overrides_runpath=no
+ hardcode_into_libs=yes
+ dynamic_linker='GNU 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=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
+ ;;
+
+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"
+ ;;
+
+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
+ export_dynamic_flag_spec='${wl}-Blargedynsym'
+ 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
+ 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'
+ shlibpath_overrides_runpath=no
+ else
+ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib'
+ shlibpath_overrides_runpath=yes
+ 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'
+ ;;
+
+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
+{ echo "$as_me:$LINENO: result: $dynamic_linker" >&5
+echo "${ECHO_T}$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
+
+{ echo "$as_me:$LINENO: checking how to hardcode library paths into programs" >&5
+echo $ECHO_N "checking how to hardcode library paths into programs... $ECHO_C" >&6; }
+hardcode_action_GCJ=
+if test -n "$hardcode_libdir_flag_spec_GCJ" || \
+ test -n "$runpath_var_GCJ" || \
+ test "X$hardcode_automatic_GCJ" = "Xyes" ; then
+
+ # We can hardcode non-existant directories.
+ if test "$hardcode_direct_GCJ" != 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_AC_TAGVAR(hardcode_shlibpath_var, GCJ)" != no &&
+ test "$hardcode_minus_L_GCJ" != no; then
+ # Linking always hardcodes the temporary library directory.
+ hardcode_action_GCJ=relink
+ else
+ # We can link without hardcoding, and we can hardcode nonexisting dirs.
+ hardcode_action_GCJ=immediate
+ fi
+else
+ # We cannot hardcode anything, or else we can only hardcode existing
+ # directories.
+ hardcode_action_GCJ=unsupported
+fi
+{ echo "$as_me:$LINENO: result: $hardcode_action_GCJ" >&5
+echo "${ECHO_T}$hardcode_action_GCJ" >&6; }
+
+if test "$hardcode_action_GCJ" = relink; 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
+
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # 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
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_GCJ \
+ CC_GCJ \
+ LD_GCJ \
+ lt_prog_compiler_wl_GCJ \
+ lt_prog_compiler_pic_GCJ \
+ lt_prog_compiler_static_GCJ \
+ lt_prog_compiler_no_builtin_flag_GCJ \
+ export_dynamic_flag_spec_GCJ \
+ thread_safe_flag_spec_GCJ \
+ whole_archive_flag_spec_GCJ \
+ enable_shared_with_static_runtimes_GCJ \
+ old_archive_cmds_GCJ \
+ old_archive_from_new_cmds_GCJ \
+ predep_objects_GCJ \
+ postdep_objects_GCJ \
+ predeps_GCJ \
+ postdeps_GCJ \
+ compiler_lib_search_path_GCJ \
+ archive_cmds_GCJ \
+ archive_expsym_cmds_GCJ \
+ postinstall_cmds_GCJ \
+ postuninstall_cmds_GCJ \
+ old_archive_from_expsyms_cmds_GCJ \
+ allow_undefined_flag_GCJ \
+ no_undefined_flag_GCJ \
+ export_symbols_cmds_GCJ \
+ hardcode_libdir_flag_spec_GCJ \
+ hardcode_libdir_flag_spec_ld_GCJ \
+ hardcode_libdir_separator_GCJ \
+ hardcode_automatic_GCJ \
+ module_cmds_GCJ \
+ module_expsym_cmds_GCJ \
+ lt_cv_prog_compiler_c_o_GCJ \
+ exclude_expsyms_GCJ \
+ include_expsyms_GCJ; do
+
+ case $var in
+ old_archive_cmds_GCJ | \
+ old_archive_from_new_cmds_GCJ | \
+ archive_cmds_GCJ | \
+ archive_expsym_cmds_GCJ | \
+ module_cmds_GCJ | \
+ module_expsym_cmds_GCJ | \
+ old_archive_from_expsyms_cmds_GCJ | \
+ export_symbols_cmds_GCJ | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_GCJ
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_GCJ
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# 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
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_GCJ
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_GCJ
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_GCJ
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_GCJ
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_GCJ
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_GCJ
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# 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
+
+# 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
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_GCJ
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_GCJ
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_GCJ
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_GCJ
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_GCJ
+
+# Library versioning type.
+version_type=$version_type
+
+# 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
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_GCJ
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_GCJ
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_GCJ
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_GCJ
+archive_expsym_cmds=$lt_archive_expsym_cmds_GCJ
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_GCJ
+module_expsym_cmds=$lt_module_expsym_cmds_GCJ
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_GCJ
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_GCJ
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_GCJ
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ
+
+# 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
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_GCJ
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_GCJ
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# 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
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_GCJ
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# 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_GCJ
+
+# 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_GCJ
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_GCJ
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_GCJ
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_GCJ
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_GCJ
+
+# 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_GCJ
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_GCJ
+
+# 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
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_GCJ"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_GCJ
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_GCJ
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_GCJ
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_GCJ
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+ else
+ tagname=""
+ fi
+ ;;
+
+ RC)
+
+
+# Source file extension for RC test sources.
+ac_ext=rc
+
+# Object file extension for compiled RC test sources.
+objext=o
+objext_RC=$objext
+
+# Code to be used in simple compile tests
+lt_simple_compile_test_code='sample MENU { MENUITEM "&Soup", 100, CHECKED }\n'
+
+# 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.
+
+# 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 warnings/boilerplate of simple test code
+ac_outfile=conftest.$ac_objext
+printf "$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
+printf "$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 conftest*
+
+
+# Allow CC to be a program name with arguments.
+lt_save_CC="$CC"
+CC=${RC-"windres"}
+compiler=$CC
+compiler_RC=$CC
+for cc_temp in $compiler""; do
+ case $cc_temp in
+ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;;
+ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;;
+ \-*) ;;
+ *) break;;
+ esac
+done
+cc_basename=`$echo "X$cc_temp" | $Xsed -e 's%.*/%%' -e "s%^$host_alias-%%"`
+
+lt_cv_prog_compiler_c_o_RC=yes
+
+# The else clause should only fire when bootstrapping the
+# libtool distribution, otherwise you forgot to ship ltmain.sh
+# with your package, and you will get complaints that there are
+# no rules to generate ltmain.sh.
+if test -f "$ltmain"; then
+ # 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
+ # Now quote all the things that may contain metacharacters while being
+ # careful not to overquote the AC_SUBSTed values. We take copies of the
+ # variables and quote the copies for generation of the libtool script.
+ for var in echo old_CC old_CFLAGS AR AR_FLAGS EGREP RANLIB LN_S LTCC LTCFLAGS NM \
+ SED SHELL STRIP \
+ libname_spec library_names_spec soname_spec extract_expsyms_cmds \
+ old_striplib striplib file_magic_cmd finish_cmds finish_eval \
+ deplibs_check_method reload_flag reload_cmds need_locks \
+ lt_cv_sys_global_symbol_pipe lt_cv_sys_global_symbol_to_cdecl \
+ lt_cv_sys_global_symbol_to_c_name_address \
+ sys_lib_search_path_spec sys_lib_dlsearch_path_spec \
+ old_postinstall_cmds old_postuninstall_cmds \
+ compiler_RC \
+ CC_RC \
+ LD_RC \
+ lt_prog_compiler_wl_RC \
+ lt_prog_compiler_pic_RC \
+ lt_prog_compiler_static_RC \
+ lt_prog_compiler_no_builtin_flag_RC \
+ export_dynamic_flag_spec_RC \
+ thread_safe_flag_spec_RC \
+ whole_archive_flag_spec_RC \
+ enable_shared_with_static_runtimes_RC \
+ old_archive_cmds_RC \
+ old_archive_from_new_cmds_RC \
+ predep_objects_RC \
+ postdep_objects_RC \
+ predeps_RC \
+ postdeps_RC \
+ compiler_lib_search_path_RC \
+ archive_cmds_RC \
+ archive_expsym_cmds_RC \
+ postinstall_cmds_RC \
+ postuninstall_cmds_RC \
+ old_archive_from_expsyms_cmds_RC \
+ allow_undefined_flag_RC \
+ no_undefined_flag_RC \
+ export_symbols_cmds_RC \
+ hardcode_libdir_flag_spec_RC \
+ hardcode_libdir_flag_spec_ld_RC \
+ hardcode_libdir_separator_RC \
+ hardcode_automatic_RC \
+ module_cmds_RC \
+ module_expsym_cmds_RC \
+ lt_cv_prog_compiler_c_o_RC \
+ exclude_expsyms_RC \
+ include_expsyms_RC; do
+
+ case $var in
+ old_archive_cmds_RC | \
+ old_archive_from_new_cmds_RC | \
+ archive_cmds_RC | \
+ archive_expsym_cmds_RC | \
+ module_cmds_RC | \
+ module_expsym_cmds_RC | \
+ old_archive_from_expsyms_cmds_RC | \
+ export_symbols_cmds_RC | \
+ extract_expsyms_cmds | reload_cmds | finish_cmds | \
+ postinstall_cmds | postuninstall_cmds | \
+ old_postinstall_cmds | old_postuninstall_cmds | \
+ sys_lib_search_path_spec | sys_lib_dlsearch_path_spec)
+ # Double-quote double-evaled strings.
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$double_quote_subst\" -e \"\$sed_quote_subst\" -e \"\$delay_variable_subst\"\`\\\""
+ ;;
+ *)
+ eval "lt_$var=\\\"\`\$echo \"X\$$var\" | \$Xsed -e \"\$sed_quote_subst\"\`\\\""
+ ;;
+ esac
+ done
+
+ case $lt_echo in
+ *'\$0 --fallback-echo"')
+ lt_echo=`$echo "X$lt_echo" | $Xsed -e 's/\\\\\\\$0 --fallback-echo"$/$0 --fallback-echo"/'`
+ ;;
+ esac
+
+cfgfile="$ofile"
+
+ cat <<__EOF__ >> "$cfgfile"
+# ### BEGIN LIBTOOL TAG CONFIG: $tagname
+
+# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`:
+
+# Shell to use when invoking shell scripts.
+SHELL=$lt_SHELL
+
+# Whether or not to build shared libraries.
+build_libtool_libs=$enable_shared
+
+# Whether or not to build static libraries.
+build_old_libs=$enable_static
+
+# Whether or not to add -lc for building shared libraries.
+build_libtool_need_lc=$archive_cmds_need_lc_RC
+
+# Whether or not to disallow shared libs when runtime libs are static
+allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes_RC
+
+# Whether or not to optimize for fast installation.
+fast_install=$enable_fast_install
+
+# 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
+
+# An echo program that does not interpret backslashes.
+echo=$lt_echo
+
+# The archiver.
+AR=$lt_AR
+AR_FLAGS=$lt_AR_FLAGS
+
+# A C compiler.
+LTCC=$lt_LTCC
+
+# LTCC compiler flags.
+LTCFLAGS=$lt_LTCFLAGS
+
+# A language-specific compiler.
+CC=$lt_compiler_RC
+
+# Is the compiler the GNU C compiler?
+with_gcc=$GCC_RC
+
+# An ERE matcher.
+EGREP=$lt_EGREP
+
+# The linker used to build libraries.
+LD=$lt_LD_RC
+
+# Whether we need hard or soft links.
+LN_S=$lt_LN_S
+
+# A BSD-compatible nm program.
+NM=$lt_NM
+
+# A symbol stripping program
+STRIP=$lt_STRIP
+
+# Used to examine libraries when file_magic_cmd begins "file"
+MAGIC_CMD=$MAGIC_CMD
+
+# Used on cygwin: DLL creation program.
+DLLTOOL="$DLLTOOL"
+
+# Used on cygwin: object dumper.
+OBJDUMP="$OBJDUMP"
+
+# Used on cygwin: assembler.
+AS="$AS"
+
+# The name of the directory that contains temporary libtool files.
+objdir=$objdir
+
+# How to create reloadable object files.
+reload_flag=$lt_reload_flag
+reload_cmds=$lt_reload_cmds
+
+# How to pass a linker flag through the compiler.
+wl=$lt_lt_prog_compiler_wl_RC
+
+# Object file suffix (normally "o").
+objext="$ac_objext"
+
+# Old archive suffix (normally "a").
+libext="$libext"
+
+# Shared library suffix (normally ".so").
+shrext_cmds='$shrext_cmds'
+
+# Executable file suffix (normally "").
+exeext="$exeext"
+
+# Additional compiler flags for building library objects.
+pic_flag=$lt_lt_prog_compiler_pic_RC
+pic_mode=$pic_mode
+
+# What is the maximum length of a command?
+max_cmd_len=$lt_cv_sys_max_cmd_len
+
+# Does compiler simultaneously support -c and -o options?
+compiler_c_o=$lt_lt_cv_prog_compiler_c_o_RC
+
+# Must we lock files when doing compilation?
+need_locks=$lt_need_locks
+
+# 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
+
+# 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
+
+# Compiler flag to prevent dynamic linking.
+link_static_flag=$lt_lt_prog_compiler_static_RC
+
+# Compiler flag to turn off builtin functions.
+no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag_RC
+
+# Compiler flag to allow reflexive dlopens.
+export_dynamic_flag_spec=$lt_export_dynamic_flag_spec_RC
+
+# Compiler flag to generate shared objects directly from archives.
+whole_archive_flag_spec=$lt_whole_archive_flag_spec_RC
+
+# Compiler flag to generate thread-safe objects.
+thread_safe_flag_spec=$lt_thread_safe_flag_spec_RC
+
+# Library versioning type.
+version_type=$version_type
+
+# 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
+
+# Commands used to build and install an old-style archive.
+RANLIB=$lt_RANLIB
+old_archive_cmds=$lt_old_archive_cmds_RC
+old_postinstall_cmds=$lt_old_postinstall_cmds
+old_postuninstall_cmds=$lt_old_postuninstall_cmds
+
+# Create an old-style archive from a shared archive.
+old_archive_from_new_cmds=$lt_old_archive_from_new_cmds_RC
+
+# Create a temporary old-style archive to link instead of a shared archive.
+old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds_RC
+
+# Commands used to build and install a shared archive.
+archive_cmds=$lt_archive_cmds_RC
+archive_expsym_cmds=$lt_archive_expsym_cmds_RC
+postinstall_cmds=$lt_postinstall_cmds
+postuninstall_cmds=$lt_postuninstall_cmds
+
+# Commands used to build a loadable module (assumed same as above if empty)
+module_cmds=$lt_module_cmds_RC
+module_expsym_cmds=$lt_module_expsym_cmds_RC
+
+# Commands to strip libraries.
+old_striplib=$lt_old_striplib
+striplib=$lt_striplib
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predep_objects=$lt_predep_objects_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdep_objects=$lt_postdep_objects_RC
+
+# Dependencies to place before the objects being linked to create a
+# shared library.
+predeps=$lt_predeps_RC
+
+# Dependencies to place after the objects being linked to create a
+# shared library.
+postdeps=$lt_postdeps_RC
+
+# The library search path used internally by the compiler when linking
+# a shared library.
+compiler_lib_search_path=$lt_compiler_lib_search_path_RC
+
+# 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
+
+# Flag that allows shared libraries with undefined symbols to be built.
+allow_undefined_flag=$lt_allow_undefined_flag_RC
+
+# Flag that forces no undefined symbols.
+no_undefined_flag=$lt_no_undefined_flag_RC
+
+# Commands used to finish a libtool library installation in a directory.
+finish_cmds=$lt_finish_cmds
+
+# Same as above, but a single script fragment to be evaled but not shown.
+finish_eval=$lt_finish_eval
+
+# 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
+
+# This is the shared library runtime path variable.
+runpath_var=$runpath_var
+
+# This is the shared library path variable.
+shlibpath_var=$shlibpath_var
+
+# Is shlibpath searched before the hard-coded library search path?
+shlibpath_overrides_runpath=$shlibpath_overrides_runpath
+
+# How to hardcode a shared library path into an executable.
+hardcode_action=$hardcode_action_RC
+
+# Whether we should hardcode library paths into libraries.
+hardcode_into_libs=$hardcode_into_libs
+
+# 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_RC
+
+# 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_RC
+
+# Whether we need a single -rpath flag with a separated argument.
+hardcode_libdir_separator=$lt_hardcode_libdir_separator_RC
+
+# Set to yes if using DIR/libNAME${shared_ext} during linking hardcodes DIR into the
+# resulting binary.
+hardcode_direct=$hardcode_direct_RC
+
+# Set to yes if using the -LDIR flag during linking hardcodes DIR into the
+# resulting binary.
+hardcode_minus_L=$hardcode_minus_L_RC
+
+# Set to yes if using SHLIBPATH_VAR=DIR during linking hardcodes DIR into
+# the resulting binary.
+hardcode_shlibpath_var=$hardcode_shlibpath_var_RC
+
+# 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_RC
+
+# Variables whose values should be saved in libtool wrapper scripts and
+# restored at relink time.
+variables_saved_for_relink="$variables_saved_for_relink"
+
+# Whether libtool must link a program against all its dependency libraries.
+link_all_deplibs=$link_all_deplibs_RC
+
+# 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
+
+# Fix the shell variable \$srcfile for the compiler.
+fix_srcfile_path="$fix_srcfile_path_RC"
+
+# Set to yes if exported symbols are required.
+always_export_symbols=$always_export_symbols_RC
+
+# The commands to list exported symbols.
+export_symbols_cmds=$lt_export_symbols_cmds_RC
+
+# The commands to extract the exported symbol list from a shared archive.
+extract_expsyms_cmds=$lt_extract_expsyms_cmds
+
+# Symbols that should not be listed in the preloaded symbols.
+exclude_expsyms=$lt_exclude_expsyms_RC
+
+# Symbols that must always be exported.
+include_expsyms=$lt_include_expsyms_RC
+
+# ### END LIBTOOL TAG CONFIG: $tagname
+
+__EOF__
+
+
+else
+ # If there is no Makefile yet, we rely on a make rule to execute
+ # `config.status --recheck' to rerun these tests and create the
+ # libtool script then.
+ ltmain_in=`echo $ltmain | sed -e 's/\.sh$/.in/'`
+ if test -f "$ltmain_in"; then
+ test -f Makefile && make "$ltmain"
+ fi
+fi
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+CC="$lt_save_CC"
+
+ ;;
+
+ *)
+ { { echo "$as_me:$LINENO: error: Unsupported tag name: $tagname" >&5
+echo "$as_me: error: Unsupported tag name: $tagname" >&2;}
+ { (exit 1); exit 1; }; }
+ ;;
+ esac
+
+ # Append the new tag name to the list of available tags.
+ if test -n "$tagname" ; then
+ available_tags="$available_tags $tagname"
+ fi
+ fi
+ done
+ IFS="$lt_save_ifs"
+
+ # Now substitute the updated list of available tags.
+ if eval "sed -e 's/^available_tags=.*\$/available_tags=\"$available_tags\"/' \"$ofile\" > \"${ofile}T\""; then
+ mv "${ofile}T" "$ofile"
+ chmod +x "$ofile"
+ else
+ rm -f "${ofile}T"
+ { { echo "$as_me:$LINENO: error: unable to update list of available tagged configurations." >&5
+echo "$as_me: error: unable to update list of available tagged configurations." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+fi
+
+
+
+# This can be used to rebuild libtool when needed
+LIBTOOL_DEPS="$ac_aux_dir/ltmain.sh"
+
+# Always use our own libtool.
+LIBTOOL='$(SHELL) $(top_builddir)/libtool'
+
+# Prevent multiple expansion
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { echo "$as_me:$LINENO: checking whether NLS is requested" >&5
+echo $ECHO_N "checking whether NLS is requested... $ECHO_C" >&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
+
+ { echo "$as_me:$LINENO: result: $USE_NLS" >&5
+echo "${ECHO_T}$USE_NLS" >&6; }
+
+
+
+
+
+
+# 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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_MSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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
+ { echo "$as_me:$LINENO: result: $MSGFMT" >&5
+echo "${ECHO_T}$MSGFMT" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+ # Extract the first word of "gmsgfmt", so it can be a program name with args.
+set dummy gmsgfmt; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_GMSGFMT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $GMSGFMT" >&5
+echo "${ECHO_T}$GMSGFMT" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_XGETTEXT+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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
+ { echo "$as_me:$LINENO: result: $XGETTEXT" >&5
+echo "${ECHO_T}$XGETTEXT" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_MSGMERGE+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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
+ { echo "$as_me:$LINENO: result: $MSGMERGE" >&5
+echo "${ECHO_T}$MSGMERGE" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+ test -n "$localedir" || localedir='${datadir}/locale'
+
+
+ ac_config_commands="$ac_config_commands po-directories"
+
+
+
+ if test "X$prefix" = "XNONE"; then
+ acl_final_prefix="$ac_default_prefix"
+ else
+ acl_final_prefix="$prefix"
+ fi
+ if test "X$exec_prefix" = "XNONE"; then
+ acl_final_exec_prefix='${prefix}'
+ else
+ acl_final_exec_prefix="$exec_prefix"
+ fi
+ acl_save_prefix="$prefix"
+ prefix="$acl_final_prefix"
+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\"
+ prefix="$acl_save_prefix"
+
+
+# Check whether --with-gnu-ld was given.
+if test "${with_gnu_ld+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
+ 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
+ac_prog=ld
+if test "$GCC" = yes; then
+ # Check if gcc -print-prog-name=ld gives a path.
+ { echo "$as_me:$LINENO: checking for ld used by GCC" >&5
+echo $ECHO_N "checking for ld used by GCC... $ECHO_C" >&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
+ { echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
+else
+ { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
+fi
+if test "${acl_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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
+ { echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
+if test "${acl_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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
+{ echo "$as_me:$LINENO: result: $acl_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$acl_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$acl_cv_prog_gnu_ld
+
+
+
+
+ { echo "$as_me:$LINENO: checking for shared library run path origin" >&5
+echo $ECHO_N "checking for shared library run path origin... $ECHO_C" >&6; }
+if test "${acl_cv_rpath+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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
+{ echo "$as_me:$LINENO: result: $acl_cv_rpath" >&5
+echo "${ECHO_T}$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
+ 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 ;;
+ *) searchdir=`cd "$searchdir" && pwd`
+ case "$searchdir" in
+ */lib64 ) acl_libdirstem=lib64 ;;
+ esac ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_IFS"
+ 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-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"
+ fi
+ fi
+
+fi
+
+ LIBICONV=
+ LTLIBICONV=
+ INCICONV=
+ LIBICONV_PREFIX=
+ 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"; 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/"'*$,,'`
+ LIBICONV_PREFIX="$basedir"
+ 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"; then
+ haveit=
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; 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
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ { echo "$as_me:$LINENO: checking for CFPreferencesCopyAppValue" >&5
+echo $ECHO_N "checking for CFPreferencesCopyAppValue... $ECHO_C" >&6; }
+if test "${gt_cv_func_CFPreferencesCopyAppValue+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <CoreFoundation/CFPreferences.h>
+int
+main ()
+{
+CFPreferencesCopyAppValue(NULL, NULL)
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ gt_cv_func_CFPreferencesCopyAppValue=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_func_CFPreferencesCopyAppValue=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$gt_save_LIBS"
+fi
+{ echo "$as_me:$LINENO: result: $gt_cv_func_CFPreferencesCopyAppValue" >&5
+echo "${ECHO_T}$gt_cv_func_CFPreferencesCopyAppValue" >&6; }
+ if test $gt_cv_func_CFPreferencesCopyAppValue = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_CFPREFERENCESCOPYAPPVALUE 1
+_ACEOF
+
+ fi
+ { echo "$as_me:$LINENO: checking for CFLocaleCopyCurrent" >&5
+echo $ECHO_N "checking for CFLocaleCopyCurrent... $ECHO_C" >&6; }
+if test "${gt_cv_func_CFLocaleCopyCurrent+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS -Wl,-framework -Wl,CoreFoundation"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <CoreFoundation/CFLocale.h>
+int
+main ()
+{
+CFLocaleCopyCurrent();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ gt_cv_func_CFLocaleCopyCurrent=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ gt_cv_func_CFLocaleCopyCurrent=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$gt_save_LIBS"
+fi
+{ echo "$as_me:$LINENO: result: $gt_cv_func_CFLocaleCopyCurrent" >&5
+echo "${ECHO_T}$gt_cv_func_CFLocaleCopyCurrent" >&6; }
+ if test $gt_cv_func_CFLocaleCopyCurrent = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_CFLOCALECOPYCURRENT 1
+_ACEOF
+
+ 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
+
+ { echo "$as_me:$LINENO: checking for GNU gettext in libc" >&5
+echo $ECHO_N "checking for GNU gettext in libc... $ECHO_C" >&6; }
+if { as_var=$gt_func_gnugettext_libc; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$gt_func_gnugettext_libc=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$gt_func_gnugettext_libc=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$gt_func_gnugettext_libc'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$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
+
+
+ { echo "$as_me:$LINENO: checking for iconv" >&5
+echo $ECHO_N "checking for iconv... $ECHO_C" >&6; }
+if test "${am_cv_func_iconv+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+
+ am_cv_func_iconv="no, consider installing GNU libiconv"
+ am_cv_lib_iconv=no
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ am_cv_func_iconv=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ if test "$am_cv_func_iconv" != yes; then
+ am_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBICONV"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ am_cv_lib_iconv=yes
+ am_cv_func_iconv=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ LIBS="$am_save_LIBS"
+ fi
+
+fi
+{ echo "$as_me:$LINENO: result: $am_cv_func_iconv" >&5
+echo "${ECHO_T}$am_cv_func_iconv" >&6; }
+ if test "$am_cv_func_iconv" = yes; then
+ { echo "$as_me:$LINENO: checking for working iconv" >&5
+echo $ECHO_N "checking for working iconv... $ECHO_C" >&6; }
+if test "${am_cv_func_iconv_works+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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;
+ }
+ }
+#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 0;
+}
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ am_cv_func_iconv_works=yes
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+am_cv_func_iconv_works=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+ LIBS="$am_save_LIBS"
+
+fi
+{ echo "$as_me:$LINENO: result: $am_cv_func_iconv_works" >&5
+echo "${ECHO_T}$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
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_ICONV 1
+_ACEOF
+
+ fi
+ if test "$am_cv_lib_iconv" = yes; then
+ { echo "$as_me:$LINENO: checking how to link with libiconv" >&5
+echo $ECHO_N "checking how to link with libiconv... $ECHO_C" >&6; }
+ { echo "$as_me:$LINENO: result: $LIBICONV" >&5
+echo "${ECHO_T}$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"
+ fi
+ fi
+
+fi
+
+ LIBINTL=
+ LTLIBINTL=
+ INCINTL=
+ LIBINTL_PREFIX=
+ 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"; 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/"'*$,,'`
+ LIBINTL_PREFIX="$basedir"
+ 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"; then
+ haveit=
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; 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
+
+ { echo "$as_me:$LINENO: checking for GNU gettext in libintl" >&5
+echo $ECHO_N "checking for GNU gettext in libintl... $ECHO_C" >&6; }
+if { as_var=$gt_func_gnugettext_libintl; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ gt_save_CPPFLAGS="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $INCINTL"
+ gt_save_LIBS="$LIBS"
+ LIBS="$LIBS $LIBINTL"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$gt_func_gnugettext_libintl=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$gt_func_gnugettext_libintl=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ 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 >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ LIBINTL="$LIBINTL $LIBICONV"
+ LTLIBINTL="$LTLIBINTL $LTLIBICONV"
+ eval "$gt_func_gnugettext_libintl=yes"
+
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+ fi
+ CPPFLAGS="$gt_save_CPPFLAGS"
+ LIBS="$gt_save_LIBS"
+fi
+ac_res=`eval echo '${'$gt_func_gnugettext_libintl'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$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
+
+cat >>confdefs.h <<\_ACEOF
+#define ENABLE_NLS 1
+_ACEOF
+
+ else
+ USE_NLS=no
+ fi
+ fi
+
+ { echo "$as_me:$LINENO: checking whether to use NLS" >&5
+echo $ECHO_N "checking whether to use NLS... $ECHO_C" >&6; }
+ { echo "$as_me:$LINENO: result: $USE_NLS" >&5
+echo "${ECHO_T}$USE_NLS" >&6; }
+ if test "$USE_NLS" = "yes"; then
+ { echo "$as_me:$LINENO: checking where the gettext function comes from" >&5
+echo $ECHO_N "checking where the gettext function comes from... $ECHO_C" >&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
+ { echo "$as_me:$LINENO: result: $gt_source" >&5
+echo "${ECHO_T}$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
+ { echo "$as_me:$LINENO: checking how to link with libintl" >&5
+echo $ECHO_N "checking how to link with libintl... $ECHO_C" >&6; }
+ { echo "$as_me:$LINENO: result: $LIBINTL" >&5
+echo "${ECHO_T}$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
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_GETTEXT 1
+_ACEOF
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_DCGETTEXT 1
+_ACEOF
+
+ fi
+
+ POSUB=po
+ fi
+
+
+
+ INTLLIBS="$LIBINTL"
+
+
+
+
+
+
+if test "$USE_INCLUDED_LIBINTL" = "yes"; then
+ { { echo "$as_me:$LINENO: 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
+" >&5
+echo "$as_me: 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
+" >&2;}
+ { (exit 1); exit 1; }; }
+ exit
+fi
+
+DL_LIBS=""
+if test "$enable_dynamic_loading" = yes; then
+ { echo "$as_me:$LINENO: checking for dlopen in -ldl" >&5
+echo $ECHO_N "checking for dlopen in -ldl... $ECHO_C" >&6; }
+if test "${ac_cv_lib_dl_dlopen+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldl $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_dl_dlopen=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_dl_dlopen=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dl_dlopen" >&5
+echo "${ECHO_T}$ac_cv_lib_dl_dlopen" >&6; }
+if test $ac_cv_lib_dl_dlopen = yes; then
+ DL_LIBS="-ldl"
+ PARTED_LIBS="$PARTED_LIBS -ldl"
+
+cat >>confdefs.h <<\_ACEOF
+#define DYNAMIC_LOADING 1
+_ACEOF
+
+else
+ { { echo "$as_me:$LINENO: error: -ldl not found! Try using --disable-dynamic-loading
+ " >&5
+echo "$as_me: error: -ldl not found! Try using --disable-dynamic-loading
+ " >&2;}
+ { (exit 1); exit 1; }; }
+ exit
+
+fi
+
+fi
+
+
+UUID_LIBS=""
+{ echo "$as_me:$LINENO: checking for uuid_generate in -luuid" >&5
+echo $ECHO_N "checking for uuid_generate in -luuid... $ECHO_C" >&6; }
+if test "${ac_cv_lib_uuid_uuid_generate+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-luuid $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_uuid_uuid_generate=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_uuid_uuid_generate=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_uuid_uuid_generate" >&5
+echo "${ECHO_T}$ac_cv_lib_uuid_uuid_generate" >&6; }
+if test $ac_cv_lib_uuid_uuid_generate = yes; then
+ UUID_LIBS="-luuid"
+else
+ { { echo "$as_me:$LINENO: error: GNU Parted requires libuuid - a part of the e2fsprogs package (but
+sometimes distributed separately in uuid-devel or similar)
+This can probably be found on your distribution's CD or FTP site or at:
+ http://web.mit.edu/tytso/www/linux/e2fsprogs.html
+Note: if you are using precompiled packages you will also need the development
+package as well (which may be called e2fsprogs-devel or something similar).
+If you compile e2fsprogs yourself then you need to do 'make install' and
+'make install-libs'.
+ " >&5
+echo "$as_me: error: GNU Parted requires libuuid - a part of the e2fsprogs package (but
+sometimes distributed separately in uuid-devel or similar)
+This can probably be found on your distribution's CD or FTP site or at:
+ http://web.mit.edu/tytso/www/linux/e2fsprogs.html
+Note: if you are using precompiled packages you will also need the development
+package as well (which may be called e2fsprogs-devel or something similar).
+If you compile e2fsprogs yourself then you need to do 'make install' and
+'make install-libs'.
+ " >&2;}
+ { (exit 1); exit 1; }; }
+ exit
+
+fi
+
+
+
+DM_LIBS=""
+if test "$enable_device_mapper" = yes; then
+ { echo "$as_me:$LINENO: checking for dm_task_create in -ldevmapper" >&5
+echo $ECHO_N "checking for dm_task_create in -ldevmapper... $ECHO_C" >&6; }
+if test "${ac_cv_lib_devmapper_dm_task_create+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldevmapper $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_devmapper_dm_task_create=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_devmapper_dm_task_create=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_devmapper_dm_task_create" >&5
+echo "${ECHO_T}$ac_cv_lib_devmapper_dm_task_create" >&6; }
+if test $ac_cv_lib_devmapper_dm_task_create = yes; then
+ DM_LIBS="-ldevmapper"
+else
+ { { echo "$as_me:$LINENO: error: libdevmapper not found! Try using --disable-device-mapper
+ " >&5
+echo "$as_me: error: libdevmapper not found! Try using --disable-device-mapper
+ " >&2;}
+ { (exit 1); exit 1; }; }
+ exit
+
+fi
+
+fi
+
+
+SELINUX_LIBS=""
+if test "$enable_selinux" = yes; then
+ SELINUX_LIBS="-lselinux -lsepol"
+fi
+
+
+REISER_LIBS=""
+if test "$enable_dynamic_loading" = no -a "$enable_discover_only" = no; then
+ OLD_LIBS="$LIBS"
+ { echo "$as_me:$LINENO: checking for dal_equals in -ldal" >&5
+echo $ECHO_N "checking for dal_equals in -ldal... $ECHO_C" >&6; }
+if test "${ac_cv_lib_dal_dal_equals+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-ldal $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_dal_dal_equals=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_dal_dal_equals=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_dal_dal_equals" >&5
+echo "${ECHO_T}$ac_cv_lib_dal_dal_equals" >&6; }
+if test $ac_cv_lib_dal_dal_equals = yes; then
+ LIBS="-ldal"
+ { echo "$as_me:$LINENO: checking for reiserfs_fs_probe in -lreiserfs" >&5
+echo $ECHO_N "checking for reiserfs_fs_probe in -lreiserfs... $ECHO_C" >&6; }
+if test "${ac_cv_lib_reiserfs_reiserfs_fs_probe+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lreiserfs $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_reiserfs_reiserfs_fs_probe=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_reiserfs_reiserfs_fs_probe=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_reiserfs_reiserfs_fs_probe" >&5
+echo "${ECHO_T}$ac_cv_lib_reiserfs_reiserfs_fs_probe" >&6; }
+if test $ac_cv_lib_reiserfs_reiserfs_fs_probe = yes; then
+ REISER_LIBS="-ldal -lreiserfs"
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBREISERFS 1
+_ACEOF
+
+
+fi
+
+ { echo "$as_me:$LINENO: checking for reiserfs_fs_check in -lreiserfs" >&5
+echo $ECHO_N "checking for reiserfs_fs_check in -lreiserfs... $ECHO_C" >&6; }
+if test "${ac_cv_lib_reiserfs_reiserfs_fs_check+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lreiserfs $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_reiserfs_reiserfs_fs_check=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_reiserfs_reiserfs_fs_check=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_reiserfs_reiserfs_fs_check" >&5
+echo "${ECHO_T}$ac_cv_lib_reiserfs_reiserfs_fs_check" >&6; }
+if test $ac_cv_lib_reiserfs_reiserfs_fs_check = yes; then
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_REISERFS_FS_CHECK 1
+_ACEOF
+
+
+fi
+
+
+fi
+
+ LIBS="$OLD_LIBS"
+fi
+
+
+if test "$with_readline" = yes; then
+ OLD_LIBS="$LIBS"
+ LIBS=""
+ { echo "$as_me:$LINENO: checking for library containing tgetent" >&5
+echo $ECHO_N "checking for library containing tgetent... $ECHO_C" >&6; }
+if test "${ac_cv_search_tgetent+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_func_search_save_LIBS=$LIBS
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any 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
+ 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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_search_tgetent=$ac_res
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext
+ if test "${ac_cv_search_tgetent+set}" = set; then
+ break
+fi
+done
+if test "${ac_cv_search_tgetent+set}" = set; then
+ :
+else
+ ac_cv_search_tgetent=no
+fi
+rm conftest.$ac_ext
+LIBS=$ac_func_search_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_search_tgetent" >&5
+echo "${ECHO_T}$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
+ { { echo "$as_me:$LINENO: 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.
+" >&5
+echo "$as_me: 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.
+" >&2;}
+ { (exit 1); exit 1; }; }
+ exit
+
+fi
+
+ LIBS="$OLD_LIBS"
+fi
+
+if test "$with_readline" = yes; then
+ OLD_LIBS="$LIBS"
+ LIBS="$LIBS $PARTED_LIBS"
+ { echo "$as_me:$LINENO: checking for readline in -lreadline" >&5
+echo $ECHO_N "checking for readline in -lreadline... $ECHO_C" >&6; }
+if test "${ac_cv_lib_readline_readline+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lreadline $PARTED_LIBS
+ $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_readline_readline=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_readline_readline=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_readline_readline" >&5
+echo "${ECHO_T}$ac_cv_lib_readline_readline" >&6; }
+if test $ac_cv_lib_readline_readline = yes; then
+ PARTED_LIBS="-lreadline $PARTED_LIBS"
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_LIBREADLINE 1
+_ACEOF
+
+else
+ { { echo "$as_me:$LINENO: 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).
+" >&5
+echo "$as_me: 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).
+" >&2;}
+ { (exit 1); exit 1; }; }
+ exit
+fi
+
+ LIBS="$OLD_LIBS"
+fi
+
+
+
+
+if test "$OS" = gnu; then
+ { echo "$as_me:$LINENO: checking for vm_deallocate in -lshouldbeinlibc" >&5
+echo $ECHO_N "checking for vm_deallocate in -lshouldbeinlibc... $ECHO_C" >&6; }
+if test "${ac_cv_lib_shouldbeinlibc_vm_deallocate+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lshouldbeinlibc $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_shouldbeinlibc_vm_deallocate=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_shouldbeinlibc_vm_deallocate=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_shouldbeinlibc_vm_deallocate" >&5
+echo "${ECHO_T}$ac_cv_lib_shouldbeinlibc_vm_deallocate" >&6; }
+if test $ac_cv_lib_shouldbeinlibc_vm_deallocate = yes; then
+ OS_LIBS="$OS_LIBS -lshouldbeinlibc"
+else
+ { { echo "$as_me:$LINENO: error: GNU Parted requires libshouldbeinlibc when running on
+GNU/Hurd systems. It is a standard part of a GNU/Hurd system.
+ " >&5
+echo "$as_me: error: GNU Parted requires libshouldbeinlibc when running on
+GNU/Hurd systems. It is a standard part of a GNU/Hurd system.
+ " >&2;}
+ { (exit 1); exit 1; }; }
+ exit
+
+fi
+
+
+ OLD_LIBS="$LIBS"
+ LIBS=
+
+
+{ echo "$as_me:$LINENO: checking for ped_device_read in -lparted" >&5
+echo $ECHO_N "checking for ped_device_read in -lparted... $ECHO_C" >&6; }
+if test "${ac_cv_lib_parted_ped_device_read+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lparted $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_parted_ped_device_read=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_parted_ped_device_read=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_parted_ped_device_read" >&5
+echo "${ECHO_T}$ac_cv_lib_parted_ped_device_read" >&6; }
+if test $ac_cv_lib_parted_ped_device_read = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBPARTED 1
+_ACEOF
+
+ LIBS="-lparted $LIBS"
+
+fi
+
+
+ { echo "$as_me:$LINENO: checking for store_open in -lstore" >&5
+echo $ECHO_N "checking for store_open in -lstore... $ECHO_C" >&6; }
+if test "${ac_cv_lib_store_store_open+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lstore $OS_LIBS $UUID_LIBS $DM_LIBS $LIBS
+ $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_store_store_open=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_store_store_open=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_store_store_open" >&5
+echo "${ECHO_T}$ac_cv_lib_store_store_open" >&6; }
+if test $ac_cv_lib_store_store_open = yes; then
+ OS_LIBS="$OS_LIBS -lstore"
+else
+ { { echo "$as_me:$LINENO: error: GNU Parted requires libstore when running on GNU/Hurd
+systems. It is a standard part of a GNU/Hurd system.
+ " >&5
+echo "$as_me: error: GNU Parted requires libstore when running on GNU/Hurd
+systems. It is a standard part of a GNU/Hurd system.
+ " >&2;}
+ { (exit 1); exit 1; }; }
+ exit
+fi
+
+ LIBS="$OLD_LIBS"
+fi
+
+
+if test "$OS" = beos; then
+ OS_LIBS="$OS_LIBS -lsocket"
+fi
+
+
+
+
+
+
+if test "${ac_cv_header_uuid_uuid_h+set}" = set; then
+ { echo "$as_me:$LINENO: checking for uuid/uuid.h" >&5
+echo $ECHO_N "checking for uuid/uuid.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_uuid_uuid_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_uuid_uuid_h" >&5
+echo "${ECHO_T}$ac_cv_header_uuid_uuid_h" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking uuid/uuid.h usability" >&5
+echo $ECHO_N "checking uuid/uuid.h usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <uuid/uuid.h>
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking uuid/uuid.h presence" >&5
+echo $ECHO_N "checking uuid/uuid.h presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <uuid/uuid.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: uuid/uuid.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: uuid/uuid.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: uuid/uuid.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: uuid/uuid.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: uuid/uuid.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: uuid/uuid.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: uuid/uuid.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: uuid/uuid.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: uuid/uuid.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: uuid/uuid.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: uuid/uuid.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: uuid/uuid.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: uuid/uuid.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: uuid/uuid.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: uuid/uuid.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: uuid/uuid.h: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-parted@gnu.org ##
+## --------------------------------- ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for uuid/uuid.h" >&5
+echo $ECHO_N "checking for uuid/uuid.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_uuid_uuid_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_uuid_uuid_h=$ac_header_preproc
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_uuid_uuid_h" >&5
+echo "${ECHO_T}$ac_cv_header_uuid_uuid_h" >&6; }
+
+fi
+if test $ac_cv_header_uuid_uuid_h = yes; then
+ :
+else
+ { { echo "$as_me:$LINENO: 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
+" >&5
+echo "$as_me: 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
+" >&2;}
+ { (exit 1); exit 1; }; }
+ exit
+
+fi
+
+
+
+
+for ac_header in getopt.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-parted@gnu.org ##
+## --------------------------------- ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+if test "$OS" = linux; then
+ if test "${ac_cv_header_linux_unistd_h+set}" = set; then
+ { echo "$as_me:$LINENO: checking for linux/unistd.h" >&5
+echo $ECHO_N "checking for linux/unistd.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_linux_unistd_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_unistd_h" >&5
+echo "${ECHO_T}$ac_cv_header_linux_unistd_h" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking linux/unistd.h usability" >&5
+echo $ECHO_N "checking linux/unistd.h usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <linux/unistd.h>
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking linux/unistd.h presence" >&5
+echo $ECHO_N "checking linux/unistd.h presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <linux/unistd.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: linux/unistd.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: linux/unistd.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: linux/unistd.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: linux/unistd.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: linux/unistd.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: linux/unistd.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: linux/unistd.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: linux/unistd.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: linux/unistd.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: linux/unistd.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: linux/unistd.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: linux/unistd.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: linux/unistd.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: linux/unistd.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: linux/unistd.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: linux/unistd.h: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-parted@gnu.org ##
+## --------------------------------- ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for linux/unistd.h" >&5
+echo $ECHO_N "checking for linux/unistd.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_linux_unistd_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_linux_unistd_h=$ac_header_preproc
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_linux_unistd_h" >&5
+echo "${ECHO_T}$ac_cv_header_linux_unistd_h" >&6; }
+
+fi
+
+
+fi
+
+if test "$with_readline" = yes; then
+
+
+for ac_header in readline/readline.h readline/history.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-parted@gnu.org ##
+## --------------------------------- ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ { { echo "$as_me:$LINENO: 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
+" >&5
+echo "$as_me: 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
+" >&2;}
+ { (exit 1); exit 1; }; }
+ exit
+
+fi
+
+done
+
+fi
+
+
+for ac_header in termcap.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-parted@gnu.org ##
+## --------------------------------- ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+if test "$USE_NLS" = yes; then
+
+for ac_header in wctype.h
+do
+as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh`
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ { echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking $ac_header usability" >&5
+echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <$ac_header>
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking $ac_header presence" >&5
+echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <$ac_header>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5
+echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-parted@gnu.org ##
+## --------------------------------- ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for $ac_header" >&5
+echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; }
+if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ eval "$as_ac_Header=\$ac_header_preproc"
+fi
+ac_res=`eval echo '${'$as_ac_Header'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+
+fi
+if test `eval echo '${'$as_ac_Header'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+else
+ { { echo "$as_me:$LINENO: 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
+" >&5
+echo "$as_me: 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
+" >&2;}
+ { (exit 1); exit 1; }; }
+ exit
+
+fi
+
+done
+
+fi
+
+if test "${ac_cv_header_execinfo_h+set}" = set; then
+ { echo "$as_me:$LINENO: checking for execinfo.h" >&5
+echo $ECHO_N "checking for execinfo.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_execinfo_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_execinfo_h" >&5
+echo "${ECHO_T}$ac_cv_header_execinfo_h" >&6; }
+else
+ # Is the header compilable?
+{ echo "$as_me:$LINENO: checking execinfo.h usability" >&5
+echo $ECHO_N "checking execinfo.h usability... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+#include <execinfo.h>
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_header_compiler=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_compiler=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5
+echo "${ECHO_T}$ac_header_compiler" >&6; }
+
+# Is the header present?
+{ echo "$as_me:$LINENO: checking execinfo.h presence" >&5
+echo $ECHO_N "checking execinfo.h presence... $ECHO_C" >&6; }
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+#include <execinfo.h>
+_ACEOF
+if { (ac_try="$ac_cpp conftest.$ac_ext"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } >/dev/null && {
+ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ }; then
+ ac_header_preproc=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_header_preproc=no
+fi
+
+rm -f conftest.err conftest.$ac_ext
+{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5
+echo "${ECHO_T}$ac_header_preproc" >&6; }
+
+# So? What about this header?
+case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in
+ yes:no: )
+ { echo "$as_me:$LINENO: WARNING: execinfo.h: accepted by the compiler, rejected by the preprocessor!" >&5
+echo "$as_me: WARNING: execinfo.h: accepted by the compiler, rejected by the preprocessor!" >&2;}
+ { echo "$as_me:$LINENO: WARNING: execinfo.h: proceeding with the compiler's result" >&5
+echo "$as_me: WARNING: execinfo.h: proceeding with the compiler's result" >&2;}
+ ac_header_preproc=yes
+ ;;
+ no:yes:* )
+ { echo "$as_me:$LINENO: WARNING: execinfo.h: present but cannot be compiled" >&5
+echo "$as_me: WARNING: execinfo.h: present but cannot be compiled" >&2;}
+ { echo "$as_me:$LINENO: WARNING: execinfo.h: check for missing prerequisite headers?" >&5
+echo "$as_me: WARNING: execinfo.h: check for missing prerequisite headers?" >&2;}
+ { echo "$as_me:$LINENO: WARNING: execinfo.h: see the Autoconf documentation" >&5
+echo "$as_me: WARNING: execinfo.h: see the Autoconf documentation" >&2;}
+ { echo "$as_me:$LINENO: WARNING: execinfo.h: section \"Present But Cannot Be Compiled\"" >&5
+echo "$as_me: WARNING: execinfo.h: section \"Present But Cannot Be Compiled\"" >&2;}
+ { echo "$as_me:$LINENO: WARNING: execinfo.h: proceeding with the preprocessor's result" >&5
+echo "$as_me: WARNING: execinfo.h: proceeding with the preprocessor's result" >&2;}
+ { echo "$as_me:$LINENO: WARNING: execinfo.h: in the future, the compiler will take precedence" >&5
+echo "$as_me: WARNING: execinfo.h: in the future, the compiler will take precedence" >&2;}
+ ( cat <<\_ASBOX
+## --------------------------------- ##
+## Report this to bug-parted@gnu.org ##
+## --------------------------------- ##
+_ASBOX
+ ) | sed "s/^/$as_me: WARNING: /" >&2
+ ;;
+esac
+{ echo "$as_me:$LINENO: checking for execinfo.h" >&5
+echo $ECHO_N "checking for execinfo.h... $ECHO_C" >&6; }
+if test "${ac_cv_header_execinfo_h+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_header_execinfo_h=$ac_header_preproc
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_header_execinfo_h" >&5
+echo "${ECHO_T}$ac_cv_header_execinfo_h" >&6; }
+
+fi
+if test $ac_cv_header_execinfo_h = yes; then
+
+ { echo "$as_me:$LINENO: checking for backtrace in -lc" >&5
+echo $ECHO_N "checking for backtrace in -lc... $ECHO_C" >&6; }
+if test "${ac_cv_lib_c_backtrace+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lc $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_c_backtrace=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_c_backtrace=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_c_backtrace" >&5
+echo "${ECHO_T}$ac_cv_lib_c_backtrace" >&6; }
+if test $ac_cv_lib_c_backtrace = yes; then
+
+
+cat >>confdefs.h <<\_ACEOF
+#define HAVE_BACKTRACE 1
+_ACEOF
+
+ LDFLAGS="$LDFLAGS -rdynamic"
+
+fi
+
+
+fi
+
+
+
+cat >conftest.$ac_ext <<_ACEOF
+
+ /* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+ #if defined __s390__ || defined __s390x__
+ # message s390 defined
+ #endif
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ compile_for_s390="no"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ compile_for_s390="yes"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ if test "$compile_for_s390" = "yes"; then
+ COMPILE_FOR_S390_TRUE=
+ COMPILE_FOR_S390_FALSE='#'
+else
+ COMPILE_FOR_S390_TRUE='#'
+ COMPILE_FOR_S390_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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $PKG_CONFIG" >&5
+echo "${ECHO_T}$PKG_CONFIG" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}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
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_path_ac_pt_PKG_CONFIG+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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"
+ echo "$as_me:$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
+ { echo "$as_me:$LINENO: result: $ac_pt_PKG_CONFIG" >&5
+echo "${ECHO_T}$ac_pt_PKG_CONFIG" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+ if test "x$ac_pt_PKG_CONFIG" = x; then
+ PKG_CONFIG=""
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&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
+ { echo "$as_me:$LINENO: checking pkg-config is at least version $_pkg_min_version" >&5
+echo $ECHO_N "checking pkg-config is at least version $_pkg_min_version... $ECHO_C" >&6; }
+ if $PKG_CONFIG --atleast-pkgconfig-version $_pkg_min_version; then
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+ PKG_CONFIG=""
+ fi
+
+fi
+
+pkg_failed=no
+{ echo "$as_me:$LINENO: checking for CHECK" >&5
+echo $ECHO_N "checking for CHECK... $ECHO_C" >&6; }
+
+if test -n "$PKG_CONFIG"; then
+ if test -n "$CHECK_CFLAGS"; then
+ pkg_cv_CHECK_CFLAGS="$CHECK_CFLAGS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"check >= 0.9.3\"") >&5
+ ($PKG_CONFIG --exists --print-errors "check >= 0.9.3") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_CHECK_CFLAGS=`$PKG_CONFIG --cflags "check >= 0.9.3" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+if test -n "$PKG_CONFIG"; then
+ if test -n "$CHECK_LIBS"; then
+ pkg_cv_CHECK_LIBS="$CHECK_LIBS"
+ else
+ if test -n "$PKG_CONFIG" && \
+ { (echo "$as_me:$LINENO: \$PKG_CONFIG --exists --print-errors \"check >= 0.9.3\"") >&5
+ ($PKG_CONFIG --exists --print-errors "check >= 0.9.3") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ pkg_cv_CHECK_LIBS=`$PKG_CONFIG --libs "check >= 0.9.3" 2>/dev/null`
+else
+ pkg_failed=yes
+fi
+ fi
+else
+ pkg_failed=untried
+fi
+
+
+
+if test $pkg_failed = yes; then
+
+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 --errors-to-stdout --print-errors "check >= 0.9.3"`
+ else
+ CHECK_PKG_ERRORS=`$PKG_CONFIG --errors-to-stdout --print-errors "check >= 0.9.3"`
+ fi
+ # Put the nasty error message in config.log where it belongs
+ echo "$CHECK_PKG_ERRORS" >&5
+
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+ have_check=no
+elif test $pkg_failed = untried; then
+ have_check=no
+else
+ CHECK_CFLAGS=$pkg_cv_CHECK_CFLAGS
+ CHECK_LIBS=$pkg_cv_CHECK_LIBS
+ { echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+ have_check=yes
+fi
+if test "$have_scintilla" != "yes"; then
+ { echo "$as_me:$LINENO: result: Unable to locate check version 0.9.3 or higher: not building" >&5
+echo "${ECHO_T}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.
+ { echo "$as_me:$LINENO: checking for ld used by $CC" >&5
+echo $ECHO_N "checking for ld used by $CC... $ECHO_C" >&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
+ { echo "$as_me:$LINENO: checking for GNU ld" >&5
+echo $ECHO_N "checking for GNU ld... $ECHO_C" >&6; }
+else
+ { echo "$as_me:$LINENO: checking for non-GNU ld" >&5
+echo $ECHO_N "checking for non-GNU ld... $ECHO_C" >&6; }
+fi
+if test "${lt_cv_path_LD+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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
+ { echo "$as_me:$LINENO: result: $LD" >&5
+echo "${ECHO_T}$LD" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+test -z "$LD" && { { echo "$as_me:$LINENO: error: no acceptable ld found in \$PATH" >&5
+echo "$as_me: error: no acceptable ld found in \$PATH" >&2;}
+ { (exit 1); exit 1; }; }
+{ echo "$as_me:$LINENO: checking if the linker ($LD) is GNU ld" >&5
+echo $ECHO_N "checking if the linker ($LD) is GNU ld... $ECHO_C" >&6; }
+if test "${lt_cv_prog_gnu_ld+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&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
+{ echo "$as_me:$LINENO: result: $lt_cv_prog_gnu_ld" >&5
+echo "${ECHO_T}$lt_cv_prog_gnu_ld" >&6; }
+with_gnu_ld=$lt_cv_prog_gnu_ld
+
+
+
+{ echo "$as_me:$LINENO: checking whether byte ordering is bigendian" >&5
+echo $ECHO_N "checking whether byte ordering is bigendian... $ECHO_C" >&6; }
+if test "${ac_cv_c_bigendian+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ # See if sys/param.h defines the BYTE_ORDER macro.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ # It does; now see whether it defined to BIG_ENDIAN or not.
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_c_bigendian=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_c_bigendian=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ # It does not; compile a test program.
+if test "$cross_compiling" = yes; then
+ # try to guess the endianness by grepping values into an object file
+ ac_cv_c_bigendian=unknown
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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 };
+void _ascii () { char *s = (char *) ascii_mm; s = (char *) ascii_ii; }
+short int ebcdic_ii[] = { 0x89D3, 0xE3E3, 0x8593, 0x95C5, 0x89C4, 0x9581, 0 };
+short int ebcdic_mm[] = { 0xC2C9, 0xC785, 0x95C4, 0x8981, 0x95E2, 0xA8E2, 0 };
+void _ebcdic () { char *s = (char *) ebcdic_mm; s = (char *) ebcdic_ii; }
+int
+main ()
+{
+ _ascii (); _ebcdic ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; 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
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+$ac_includes_default
+int
+main ()
+{
+
+ /* 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
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ ac_cv_c_bigendian=no
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+ac_cv_c_bigendian=yes
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_c_bigendian" >&5
+echo "${ECHO_T}$ac_cv_c_bigendian" >&6; }
+case $ac_cv_c_bigendian in
+ yes)
+
+cat >>confdefs.h <<\_ACEOF
+#define WORDS_BIGENDIAN 1
+_ACEOF
+ ;;
+ no)
+ ;;
+ *)
+ { { echo "$as_me:$LINENO: error: unknown endianness
+presetting ac_cv_c_bigendian=no (or yes) will help" >&5
+echo "$as_me: error: unknown endianness
+presetting ac_cv_c_bigendian=no (or yes) will help" >&2;}
+ { (exit 1); exit 1; }; } ;;
+esac
+
+{ echo "$as_me:$LINENO: checking for inline" >&5
+echo $ECHO_N "checking for inline... $ECHO_C" >&6; }
+if test "${ac_cv_c_inline+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_c_inline=no
+for ac_kw in inline __inline__ __inline; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_c_inline=$ac_kw
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ test "$ac_cv_c_inline" != no && break
+done
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_c_inline" >&5
+echo "${ECHO_T}$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
+
+{ echo "$as_me:$LINENO: checking for an ANSI C-conforming const" >&5
+echo $ECHO_N "checking for an ANSI C-conforming const... $ECHO_C" >&6; }
+if test "${ac_cv_c_const+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+/* 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_c_const=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_c_const=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_c_const" >&5
+echo "${ECHO_T}$ac_cv_c_const" >&6; }
+if test $ac_cv_c_const = no; then
+
+cat >>confdefs.h <<\_ACEOF
+#define const
+_ACEOF
+
+fi
+
+{ echo "$as_me:$LINENO: checking for C/C++ restrict keyword" >&5
+echo $ECHO_N "checking for C/C++ restrict keyword... $ECHO_C" >&6; }
+if test "${ac_cv_c_restrict+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_cv_c_restrict=no
+ # Try the official restrict keyword, then gcc's __restrict, and
+ # the less common variants.
+ for ac_kw in restrict __restrict __restrict__ _Restrict; do
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* 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
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_c_restrict=$ac_kw
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ test "$ac_cv_c_restrict" != no && break
+ done
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_c_restrict" >&5
+echo "${ECHO_T}$ac_cv_c_restrict" >&6; }
+ case $ac_cv_c_restrict in
+ restrict) ;;
+ no)
+cat >>confdefs.h <<\_ACEOF
+#define restrict
+_ACEOF
+ ;;
+ *) cat >>confdefs.h <<_ACEOF
+#define restrict $ac_cv_c_restrict
+_ACEOF
+ ;;
+ esac
+
+
+
+
+for ac_func in sigaction
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <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 $ac_func
+
+/* 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 $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+for ac_func in getuid
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <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 $ac_func
+
+/* 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 $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+if test "$with_readline" = yes; then
+ OLD_LIBS="$LIBS"
+ LIBS="$LIBS $PARTED_LIBS -lreadline"
+
+for ac_func in rl_completion_matches
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <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 $ac_func
+
+/* 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 $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+ LIBS="$OLD_LIBS"
+fi
+
+
+for ac_func in canonicalize_file_name
+do
+as_ac_var=`echo "ac_cv_func_$ac_func" | $as_tr_sh`
+{ echo "$as_me:$LINENO: checking for $ac_func" >&5
+echo $ECHO_N "checking for $ac_func... $ECHO_C" >&6; }
+if { as_var=$as_ac_var; eval "test \"\${$as_var+set}\" = set"; }; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+/* Define $ac_func to an innocuous variant, in case <limits.h> declares $ac_func.
+ For example, HP-UX 11i <limits.h> declares gettimeofday. */
+#define $ac_func innocuous_$ac_func
+
+/* System header to define __stub macros and hopefully few prototypes,
+ which can conflict with char $ac_func (); below.
+ Prefer <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 $ac_func
+
+/* 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 $ac_func ();
+/* The GNU C library defines this for functions which it implements
+ to always fail with ENOSYS. Some functions are actually named
+ something starting with __ and the normal name is an alias. */
+#if defined __stub_$ac_func || defined __stub___$ac_func
+choke me
+#endif
+
+int
+main ()
+{
+return $ac_func ();
+ ;
+ return 0;
+}
+_ACEOF
+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 "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_c_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ eval "$as_ac_var=yes"
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ eval "$as_ac_var=no"
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+fi
+ac_res=`eval echo '${'$as_ac_var'}'`
+ { echo "$as_me:$LINENO: result: $ac_res" >&5
+echo "${ECHO_T}$ac_res" >&6; }
+if test `eval echo '${'$as_ac_var'}'` = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define `echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+
+# CFLAGS="$CFLAGS -W -Wall -Wno-unused -Wno-switch -Wno-format"
+
+if test "$enable_Werror" = yes; then
+ CFLAGS="$CFLAGS -Werror"
+fi
+
+DATE=$(date '+%d %b %Y %H:%M')
+USER=$(whoami)
+HOST=$(hostname)
+BUILDINFO="$USER@$HOST, $DATE"
+
+
+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/tests/Makefile libparted.pc parted/Makefile partprobe/Makefile doc/Makefile doc/C/Makefile doc/pt_BR/Makefile debug/Makefile debug/clearfat/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_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ *) $as_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
+ test "x$cache_file" != "x/dev/null" &&
+ { echo "$as_me:$LINENO: updating cache $cache_file" >&5
+echo "$as_me: updating cache $cache_file" >&6;}
+ cat confcache >$cache_file
+ else
+ { echo "$as_me:$LINENO: not updating unwritable cache $cache_file" >&5
+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=
+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=`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.
+ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"AMDEP\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${GL_COND_LIBTOOL_TRUE}" && test -z "${GL_COND_LIBTOOL_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"GL_COND_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"GL_COND_LIBTOOL\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+test "X$DEFS" = X-DHAVE_CONFIG_H && DEFS=
+
+ 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 "$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
+
+
+if test -z "${am__fastdepCXX_TRUE}" && test -z "${am__fastdepCXX_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"am__fastdepCXX\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${COMPILE_FOR_S390_TRUE}" && test -z "${COMPILE_FOR_S390_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"COMPILE_FOR_S390\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"COMPILE_FOR_S390\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+if test -z "${HAVE_CHECK_TRUE}" && test -z "${HAVE_CHECK_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"HAVE_CHECK\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"HAVE_CHECK\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be 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=:
+ # 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
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+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.)
+as_nl='
+'
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+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
+ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+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
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line after each line using $LINENO; the second 'sed'
+ # does the real work. The second script uses 'N' to pair each
+ # line-number line with the line containing $LINENO, and appends
+ # trailing '-' during substitution so that $LINENO is not a special
+ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # scripts with optimization help from Paolo Bonzini. 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" ||
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+ case `echo 'x\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ *) ECHO_C='\c';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+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
+fi
+echo >conf$$.file
+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
+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=:
+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
+
+# 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 1.8.7, which was
+generated by GNU Autoconf 2.61. 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
+
+cat >>$CONFIG_STATUS <<_ACEOF
+# Files that config.status was made for.
+config_files="$ac_config_files"
+config_headers="$ac_config_headers"
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+ --file=FILE[:TEMPLATE]
+ instantiate the configuration file FILE
+ --header=FILE[:TEMPLATE]
+ instantiate the configuration header FILE
+
+Configuration files:
+$config_files
+
+Configuration headers:
+$config_headers
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf@gnu.org>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+GNU parted config.status 1.8.7
+configured by $0, generated by GNU Autoconf 2.61,
+ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2006 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'
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value. By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ 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 )
+ echo "$ac_cs_version"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --file | --fil | --fi | --f )
+ $ac_shift
+ CONFIG_FILES="$CONFIG_FILES $ac_optarg"
+ ac_need_defaults=false;;
+ --header | --heade | --head | --hea )
+ $ac_shift
+ CONFIG_HEADERS="$CONFIG_HEADERS $ac_optarg"
+ ac_need_defaults=false;;
+ --he | --h)
+ # Conflict between --help and --header
+ { echo "$as_me: error: ambiguous option: $1
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; };;
+ --help | --hel | -h )
+ echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) { echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; } ;;
+
+ *) ac_config_targets="$ac_config_targets $1"
+ 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
+if \$ac_cs_recheck; then
+ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+ CONFIG_SHELL=$SHELL
+ export CONFIG_SHELL
+ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+#
+# INIT-COMMANDS
+#
+AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"
+# 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
+
+# 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" ;;
+ "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/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/clearfat/Makefile") CONFIG_FILES="$CONFIG_FILES debug/clearfat/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" ;;
+
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files
+ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers
+ 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=
+ trap 'exit_status=$?
+ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} ||
+{
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+}
+
+#
+# Set up the sed scripts for CONFIG_FILES section.
+#
+
+# No need to generate the scripts if there are no CONFIG_FILES.
+# This happens for instance when ./config.status config.h
+if test -n "$CONFIG_FILES"; then
+
+_ACEOF
+
+
+
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ cat >conf$$subs.sed <<_ACEOF
+SHELL!$SHELL$ac_delim
+PATH_SEPARATOR!$PATH_SEPARATOR$ac_delim
+PACKAGE_NAME!$PACKAGE_NAME$ac_delim
+PACKAGE_TARNAME!$PACKAGE_TARNAME$ac_delim
+PACKAGE_VERSION!$PACKAGE_VERSION$ac_delim
+PACKAGE_STRING!$PACKAGE_STRING$ac_delim
+PACKAGE_BUGREPORT!$PACKAGE_BUGREPORT$ac_delim
+exec_prefix!$exec_prefix$ac_delim
+prefix!$prefix$ac_delim
+program_transform_name!$program_transform_name$ac_delim
+bindir!$bindir$ac_delim
+sbindir!$sbindir$ac_delim
+libexecdir!$libexecdir$ac_delim
+datarootdir!$datarootdir$ac_delim
+datadir!$datadir$ac_delim
+sysconfdir!$sysconfdir$ac_delim
+sharedstatedir!$sharedstatedir$ac_delim
+localstatedir!$localstatedir$ac_delim
+includedir!$includedir$ac_delim
+oldincludedir!$oldincludedir$ac_delim
+docdir!$docdir$ac_delim
+infodir!$infodir$ac_delim
+htmldir!$htmldir$ac_delim
+dvidir!$dvidir$ac_delim
+pdfdir!$pdfdir$ac_delim
+psdir!$psdir$ac_delim
+libdir!$libdir$ac_delim
+localedir!$localedir$ac_delim
+mandir!$mandir$ac_delim
+DEFS!$DEFS$ac_delim
+ECHO_C!$ECHO_C$ac_delim
+ECHO_N!$ECHO_N$ac_delim
+ECHO_T!$ECHO_T$ac_delim
+LIBS!$LIBS$ac_delim
+build_alias!$build_alias$ac_delim
+host_alias!$host_alias$ac_delim
+target_alias!$target_alias$ac_delim
+LT_RELEASE!$LT_RELEASE$ac_delim
+LT_CURRENT!$LT_CURRENT$ac_delim
+LT_REVISION!$LT_REVISION$ac_delim
+LT_AGE!$LT_AGE$ac_delim
+INSTALL_PROGRAM!$INSTALL_PROGRAM$ac_delim
+INSTALL_SCRIPT!$INSTALL_SCRIPT$ac_delim
+INSTALL_DATA!$INSTALL_DATA$ac_delim
+am__isrc!$am__isrc$ac_delim
+CYGPATH_W!$CYGPATH_W$ac_delim
+PACKAGE!$PACKAGE$ac_delim
+VERSION!$VERSION$ac_delim
+ACLOCAL!$ACLOCAL$ac_delim
+AUTOCONF!$AUTOCONF$ac_delim
+AUTOMAKE!$AUTOMAKE$ac_delim
+AUTOHEADER!$AUTOHEADER$ac_delim
+MAKEINFO!$MAKEINFO$ac_delim
+install_sh!$install_sh$ac_delim
+STRIP!$STRIP$ac_delim
+INSTALL_STRIP_PROGRAM!$INSTALL_STRIP_PROGRAM$ac_delim
+mkdir_p!$mkdir_p$ac_delim
+AWK!$AWK$ac_delim
+SET_MAKE!$SET_MAKE$ac_delim
+am__leading_dot!$am__leading_dot$ac_delim
+AMTAR!$AMTAR$ac_delim
+am__tar!$am__tar$ac_delim
+am__untar!$am__untar$ac_delim
+build!$build$ac_delim
+build_cpu!$build_cpu$ac_delim
+build_vendor!$build_vendor$ac_delim
+build_os!$build_os$ac_delim
+host!$host$ac_delim
+host_cpu!$host_cpu$ac_delim
+host_vendor!$host_vendor$ac_delim
+host_os!$host_os$ac_delim
+OS!$OS$ac_delim
+PARTEDLDFLAGS!$PARTEDLDFLAGS$ac_delim
+CC!$CC$ac_delim
+CFLAGS!$CFLAGS$ac_delim
+LDFLAGS!$LDFLAGS$ac_delim
+CPPFLAGS!$CPPFLAGS$ac_delim
+ac_ct_CC!$ac_ct_CC$ac_delim
+EXEEXT!$EXEEXT$ac_delim
+OBJEXT!$OBJEXT$ac_delim
+DEPDIR!$DEPDIR$ac_delim
+am__include!$am__include$ac_delim
+am__quote!$am__quote$ac_delim
+AMDEP_TRUE!$AMDEP_TRUE$ac_delim
+AMDEP_FALSE!$AMDEP_FALSE$ac_delim
+AMDEPBACKSLASH!$AMDEPBACKSLASH$ac_delim
+CCDEPMODE!$CCDEPMODE$ac_delim
+am__fastdepCC_TRUE!$am__fastdepCC_TRUE$ac_delim
+am__fastdepCC_FALSE!$am__fastdepCC_FALSE$ac_delim
+CPP!$CPP$ac_delim
+GREP!$GREP$ac_delim
+EGREP!$EGREP$ac_delim
+RANLIB!$RANLIB$ac_delim
+GL_COND_LIBTOOL_TRUE!$GL_COND_LIBTOOL_TRUE$ac_delim
+GL_COND_LIBTOOL_FALSE!$GL_COND_LIBTOOL_FALSE$ac_delim
+LTALLOCA!$LTALLOCA$ac_delim
+ALLOCA!$ALLOCA$ac_delim
+_ACEOF
+
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
+ break
+ elif $ac_last_try; then
+ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+ { (exit 1); exit 1; }; }
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+
+ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
+if test -n "$ac_eof"; then
+ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
+ ac_eof=`expr $ac_eof + 1`
+fi
+
+cat >>$CONFIG_STATUS <<_ACEOF
+cat >"\$tmp/subs-1.sed" <<\CEOF$ac_eof
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+_ACEOF
+sed '
+s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
+s/^/s,@/; s/!/@,|#_!!_#|/
+:n
+t n
+s/'"$ac_delim"'$/,g/; t
+s/$/\\/; p
+N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
+' >>$CONFIG_STATUS <conf$$subs.sed
+rm -f conf$$subs.sed
+cat >>$CONFIG_STATUS <<_ACEOF
+CEOF$ac_eof
+_ACEOF
+
+
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ cat >conf$$subs.sed <<_ACEOF
+ALLOCA_H!$ALLOCA_H$ac_delim
+GETOPT_H!$GETOPT_H$ac_delim
+LIBINTL!$LIBINTL$ac_delim
+LTLIBINTL!$LTLIBINTL$ac_delim
+HAVE_LONG_LONG_INT!$HAVE_LONG_LONG_INT$ac_delim
+HAVE_UNSIGNED_LONG_LONG_INT!$HAVE_UNSIGNED_LONG_LONG_INT$ac_delim
+HAVE_INTTYPES_H!$HAVE_INTTYPES_H$ac_delim
+HAVE_SYS_TYPES_H!$HAVE_SYS_TYPES_H$ac_delim
+ABSOLUTE_STDINT_H!$ABSOLUTE_STDINT_H$ac_delim
+HAVE_STDINT_H!$HAVE_STDINT_H$ac_delim
+HAVE_SYS_INTTYPES_H!$HAVE_SYS_INTTYPES_H$ac_delim
+HAVE_SYS_BITYPES_H!$HAVE_SYS_BITYPES_H$ac_delim
+BITSIZEOF_PTRDIFF_T!$BITSIZEOF_PTRDIFF_T$ac_delim
+BITSIZEOF_SIG_ATOMIC_T!$BITSIZEOF_SIG_ATOMIC_T$ac_delim
+BITSIZEOF_SIZE_T!$BITSIZEOF_SIZE_T$ac_delim
+BITSIZEOF_WCHAR_T!$BITSIZEOF_WCHAR_T$ac_delim
+BITSIZEOF_WINT_T!$BITSIZEOF_WINT_T$ac_delim
+HAVE_SIGNED_SIG_ATOMIC_T!$HAVE_SIGNED_SIG_ATOMIC_T$ac_delim
+HAVE_SIGNED_WCHAR_T!$HAVE_SIGNED_WCHAR_T$ac_delim
+HAVE_SIGNED_WINT_T!$HAVE_SIGNED_WINT_T$ac_delim
+PTRDIFF_T_SUFFIX!$PTRDIFF_T_SUFFIX$ac_delim
+SIG_ATOMIC_T_SUFFIX!$SIG_ATOMIC_T_SUFFIX$ac_delim
+SIZE_T_SUFFIX!$SIZE_T_SUFFIX$ac_delim
+WCHAR_T_SUFFIX!$WCHAR_T_SUFFIX$ac_delim
+WINT_T_SUFFIX!$WINT_T_SUFFIX$ac_delim
+STDINT_H!$STDINT_H$ac_delim
+PRI_MACROS_BROKEN!$PRI_MACROS_BROKEN$ac_delim
+GNULIB_IMAXABS!$GNULIB_IMAXABS$ac_delim
+GNULIB_IMAXDIV!$GNULIB_IMAXDIV$ac_delim
+GNULIB_STRTOIMAX!$GNULIB_STRTOIMAX$ac_delim
+GNULIB_STRTOUMAX!$GNULIB_STRTOUMAX$ac_delim
+HAVE_DECL_IMAXABS!$HAVE_DECL_IMAXABS$ac_delim
+HAVE_DECL_IMAXDIV!$HAVE_DECL_IMAXDIV$ac_delim
+HAVE_DECL_STRTOIMAX!$HAVE_DECL_STRTOIMAX$ac_delim
+HAVE_DECL_STRTOUMAX!$HAVE_DECL_STRTOUMAX$ac_delim
+ABSOLUTE_INTTYPES_H!$ABSOLUTE_INTTYPES_H$ac_delim
+PRIPTR_PREFIX!$PRIPTR_PREFIX$ac_delim
+INTTYPES_H!$INTTYPES_H$ac_delim
+GLIBC21!$GLIBC21$ac_delim
+STDBOOL_H!$STDBOOL_H$ac_delim
+HAVE__BOOL!$HAVE__BOOL$ac_delim
+GNULIB_GETSUBOPT!$GNULIB_GETSUBOPT$ac_delim
+GNULIB_MKDTEMP!$GNULIB_MKDTEMP$ac_delim
+GNULIB_MKSTEMP!$GNULIB_MKSTEMP$ac_delim
+HAVE_GETSUBOPT!$HAVE_GETSUBOPT$ac_delim
+HAVE_MKDTEMP!$HAVE_MKDTEMP$ac_delim
+REPLACE_MKSTEMP!$REPLACE_MKSTEMP$ac_delim
+ABSOLUTE_STDLIB_H!$ABSOLUTE_STDLIB_H$ac_delim
+GNULIB_MEMMEM!$GNULIB_MEMMEM$ac_delim
+GNULIB_MEMPCPY!$GNULIB_MEMPCPY$ac_delim
+GNULIB_MEMRCHR!$GNULIB_MEMRCHR$ac_delim
+GNULIB_STPCPY!$GNULIB_STPCPY$ac_delim
+GNULIB_STPNCPY!$GNULIB_STPNCPY$ac_delim
+GNULIB_STRCHRNUL!$GNULIB_STRCHRNUL$ac_delim
+GNULIB_STRDUP!$GNULIB_STRDUP$ac_delim
+GNULIB_STRNDUP!$GNULIB_STRNDUP$ac_delim
+GNULIB_STRNLEN!$GNULIB_STRNLEN$ac_delim
+GNULIB_STRPBRK!$GNULIB_STRPBRK$ac_delim
+GNULIB_STRSEP!$GNULIB_STRSEP$ac_delim
+GNULIB_STRCASESTR!$GNULIB_STRCASESTR$ac_delim
+GNULIB_STRTOK_R!$GNULIB_STRTOK_R$ac_delim
+GNULIB_MBSLEN!$GNULIB_MBSLEN$ac_delim
+GNULIB_MBSCHR!$GNULIB_MBSCHR$ac_delim
+GNULIB_MBSRCHR!$GNULIB_MBSRCHR$ac_delim
+GNULIB_MBSSTR!$GNULIB_MBSSTR$ac_delim
+GNULIB_MBSCASECMP!$GNULIB_MBSCASECMP$ac_delim
+GNULIB_MBSNCASECMP!$GNULIB_MBSNCASECMP$ac_delim
+GNULIB_MBSPCASECMP!$GNULIB_MBSPCASECMP$ac_delim
+GNULIB_MBSCASESTR!$GNULIB_MBSCASESTR$ac_delim
+GNULIB_MBSCSPN!$GNULIB_MBSCSPN$ac_delim
+GNULIB_MBSPBRK!$GNULIB_MBSPBRK$ac_delim
+GNULIB_MBSSPN!$GNULIB_MBSSPN$ac_delim
+GNULIB_MBSSEP!$GNULIB_MBSSEP$ac_delim
+GNULIB_MBSTOK_R!$GNULIB_MBSTOK_R$ac_delim
+HAVE_DECL_MEMMEM!$HAVE_DECL_MEMMEM$ac_delim
+HAVE_MEMPCPY!$HAVE_MEMPCPY$ac_delim
+HAVE_DECL_MEMRCHR!$HAVE_DECL_MEMRCHR$ac_delim
+HAVE_STPCPY!$HAVE_STPCPY$ac_delim
+HAVE_STPNCPY!$HAVE_STPNCPY$ac_delim
+HAVE_STRCASECMP!$HAVE_STRCASECMP$ac_delim
+HAVE_DECL_STRNCASECMP!$HAVE_DECL_STRNCASECMP$ac_delim
+HAVE_STRCHRNUL!$HAVE_STRCHRNUL$ac_delim
+HAVE_DECL_STRDUP!$HAVE_DECL_STRDUP$ac_delim
+HAVE_STRNDUP!$HAVE_STRNDUP$ac_delim
+HAVE_DECL_STRNDUP!$HAVE_DECL_STRNDUP$ac_delim
+HAVE_DECL_STRNLEN!$HAVE_DECL_STRNLEN$ac_delim
+HAVE_STRPBRK!$HAVE_STRPBRK$ac_delim
+HAVE_STRSEP!$HAVE_STRSEP$ac_delim
+HAVE_STRCASESTR!$HAVE_STRCASESTR$ac_delim
+HAVE_DECL_STRTOK_R!$HAVE_DECL_STRTOK_R$ac_delim
+ABSOLUTE_STRING_H!$ABSOLUTE_STRING_H$ac_delim
+POW_LIB!$POW_LIB$ac_delim
+GNULIB_CHOWN!$GNULIB_CHOWN$ac_delim
+GNULIB_DUP2!$GNULIB_DUP2$ac_delim
+GNULIB_FCHDIR!$GNULIB_FCHDIR$ac_delim
+GNULIB_FTRUNCATE!$GNULIB_FTRUNCATE$ac_delim
+GNULIB_GETCWD!$GNULIB_GETCWD$ac_delim
+_ACEOF
+
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
+ break
+ elif $ac_last_try; then
+ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+ { (exit 1); exit 1; }; }
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+
+ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
+if test -n "$ac_eof"; then
+ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
+ ac_eof=`expr $ac_eof + 1`
+fi
+
+cat >>$CONFIG_STATUS <<_ACEOF
+cat >"\$tmp/subs-2.sed" <<\CEOF$ac_eof
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+_ACEOF
+sed '
+s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
+s/^/s,@/; s/!/@,|#_!!_#|/
+:n
+t n
+s/'"$ac_delim"'$/,g/; t
+s/$/\\/; p
+N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
+' >>$CONFIG_STATUS <conf$$subs.sed
+rm -f conf$$subs.sed
+cat >>$CONFIG_STATUS <<_ACEOF
+CEOF$ac_eof
+_ACEOF
+
+
+ac_delim='%!_!# '
+for ac_last_try in false false false false false :; do
+ cat >conf$$subs.sed <<_ACEOF
+GNULIB_GETLOGIN_R!$GNULIB_GETLOGIN_R$ac_delim
+GNULIB_READLINK!$GNULIB_READLINK$ac_delim
+GNULIB_SLEEP!$GNULIB_SLEEP$ac_delim
+HAVE_DUP2!$HAVE_DUP2$ac_delim
+HAVE_FTRUNCATE!$HAVE_FTRUNCATE$ac_delim
+HAVE_READLINK!$HAVE_READLINK$ac_delim
+HAVE_SLEEP!$HAVE_SLEEP$ac_delim
+HAVE_DECL_GETLOGIN_R!$HAVE_DECL_GETLOGIN_R$ac_delim
+REPLACE_CHOWN!$REPLACE_CHOWN$ac_delim
+REPLACE_FCHDIR!$REPLACE_FCHDIR$ac_delim
+REPLACE_GETCWD!$REPLACE_GETCWD$ac_delim
+HAVE_UNISTD_H!$HAVE_UNISTD_H$ac_delim
+ABSOLUTE_UNISTD_H!$ABSOLUTE_UNISTD_H$ac_delim
+ABSOLUTE_WCHAR_H!$ABSOLUTE_WCHAR_H$ac_delim
+WCHAR_H!$WCHAR_H$ac_delim
+HAVE_ISWCNTRL!$HAVE_ISWCNTRL$ac_delim
+HAVE_WINT_T!$HAVE_WINT_T$ac_delim
+ABSOLUTE_WCTYPE_H!$ABSOLUTE_WCTYPE_H$ac_delim
+HAVE_WCTYPE_H!$HAVE_WCTYPE_H$ac_delim
+WCTYPE_H!$WCTYPE_H$ac_delim
+SED!$SED$ac_delim
+LN_S!$LN_S$ac_delim
+ECHO!$ECHO$ac_delim
+AR!$AR$ac_delim
+CXX!$CXX$ac_delim
+CXXFLAGS!$CXXFLAGS$ac_delim
+ac_ct_CXX!$ac_ct_CXX$ac_delim
+CXXDEPMODE!$CXXDEPMODE$ac_delim
+am__fastdepCXX_TRUE!$am__fastdepCXX_TRUE$ac_delim
+am__fastdepCXX_FALSE!$am__fastdepCXX_FALSE$ac_delim
+CXXCPP!$CXXCPP$ac_delim
+F77!$F77$ac_delim
+FFLAGS!$FFLAGS$ac_delim
+ac_ct_F77!$ac_ct_F77$ac_delim
+LIBTOOL!$LIBTOOL$ac_delim
+USE_NLS!$USE_NLS$ac_delim
+MSGFMT!$MSGFMT$ac_delim
+GMSGFMT!$GMSGFMT$ac_delim
+MSGFMT_015!$MSGFMT_015$ac_delim
+GMSGFMT_015!$GMSGFMT_015$ac_delim
+XGETTEXT!$XGETTEXT$ac_delim
+XGETTEXT_015!$XGETTEXT_015$ac_delim
+MSGMERGE!$MSGMERGE$ac_delim
+INTL_MACOSX_LIBS!$INTL_MACOSX_LIBS$ac_delim
+LIBICONV!$LIBICONV$ac_delim
+LTLIBICONV!$LTLIBICONV$ac_delim
+INTLLIBS!$INTLLIBS$ac_delim
+POSUB!$POSUB$ac_delim
+DL_LIBS!$DL_LIBS$ac_delim
+UUID_LIBS!$UUID_LIBS$ac_delim
+DM_LIBS!$DM_LIBS$ac_delim
+SELINUX_LIBS!$SELINUX_LIBS$ac_delim
+REISER_LIBS!$REISER_LIBS$ac_delim
+PARTED_LIBS!$PARTED_LIBS$ac_delim
+OS_LIBS!$OS_LIBS$ac_delim
+INTLINCS!$INTLINCS$ac_delim
+COMPILE_FOR_S390_TRUE!$COMPILE_FOR_S390_TRUE$ac_delim
+COMPILE_FOR_S390_FALSE!$COMPILE_FOR_S390_FALSE$ac_delim
+PKG_CONFIG!$PKG_CONFIG$ac_delim
+CHECK_CFLAGS!$CHECK_CFLAGS$ac_delim
+CHECK_LIBS!$CHECK_LIBS$ac_delim
+HAVE_CHECK_TRUE!$HAVE_CHECK_TRUE$ac_delim
+HAVE_CHECK_FALSE!$HAVE_CHECK_FALSE$ac_delim
+BUILDINFO!$BUILDINFO$ac_delim
+LIBOBJS!$LIBOBJS$ac_delim
+LTLIBOBJS!$LTLIBOBJS$ac_delim
+gl_LIBOBJS!$gl_LIBOBJS$ac_delim
+gl_LTLIBOBJS!$gl_LTLIBOBJS$ac_delim
+_ACEOF
+
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 68; then
+ break
+ elif $ac_last_try; then
+ { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
+echo "$as_me: error: could not make $CONFIG_STATUS" >&2;}
+ { (exit 1); exit 1; }; }
+ else
+ ac_delim="$ac_delim!$ac_delim _$ac_delim!! "
+ fi
+done
+
+ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed`
+if test -n "$ac_eof"; then
+ ac_eof=`echo "$ac_eof" | sort -nru | sed 1q`
+ ac_eof=`expr $ac_eof + 1`
+fi
+
+cat >>$CONFIG_STATUS <<_ACEOF
+cat >"\$tmp/subs-3.sed" <<\CEOF$ac_eof
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b end
+_ACEOF
+sed '
+s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g
+s/^/s,@/; s/!/@,|#_!!_#|/
+:n
+t n
+s/'"$ac_delim"'$/,g/; t
+s/$/\\/; p
+N; s/^.*\n//; s/[,\\&]/\\&/g; s/@/@|#_!!_#|/g; b n
+' >>$CONFIG_STATUS <conf$$subs.sed
+rm -f conf$$subs.sed
+cat >>$CONFIG_STATUS <<_ACEOF
+:end
+s/|#_!!_#|//g
+CEOF$ac_eof
+_ACEOF
+
+
+# VPATH may cause trouble with some makes, so we remove $(srcdir),
+# ${srcdir} and @srcdir@ from VPATH if srcdir is ".", strip leading and
+# trailing colons and then remove the whole line if VPATH becomes empty
+# (actually we leave an empty line to preserve line numbers).
+if test "x$srcdir" = x.; then
+ ac_vpsub='/^[ ]*VPATH[ ]*=/{
+s/:*\$(srcdir):*/:/
+s/:*\${srcdir}:*/:/
+s/:*@srcdir@:*/:/
+s/^\([^=]*=[ ]*\):*/\1/
+s/:*$//
+s/^[^=]*=[ ]*$//
+}'
+fi
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+fi # test -n "$CONFIG_FILES"
+
+
+for ac_tag in :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
+echo "$as_me: error: Invalid tag $ac_tag." >&2;}
+ { (exit 1); exit 1; }; };;
+ :[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="$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 ||
+ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+ ac_file_inputs="$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 "`IFS=:
+ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+ fi
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$tmp/stdin";;
+ 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 ||
+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"
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`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 ||
+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" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ { (exit 1); exit 1; }; }; }
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`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
+# 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=
+
+case `sed -n '/datarootdir/ {
+ p
+ q
+}
+/@datadir@/p
+/@docdir@/p
+/@infodir@/p
+/@localedir@/p
+/@mandir@/p
+' $ac_file_inputs` in
+*datarootdir*) ac_datarootdir_seen=yes;;
+*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*)
+ { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5
+echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;}
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+ 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
+ sed "$ac_vpsub
+$extrasub
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+:t
+/@[a-zA-Z_][a-zA-Z_0-9]*@/!b
+s&@configure_input@&$configure_input&;t t
+s&@top_builddir@&$ac_top_builddir_sub&;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
+" $ac_file_inputs | sed -f "$tmp/subs-1.sed" | sed -f "$tmp/subs-2.sed" | sed -f "$tmp/subs-3.sed" >$tmp/out
+
+test -z "$ac_datarootdir_hack$ac_datarootdir_seen" &&
+ { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } &&
+ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } &&
+ { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir'
+which seems to be undefined. Please make sure it is defined." >&5
+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 "$tmp/stdin"
+ case $ac_file in
+ -) cat "$tmp/out"; rm -f "$tmp/out";;
+ *) rm -f "$ac_file"; mv "$tmp/out" $ac_file;;
+ esac
+ ;;
+ :H)
+ #
+ # CONFIG_HEADER
+ #
+_ACEOF
+
+# Transform confdefs.h into a sed script `conftest.defines', that
+# substitutes the proper values into config.h.in to produce config.h.
+rm -f conftest.defines conftest.tail
+# First, append a space to every undef/define line, to ease matching.
+echo 's/$/ /' >conftest.defines
+# Then, protect against being on the right side of a sed subst, or in
+# an unquoted here document, in config.status. If some macros were
+# called several times there might be several #defines for the same
+# symbol, which is useless. But do not sort them, since the last
+# AC_DEFINE must be honored.
+ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]*
+# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where
+# NAME is the cpp macro being defined, VALUE is the value it is being given.
+# PARAMS is the parameter list in the macro definition--in most cases, it's
+# just an empty string.
+ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*'
+ac_dB='\\)[ (].*,\\1define\\2'
+ac_dC=' '
+ac_dD=' ,'
+
+uniq confdefs.h |
+ sed -n '
+ t rset
+ :rset
+ s/^[ ]*#[ ]*define[ ][ ]*//
+ t ok
+ d
+ :ok
+ s/[\\&,]/\\&/g
+ s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p
+ s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p
+ ' >>conftest.defines
+
+# Remove the space that was appended to ease matching.
+# Then 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.
+# (The regexp can be short, since the line contains either #define or #undef.)
+echo 's/ $//
+s,^[ #]*u.*,/* & */,' >>conftest.defines
+
+# Break up conftest.defines:
+ac_max_sed_lines=50
+
+# First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1"
+# Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2"
+# Third one will be: sed -f defines.sed "$tmp/out2" >"$tmp/out1"
+# et cetera.
+ac_in='$ac_file_inputs'
+ac_out='"$tmp/out1"'
+ac_nxt='"$tmp/out2"'
+
+while :
+do
+ # Write a here document:
+ cat >>$CONFIG_STATUS <<_ACEOF
+ # First, check the format of the line:
+ cat >"\$tmp/defines.sed" <<\\CEOF
+/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def
+/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def
+b
+:def
+_ACEOF
+ sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS
+ echo 'CEOF
+ sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS
+ ac_in=$ac_out; ac_out=$ac_nxt; ac_nxt=$ac_in
+ sed 1,${ac_max_sed_lines}d conftest.defines >conftest.tail
+ grep . conftest.tail >/dev/null || break
+ rm -f conftest.defines
+ mv conftest.tail conftest.defines
+done
+rm -f conftest.defines conftest.tail
+
+echo "ac_result=$ac_in" >>$CONFIG_STATUS
+cat >>$CONFIG_STATUS <<\_ACEOF
+ if test x"$ac_file" != x-; then
+ echo "/* $configure_input */" >"$tmp/config.h"
+ cat "$ac_result" >>"$tmp/config.h"
+ if diff $ac_file "$tmp/config.h" >/dev/null 2>&1; then
+ { echo "$as_me:$LINENO: $ac_file is unchanged" >&5
+echo "$as_me: $ac_file is unchanged" >&6;}
+ else
+ rm -f $ac_file
+ mv "$tmp/config.h" $ac_file
+ fi
+ else
+ echo "/* $configure_input */"
+ cat "$ac_result"
+ fi
+ rm -f "$tmp/out12"
+# Compute $ac_file's index in $config_headers.
+_am_stamp_count=1
+for _am_header in $config_headers :; do
+ case $_am_header in
+ $ac_file | $ac_file:* )
+ break ;;
+ * )
+ _am_stamp_count=`expr $_am_stamp_count + 1` ;;
+ esac
+done
+echo "timestamp for $ac_file" >`$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 ||
+echo X$ac_file |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`/stamp-h$_am_stamp_count
+ ;;
+
+ :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5
+echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "depfiles":C) test x"$AMDEP_TRUE" != x"" || for mf in $CONFIG_FILES; 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 10q "$mf" | grep '^#.*generated by automake' > /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 ||
+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 ||
+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
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`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 ||
+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" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ { (exit 1); exit 1; }; }; }
+ # echo "creating $dirpart/$file"
+ echo '# dummy' > "$dirpart/$file"
+ done
+done
+ ;;
+ "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
+
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || { (exit 1); exit 1; }
+fi
+
+
+echo
+echo Type \'make\' to compile parted.
diff --git a/parted-1.8.7/configure.ac b/parted-1.8.7/configure.ac
new file mode 100644
index 0000000..bc08cc5
--- /dev/null
+++ b/parted-1.8.7/configure.ac
@@ -0,0 +1,525 @@
+dnl GNU Parted - a library and front end for manipulation hard disk partitions
+dnl Copyright (C) 1998, 1999, 2000, 2001, 2002, 2005, 2006, 2007
+dnl Free Software Foundation, Inc.
+dnl
+dnl This file may be modified and/or distributed without restriction.
+
+AC_PREREQ(2.61)
+AC_INIT([GNU parted],[1.8.7],[bug-parted@gnu.org])
+
+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.
+PED_MAJOR_VERSION=1
+PED_MINOR_VERSION=8
+PED_MICRO_VERSION=7
+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)
+
+# Ensure that the PED_*-specified version is the same as the literal
+# in the AC_INIT line, above.
+test $PACKAGE_VERSION = $PED_VERSION ||
+ AC_MSG_ERROR(configure.ac: version mismatch: $PACKAGE_VERSION != $PED_VERSION)
+
+AM_INIT_AUTOMAKE([1.10 dist-bzip2])
+
+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_ARG_ENABLE(device-mapper,
+ [ --enable-device-mapper enable device mapper support [default=no]], ,
+ enable_device_mapper=no
+)
+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 -a "$enable_dynamic_loading" = yes; then
+ AC_MSG_ERROR(
+[You can't use --enable-dynamic-loading and --disable-discover-only together]
+ )
+fi
+
+AC_ARG_ENABLE(fs,
+ [ --enable-fs include filesystem support [default=yes]], ,
+ enable_fs=yes
+)
+if test "$enable_fs" = yes; then
+ AC_DEFINE(ENABLE_FS, 1,
+ [Include file system support. i.e. libparted/fs_...])
+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(Werror,
+ [ --enable-Werror build with gcc -Werror [default=yes]], ,
+ enable_Werror=yes
+)
+
+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
+
+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_CHECK_SIZEOF(off_t, 64, [
+ #include <stdio.h>
+ #include <sys/types.h>
+ #include <unistd.h>
+])
+
+AM_ENABLE_SHARED
+if test "$OS" = linux -a $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.15])
+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
+)
+ exit
+fi
+
+dnl Check for libdl, if we are doing dynamic loading
+DL_LIBS=""
+if test "$enable_dynamic_loading" = yes; then
+ AC_CHECK_LIB(dl, dlopen,
+ DL_LIBS="-ldl"
+ PARTED_LIBS="$PARTED_LIBS -ldl"
+ AC_DEFINE(DYNAMIC_LOADING, 1, [Lazy linking to fs libs]),
+ AC_MSG_ERROR(
+ [-ldl not found! Try using --disable-dynamic-loading]
+ )
+ exit
+ )
+fi
+AC_SUBST(DL_LIBS)
+
+dnl Check for libuuid
+UUID_LIBS=""
+AC_CHECK_LIB(uuid, uuid_generate, UUID_LIBS="-luuid",
+ AC_MSG_ERROR(
+GNU Parted requires libuuid - a part of the e2fsprogs package (but
+sometimes distributed separately in uuid-devel or similar)
+This can probably be found on your distribution's CD or FTP site or at:
+ http://web.mit.edu/tytso/www/linux/e2fsprogs.html
+Note: if you are using precompiled packages you will also need the development
+package as well (which may be called e2fsprogs-devel or something similar).
+If you compile e2fsprogs yourself then you need to do 'make install' and
+'make install-libs'.
+ )
+ exit
+)
+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(
+ [libdevmapper not found! Try using --disable-device-mapper]
+ )
+ exit
+ )
+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 -a "$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(
+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.
+)
+ exit
+ )
+ 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"
+ AC_CHECK_LIB(readline, readline,
+ PARTED_LIBS="-lreadline $PARTED_LIBS"
+ AC_DEFINE(HAVE_LIBREADLINE, 1, [have readline]),
+ 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).
+)
+ exit,
+ $PARTED_LIBS
+ )
+ 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.
+ )
+ exit
+ )
+
+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.
+ )
+ exit,
+ $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
+)
+ exit
+)
+
+AC_CHECK_HEADERS(getopt.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
+)
+ exit
+ )
+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
+)
+ exit
+ )
+fi
+
+AC_CHECK_HEADER([execinfo.h], [
+ AC_CHECK_LIB(c, backtrace, [
+ AC_DEFINE(HAVE_BACKTRACE, 1, [Has backtrace support])
+ LDFLAGS="$LDFLAGS -rdynamic"
+ ])
+])
+
+dnl Checks for #defines.
+AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([[
+ #if defined __s390__ || defined __s390x__
+ # message s390 defined
+ #endif
+ ]])], [compile_for_s390="no"], [compile_for_s390="yes"])
+AM_CONDITIONAL([COMPILE_FOR_S390], [test "$compile_for_s390" = "yes"])
+
+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_scintilla" != "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)
+
+# CFLAGS="$CFLAGS -W -Wall -Wno-unused -Wno-switch -Wno-format"
+
+if test "$enable_Werror" = yes; then
+ CFLAGS="$CFLAGS -Werror"
+fi
+
+DATE=$(date '+%d %b %Y %H:%M')
+USER=$(whoami)
+HOST=$(hostname)
+BUILDINFO="$USER@$HOST, $DATE"
+AC_SUBST(BUILDINFO)
+
+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/tests/Makefile
+libparted.pc
+parted/Makefile
+partprobe/Makefile
+doc/Makefile
+doc/C/Makefile
+doc/pt_BR/Makefile
+debug/Makefile
+debug/clearfat/Makefile
+debug/test/Makefile
+tests/Makefile
+po/Makefile.in
+])
+
+echo
+echo Type \'make\' to compile parted.
diff --git a/parted-1.8.7/debug/Makefile.am b/parted-1.8.7/debug/Makefile.am
new file mode 100644
index 0000000..5a1e452
--- /dev/null
+++ b/parted-1.8.7/debug/Makefile.am
@@ -0,0 +1,3 @@
+SUBDIRS = clearfat test
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/parted-1.8.7/debug/Makefile.in b/parted-1.8.7/debug/Makefile.in
new file mode 100644
index 0000000..6222880
--- /dev/null
+++ b/parted-1.8.7/debug/Makefile.in
@@ -0,0 +1,671 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+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
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = clearfat test
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu debug/Makefile'; \
+ 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
+
+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):
+ @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; \
+ (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):
+ @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; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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 || \
+ tags="$$tags $$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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ 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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+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) install-am \
+ install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic clean-libtool \
+ 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/parted-1.8.7/debug/clearfat/Makefile.am b/parted-1.8.7/debug/clearfat/Makefile.am
new file mode 100644
index 0000000..7409f45
--- /dev/null
+++ b/parted-1.8.7/debug/clearfat/Makefile.am
@@ -0,0 +1,15 @@
+noinst_PROGRAMS = clearfat
+
+clearfat_SOURCES = clearfat.c
+
+clearfat_LDADD = \
+ $(top_builddir)/lib/libparted.la \
+ $(top_builddir)/libparted/libparted.la \
+ $(INTLLIBS) $(LIBS) \
+ $(PARTED_LIBS)
+
+partedincludedir = -I$(top_srcdir)/lib -I$(top_srcdir)/include
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/parted-1.8.7/debug/clearfat/Makefile.in b/parted-1.8.7/debug/clearfat/Makefile.in
new file mode 100644
index 0000000..1c84c38
--- /dev/null
+++ b/parted-1.8.7/debug/clearfat/Makefile.in
@@ -0,0 +1,632 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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@
+noinst_PROGRAMS = clearfat$(EXEEXT)
+subdir = debug/clearfat
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+PROGRAMS = $(noinst_PROGRAMS)
+am_clearfat_OBJECTS = clearfat.$(OBJEXT)
+clearfat_OBJECTS = $(am_clearfat_OBJECTS)
+am__DEPENDENCIES_1 =
+clearfat_DEPENDENCIES = $(top_builddir)/lib/libparted.la \
+ $(top_builddir)/libparted/libparted.la $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)/lib@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(clearfat_SOURCES)
+DIST_SOURCES = $(clearfat_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+clearfat_SOURCES = clearfat.c
+clearfat_LDADD = \
+ $(top_builddir)/lib/libparted.la \
+ $(top_builddir)/libparted/libparted.la \
+ $(INTLLIBS) $(LIBS) \
+ $(PARTED_LIBS)
+
+partedincludedir = -I$(top_srcdir)/lib -I$(top_srcdir)/include
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu debug/clearfat/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu debug/clearfat/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
+
+clean-noinstPROGRAMS:
+ @list='$(noinst_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+clearfat$(EXEEXT): $(clearfat_OBJECTS) $(clearfat_DEPENDENCIES)
+ @rm -f clearfat$(EXEEXT)
+ $(LINK) $(clearfat_OBJECTS) $(clearfat_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clearfat.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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:
+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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-noinstPROGRAMS \
+ 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
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+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
+
+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-noinstPROGRAMS 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/parted-1.8.7/debug/clearfat/clearfat.c b/parted-1.8.7/debug/clearfat/clearfat.c
new file mode 100644
index 0000000..dd98024
--- /dev/null
+++ b/parted-1.8.7/debug/clearfat/clearfat.c
@@ -0,0 +1,346 @@
+/*
+ clear_fat - a tool to clear unused space (for testing purposes)
+ Copyright (C) 2000, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#include <config.h>
+
+#include <string.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <getopt.h>
+#include "closeout.h"
+#include "configmake.h"
+#include "error.h"
+#include "long-options.h"
+
+#include "../../libparted/fs/fat/fat.h"
+
+#include <locale.h>
+
+/* Take care of NLS matters. */
+
+#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)
+
+#ifndef DISCOVER_ONLY
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "clearfat"
+
+#define AUTHORS \
+ "<http://parted.alioth.debian.org/cgi-bin/trac.cgi/browser/AUTHORS>"
+
+/* The name this program was run with. */
+char *program_name;
+
+void
+usage (int status)
+{
+ if (status != EXIT_SUCCESS)
+ fprintf (stderr, _("Try `%s --help' for more information.\n"),
+ program_name);
+ else
+ {
+ printf (_("\
+Usage: %s [OPTION]\n\
+ or: %s DEVICE MINOR\n"), PROGRAM_NAME, PROGRAM_NAME);
+ fputs (_("\
+Clear unused space on a FAT partition (a GNU Parted testing tool).\n\
+\n\
+"), stdout);
+ fputs (_(" --help display this help and exit\n"), stdout);
+ fputs (_(" --version output version information and exit\n"),
+ stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+#define CLEAR_BUFFER_SIZE (1024 * 1024)
+#define CLEAR_BUFFER_SECTORS (CLEAR_BUFFER_SIZE/512)
+
+static char buffer [CLEAR_BUFFER_SIZE];
+
+/* generic clearing code ***************************************************/
+
+static int
+_clear_sectors (PedGeometry* geom, PedSector start, PedSector count)
+{
+ PedSector pos;
+ PedSector to_go = count;
+
+ for (pos = start;
+ pos < start + count;
+ pos += CLEAR_BUFFER_SECTORS, to_go -= CLEAR_BUFFER_SECTORS) {
+ if (!ped_geometry_write (geom, buffer, start,
+ PED_MIN (CLEAR_BUFFER_SECTORS, to_go)))
+ return 0;
+ }
+
+ return 1;
+}
+
+static int
+_clear_sector_range (PedGeometry* geom, PedSector start, PedSector end)
+{
+ return _clear_sectors (geom, start, end - start + 1);
+}
+
+static int
+_clear_sector (PedGeometry* geom, PedSector sector)
+{
+ return _clear_sectors (geom, sector, 1);
+}
+
+static int
+_clear_partial_sector (PedGeometry* geom, PedSector sector,
+ int offset, int count)
+{
+ if (!ped_geometry_read (geom, buffer, sector, 1))
+ goto error;
+ memset (buffer + offset, 0, count);
+ if (!ped_geometry_write (geom, buffer, sector, 1))
+ goto error;
+
+ memset (buffer, 0, 512);
+ return 1;
+
+error:
+ memset (buffer, 0, 512);
+ return 0;
+}
+
+static int
+_clear_partial_range (PedGeometry* geom, PedSector sector, int start, int end)
+{
+ return _clear_partial_sector (geom, sector, start, end - start + 1);
+}
+
+static int
+_clear_clusters (PedFileSystem* fs, FatCluster start, FatCluster count)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ return _clear_sectors (fs->geom, fat_cluster_to_sector(fs, start),
+ count * fs_info->cluster_sectors);
+}
+
+/* FAT code ******************************************************************/
+
+static void
+_clear_before_fat (PedFileSystem* fs)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ PedSector sector;
+
+ for (sector = 1; sector < fs_info->fat_offset; sector++) {
+ if (sector == fs_info->info_sector_offset)
+ continue;
+ if (sector == fs_info->boot_sector_backup_offset)
+ continue;
+ _clear_sector (fs->geom, sector);
+ }
+}
+
+static int
+_calc_fat_entry_offset (PedFileSystem* fs, FatCluster cluster)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+
+ switch (fs_info->fat_type) {
+ case FAT_TYPE_FAT12:
+ PED_ASSERT (0, (void) 0);
+ break;
+
+ case FAT_TYPE_FAT16:
+ return cluster * 2;
+
+ case FAT_TYPE_FAT32:
+ return cluster * 4;
+ }
+ return 0;
+}
+
+static void
+_clear_unused_fats (PedFileSystem* fs)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ PedSector table_start;
+ int table_num;
+ int last_active_offset;
+ PedSector last_active_sector;
+ int last_active_sector_offset;
+
+ last_active_offset
+ = _calc_fat_entry_offset (fs, fs_info->fat->cluster_count);
+ last_active_sector = last_active_offset / 512;
+ last_active_sector_offset = last_active_offset % 512 + 4;
+
+ for (table_num = 0; table_num < fs_info->fat_table_count; table_num++) {
+ table_start = fs_info->fat_offset
+ + table_num * fs_info->fat_sectors;
+
+ if (last_active_sector_offset < 512) {
+ _clear_partial_range (
+ fs->geom,
+ table_start + last_active_sector,
+ last_active_sector_offset,
+ 512);
+ }
+
+ if (last_active_sector < fs_info->fat_sectors - 2) {
+ _clear_sector_range (
+ fs->geom,
+ table_start + last_active_sector + 1,
+ table_start + fs_info->fat_sectors - 1);
+ }
+ }
+}
+
+static int
+_clear_unused_clusters (PedFileSystem* fs)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ FatCluster cluster;
+ FatCluster run_start = 0; /* shut gcc up! */
+ FatCluster run_length = 0;
+
+ for (cluster = 2; cluster < fs_info->cluster_count + 2; cluster++) {
+ if (fat_table_is_available (fs_info->fat, cluster)) {
+ if (!run_length) {
+ run_start = cluster;
+ run_length = 1;
+ } else {
+ run_length++;
+ }
+ } else {
+ if (run_length)
+ _clear_clusters (fs, run_start, run_length);
+ run_length = 0;
+ }
+ }
+
+ if (run_length)
+ _clear_clusters (fs, run_start, run_length);
+
+ return 1;
+}
+
+static void
+_clear_unused_fat (PedFileSystem* fs)
+{
+ memset (buffer, 0, CLEAR_BUFFER_SIZE);
+
+ _clear_before_fat (fs);
+ _clear_unused_fats (fs);
+ _clear_unused_clusters (fs);
+}
+
+/* bureaucracy ***************************************************************/
+
+int
+main (int argc, char* argv[])
+{
+ PedDevice* dev;
+ PedDisk* disk;
+ PedPartition* part;
+ PedFileSystem* fs;
+
+ program_name = argv[0];
+ setlocale (LC_ALL, "");
+ bindtextdomain (PACKAGE, LOCALEDIR);
+ textdomain (PACKAGE);
+
+ atexit (close_stdout);
+
+ parse_long_options (argc, argv, PROGRAM_NAME, PACKAGE, VERSION,
+ usage, AUTHORS, (char const *) NULL);
+ if (getopt_long (argc, argv, "", NULL, NULL) != -1)
+ usage (EXIT_FAILURE);
+
+ if (argc - optind < 2)
+ {
+ error (0, 0, _("too few arguments"));
+ usage (EXIT_FAILURE);
+ }
+ if (2 < argc - optind)
+ {
+ error (0, 0, _("too many arguments"));
+ usage (EXIT_FAILURE);
+ }
+
+ dev = ped_device_get (argv [1]);
+ if (!dev)
+ goto error;
+ if (!ped_device_open (dev))
+ goto error;
+
+ disk = ped_disk_new (dev);
+ if (!disk)
+ goto error_close_dev;
+
+ part = ped_disk_get_partition (disk, atoi (argv[2]));
+ if (!part) {
+ printf ("Couldn't find partition `%s'\n", argv[2]);
+ goto error_destroy_disk;
+ }
+
+ fs = ped_file_system_open (&part->geom);
+ if (!fs)
+ goto error_destroy_disk;
+
+ if (strncmp (fs->type->name, "fat", 3)) {
+ printf ("Not a FAT file system!\n");
+ goto error_close_fs;
+ }
+
+ _clear_unused_fat (fs);
+
+ ped_file_system_close (fs);
+ ped_disk_destroy (disk);
+ ped_device_close (dev);
+ return 0;
+
+error_close_fs:
+ ped_file_system_close (fs);
+error_destroy_disk:
+ ped_disk_destroy (disk);
+error_close_dev:
+ ped_device_close (dev);
+error:
+ return 1;
+}
+
+#else /* DISCOVER_ONLY */
+
+/* hack! */
+int
+main()
+{
+ printf ("You must compile libparted with full read/write support\n");
+ return 1;
+}
+
+#endif /* DISCOVER_ONLY */
diff --git a/parted-1.8.7/debug/test/HOWTO b/parted-1.8.7/debug/test/HOWTO
new file mode 100644
index 0000000..e43aa0d
--- /dev/null
+++ b/parted-1.8.7/debug/test/HOWTO
@@ -0,0 +1,241 @@
+==============================================================================
+ PARTED REGRESSION TEST HOWTO
+==============================================================================
+
+ by Andrew Clausen
+
+ Copyright (C) 2002 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/parted-1.8.7/debug/test/Makefile.am b/parted-1.8.7/debug/test/Makefile.am
new file mode 100644
index 0000000..ccb3e33
--- /dev/null
+++ b/parted-1.8.7/debug/test/Makefile.am
@@ -0,0 +1,19 @@
+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_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/parted-1.8.7/debug/test/Makefile.in b/parted-1.8.7/debug/test/Makefile.in
new file mode 100644
index 0000000..fdaeb85
--- /dev/null
+++ b/parted-1.8.7/debug/test/Makefile.in
@@ -0,0 +1,530 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+SCRIPTS = $(noinst_SCRIPTS)
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_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_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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu debug/test/Makefile'; \
+ 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
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+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
+
+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/parted-1.8.7/debug/test/build_leak_list b/parted-1.8.7/debug/test/build_leak_list
new file mode 100755
index 0000000..f217eff
--- /dev/null
+++ b/parted-1.8.7/debug/test/build_leak_list
@@ -0,0 +1,12 @@
+#! /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/parted-1.8.7/debug/test/test b/parted-1.8.7/debug/test/test
new file mode 100755
index 0000000..941d252
--- /dev/null
+++ b/parted-1.8.7/debug/test/test
@@ -0,0 +1,262 @@
+#! /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/parted-1.8.7/debug/test/test_disk_bsd b/parted-1.8.7/debug/test/test_disk_bsd
new file mode 100755
index 0000000..3bcf0f0
--- /dev/null
+++ b/parted-1.8.7/debug/test/test_disk_bsd
@@ -0,0 +1,94 @@
+#! /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/parted-1.8.7/debug/test/test_disk_dos b/parted-1.8.7/debug/test/test_disk_dos
new file mode 100755
index 0000000..08c5d7f
--- /dev/null
+++ b/parted-1.8.7/debug/test/test_disk_dos
@@ -0,0 +1,173 @@
+#! /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/parted-1.8.7/debug/test/test_disk_dvh b/parted-1.8.7/debug/test/test_disk_dvh
new file mode 100755
index 0000000..29caf1f
--- /dev/null
+++ b/parted-1.8.7/debug/test/test_disk_dvh
@@ -0,0 +1,94 @@
+#! /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/parted-1.8.7/debug/test/test_disk_gpt b/parted-1.8.7/debug/test/test_disk_gpt
new file mode 100755
index 0000000..8e86f79
--- /dev/null
+++ b/parted-1.8.7/debug/test/test_disk_gpt
@@ -0,0 +1,78 @@
+#! /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/parted-1.8.7/debug/test/test_disk_mac b/parted-1.8.7/debug/test/test_disk_mac
new file mode 100755
index 0000000..1d0e894
--- /dev/null
+++ b/parted-1.8.7/debug/test/test_disk_mac
@@ -0,0 +1,78 @@
+#! /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/parted-1.8.7/debug/test/test_disk_pc98 b/parted-1.8.7/debug/test/test_disk_pc98
new file mode 100755
index 0000000..748424e
--- /dev/null
+++ b/parted-1.8.7/debug/test/test_disk_pc98
@@ -0,0 +1,102 @@
+#! /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/parted-1.8.7/debug/test/test_disk_sun b/parted-1.8.7/debug/test/test_disk_sun
new file mode 100755
index 0000000..b9d7e29
--- /dev/null
+++ b/parted-1.8.7/debug/test/test_disk_sun
@@ -0,0 +1,94 @@
+#! /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/parted-1.8.7/debug/test/test_fs_ext2 b/parted-1.8.7/debug/test/test_fs_ext2
new file mode 100755
index 0000000..9bb9141
--- /dev/null
+++ b/parted-1.8.7/debug/test/test_fs_ext2
@@ -0,0 +1,98 @@
+#! /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/parted-1.8.7/debug/test/test_fs_fat b/parted-1.8.7/debug/test/test_fs_fat
new file mode 100755
index 0000000..7a51e4e
--- /dev/null
+++ b/parted-1.8.7/debug/test/test_fs_fat
@@ -0,0 +1,181 @@
+#! /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/parted-1.8.7/debug/test/test_fs_linux_swap b/parted-1.8.7/debug/test/test_fs_linux_swap
new file mode 100755
index 0000000..2fb3028
--- /dev/null
+++ b/parted-1.8.7/debug/test/test_fs_linux_swap
@@ -0,0 +1,69 @@
+#! /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/parted-1.8.7/debug/test/test_fs_reiserfs b/parted-1.8.7/debug/test/test_fs_reiserfs
new file mode 100755
index 0000000..69a1e60
--- /dev/null
+++ b/parted-1.8.7/debug/test/test_fs_reiserfs
@@ -0,0 +1,98 @@
+#! /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/parted-1.8.7/debug/test/testrc b/parted-1.8.7/debug/test/testrc
new file mode 100644
index 0000000..c4dff00
--- /dev/null
+++ b/parted-1.8.7/debug/test/testrc
@@ -0,0 +1,41 @@
+# 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/parted-1.8.7/doc/API b/parted-1.8.7/doc/API
new file mode 100644
index 0000000..00ee0f4
--- /dev/null
+++ b/parted-1.8.7/doc/API
@@ -0,0 +1,288 @@
+===============================================================================
+ 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.1
+ 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/parted-1.8.7/doc/C/Makefile.am b/parted-1.8.7/doc/C/Makefile.am
new file mode 100644
index 0000000..447eb74
--- /dev/null
+++ b/parted-1.8.7/doc/C/Makefile.am
@@ -0,0 +1,30 @@
+## Process this file with automake to produce Makefile.in
+
+dist_man_MANS = \
+ parted.8 \
+ partprobe.8
+
+man_MANS = $(dist_man_MANS)
+
+.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_man_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/parted-1.8.7/doc/C/Makefile.in b/parted-1.8.7/doc/C/Makefile.in
new file mode 100644
index 0000000..305fe1a
--- /dev/null
+++ b/parted-1.8.7/doc/C/Makefile.in
@@ -0,0 +1,596 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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_man_MANS) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+SOURCES =
+DIST_SOURCES =
+man8dir = $(mandir)/man8
+am__installdirs = "$(DESTDIR)$(man8dir)"
+NROFF = nroff
+MANS = $(dist_man_MANS) $(man_MANS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+dist_man_MANS = \
+ parted.8 \
+ partprobe.8
+
+man_MANS = $(dist_man_MANS)
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/C/Makefile'; \
+ 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
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+install-man8: $(man8_MANS) $(man_MANS)
+ @$(NORMAL_INSTALL)
+ test -z "$(man8dir)" || $(MKDIR_P) "$(DESTDIR)$(man8dir)"
+ @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
+ case "$$i" in \
+ *.8*) list="$$list $$i" ;; \
+ esac; \
+ done; \
+ for i in $$list; do \
+ if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \
+ else file=$$i; fi; \
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+ case "$$ext" in \
+ 8*) ;; \
+ *) ext='8' ;; \
+ esac; \
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man8dir)/$$inst'"; \
+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man8dir)/$$inst"; \
+ done
+uninstall-man8:
+ @$(NORMAL_UNINSTALL)
+ @list='$(man8_MANS) $(dist_man8_MANS) $(nodist_man8_MANS)'; \
+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \
+ for i in $$l2; do \
+ case "$$i" in \
+ *.8*) list="$$list $$i" ;; \
+ esac; \
+ done; \
+ for i in $$list; do \
+ ext=`echo $$i | sed -e 's/^.*\\.//'`; \
+ case "$$ext" in \
+ 8*) ;; \
+ *) ext='8' ;; \
+ esac; \
+ inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \
+ inst=`echo $$inst | sed -e 's/^.*\///'`; \
+ inst=`echo $$inst | sed '$(transform)'`.$$ext; \
+ echo " rm -f '$(DESTDIR)$(man8dir)/$$inst'"; \
+ rm -f "$(DESTDIR)$(man8dir)/$$inst"; \
+ done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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
+
+info: info-am
+
+info-am:
+
+install-data-am: install-man
+
+install-dvi: install-dvi-am
+
+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
+
+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_man_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/parted-1.8.7/doc/C/parted.8 b/parted-1.8.7/doc/C/parted.8
new file mode 100644
index 0000000..7040402
--- /dev/null
+++ b/parted-1.8.7/doc/C/parted.8
@@ -0,0 +1,139 @@
+.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, ext3, 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 -i, --interactive
+prompts for user intervention
+.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
+.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).
+.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",
+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 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/parted-1.8.7/doc/C/partprobe.8 b/parted-1.8.7/doc/C/partprobe.8
new file mode 100644
index 0000000..7385feb
--- /dev/null
+++ b/parted-1.8.7/doc/C/partprobe.8
@@ -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/parted-1.8.7/doc/FAT b/parted-1.8.7/doc/FAT
new file mode 100644
index 0000000..4752ca5
--- /dev/null
+++ b/parted-1.8.7/doc/FAT
@@ -0,0 +1,761 @@
+===============================================================================
+ 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.1
+ 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/parted-1.8.7/doc/Makefile.am b/parted-1.8.7/doc/Makefile.am
new file mode 100644
index 0000000..c2e35f5
--- /dev/null
+++ b/parted-1.8.7/doc/Makefile.am
@@ -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/parted-1.8.7/doc/Makefile.in b/parted-1.8.7/doc/Makefile.in
new file mode 100644
index 0000000..b34fa20
--- /dev/null
+++ b/parted-1.8.7/doc/Makefile.in
@@ -0,0 +1,956 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+SOURCES =
+DIST_SOURCES =
+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 = `echo $$p | sed -e 's|^.*/||'`;
+RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
+ distclean-recursive maintainer-clean-recursive
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = makeinfo --no-split
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
+ 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
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+
+.texi.info:
+ restore=: && backupdir="$(am__leading_dot)am$$$$" && \
+ am__cwd=`pwd` && 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; \
+ cd $(srcdir); \
+ else \
+ rc=$$?; \
+ cd $(srcdir) && \
+ $$restore $$backupdir/* `echo "./$@" | sed 's|[^/]*$$||'`; \
+ fi; \
+ rm -rf $$backupdir; exit $$rc
+
+.texi.dvi:
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+ $(TEXI2DVI) $<
+
+.texi.pdf:
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
+ $(TEXI2PDF) $<
+
+.texi.html:
+ rm -rf $(@:.html=.htp)
+ 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:
+ TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
+ $(DVIPS) -o $@ $<
+
+uninstall-dvi-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(DVIS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(dvidir)/$$f'"; \
+ rm -f "$(DESTDIR)$(dvidir)/$$f"; \
+ done
+
+uninstall-html-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(HTMLS)'; for p in $$list; do \
+ f=$(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'"; \
+ install-info --info-dir="$(DESTDIR)$(infodir)" --remove "$(DESTDIR)$(infodir)/$$relfile"; \
+ 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)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(pdfdir)/$$f'"; \
+ rm -f "$(DESTDIR)$(pdfdir)/$$f"; \
+ done
+
+uninstall-ps-am:
+ @$(NORMAL_UNINSTALL)
+ @list='$(PSS)'; for p in $$list; do \
+ f=$(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 \
+ 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):
+ @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; \
+ (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):
+ @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; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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 || \
+ tags="$$tags $$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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ 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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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: $(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)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(dvidir)/$$f'"; \
+ $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(dvidir)/$$f"; \
+ done
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-html-am: $(HTMLS)
+ @$(NORMAL_INSTALL)
+ test -z "$(htmldir)" || $(MKDIR_P) "$(DESTDIR)$(htmldir)"
+ @list='$(HTMLS)'; for p in $$list; do \
+ if test -f "$$p" || test -d "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(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"; \
+ else \
+ echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \
+ $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \
+ fi; \
+ 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)'; \
+ 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 \
+ relfile=`echo "$$ifile" | sed 's|^.*/||'`; \
+ echo " $(INSTALL_DATA) '$$ifile' '$(DESTDIR)$(infodir)/$$relfile'"; \
+ $(INSTALL_DATA) "$$ifile" "$(DESTDIR)$(infodir)/$$relfile"; \
+ else : ; fi; \
+ done; \
+ 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)'; \
+ 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)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(pdfdir)/$$f'"; \
+ $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(pdfdir)/$$f"; \
+ done
+install-ps: install-ps-recursive
+
+install-ps-am: $(PSS)
+ @$(NORMAL_INSTALL)
+ test -z "$(psdir)" || $(MKDIR_P) "$(DESTDIR)$(psdir)"
+ @list='$(PSS)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(psdir)/$$f'"; \
+ $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(psdir)/$$f"; \
+ 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) install-am \
+ install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic clean-libtool \
+ 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/parted-1.8.7/doc/USER.jp b/parted-1.8.7/doc/USER.jp
new file mode 100644
index 0000000..162ac07
--- /dev/null
+++ b/parted-1.8.7/doc/USER.jp
@@ -0,0 +1,1788 @@
+==============================================================================
+ 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.1
+ 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 ¥Ø¥ë¥×¡¦¥á¥Ã¥»¡¼¥¸¤òɽ¼¨¤·¤Þ¤¹
+-i, --interactive ɬÍפʾìÌ̤ǡ¢¥æ¡¼¥¶¤Î´³¾Ä¤òºÅÂ¥¤·¤Þ¤¹
+-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/parted-1.8.7/doc/fdl.texi b/parted-1.8.7/doc/fdl.texi
new file mode 100644
index 0000000..faa0f3b
--- /dev/null
+++ b/parted-1.8.7/doc/fdl.texi
@@ -0,0 +1,403 @@
+
+@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 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.1
+ 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/parted-1.8.7/doc/parted-pt_BR.texi b/parted-1.8.7/doc/parted-pt_BR.texi
new file mode 100644
index 0000000..bffabbb
--- /dev/null
+++ b/parted-1.8.7/doc/parted-pt_BR.texi
@@ -0,0 +1,2903 @@
+\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, 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.1 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.1 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 -i
+@itemx --interactive
+quando necessário, pede ao usuário por intervenção
+
+@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 can not
+(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/parted-1.8.7/doc/parted.info b/parted-1.8.7/doc/parted.info
new file mode 100644
index 0000000..4fbee2e
--- /dev/null
+++ b/parted-1.8.7/doc/parted.info
Binary files differ
diff --git a/parted-1.8.7/doc/parted.texi b/parted-1.8.7/doc/parted.texi
new file mode 100644
index 0000000..6a317cf
--- /dev/null
+++ b/parted-1.8.7/doc/parted.texi
@@ -0,0 +1,1246 @@
+\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,
+resizing, checking and copy partitions and file systems on them.
+@end ifinfo
+
+@ifnottex @c texi2pdf don't understand copying and insertcopying ???
+@c modifications must also be done in the titlepage
+@copying
+Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006
+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.1 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
+
+@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, 2000, 2001, 2002, 2003, 2004, 2005
+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.1 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 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 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
+@ifnotplaintext
+* Index:: Index of referenced concepts
+@end ifnotplaintext
+@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
+* Static binaries:: How to get and use a static version of 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, destroying, resizing, checking
+and copying partitions, and the file systems on them.
+
+This is useful for creating space for new operating systems, for
+reorganizing disk usage, for copying data between hard disks and for
+``disk imaging'' --- replicating an installation on another computer.
+
+This documentation is written with the assumption that the reader
+has some understanding of partitioning and file systems. If you want to
+learn more about these, the upcoming GNU Storage Guide is recommended
+reading.
+
+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.
+Also note that reiserfs support relies on libreiserfs, which does not
+fulfil the aforementioned requirement. The same holds for any external
+tools like @kbd{ntfsresize}.
+
+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.
+@xref{Static binaries}.
+
+@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
+
+GNU libc 2.1 or higher is required. You can probably use older versions
+by using the @samp{--disable-nls} option. @xref{Compiling, Building GNU
+Parted}. (Note: I think we have now dropped this requirement. TODO:
+check if libc 2.0 works!)
+
+@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-fs
+disable all file system support
+
+@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 --disable-Werror
+ignore warning messages in compilation
+
+@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
+
+@node Static binaries
+@section Using static binaries of GNU Parted
+@cindex static binary
+@cindex unsupported platforms
+@cindex resizing root device
+
+@subsection Introduction
+If you want to run GNU Parted on a machine without GNU/Linux installed, or you
+want to resize a root or boot partition, you will need to use a boot disk.
+
+Special boot disk images for GNU Parted used to be available, but with the
+emergence of a plethora of rescue disks and Live CDs that all
+include GNU Parted this is no longer necessary.
+However, please note that these disks often ship with out-of-date
+versions of Parted. To compensate for this a static binary
+of the latest GNU Parted version is available, which you can use thus:
+
+@c There should be instructions for CD and USB here.
+
+@subsection Creating the Parted disk
+@enumerate
+@item Boot your system
+
+@item Download @file{parted-static-VERSION.tgz} from @uref{ftp://ftp.gnu.org/gnu/parted/static}
+@item Unpack the tarball, resulting in a file called ``parted.static".
+
+@item Insert a floppy.
+
+@item Do a low-level format on it (on GNU/Linux this can be achieved with
+ the tool ``fdformat" from the ``util-linux" package.
+ This is basically a sanity check because floppy disks often
+ contain bad blocks.
+
+@item Create a file system. Example:
+
+@example
+$ @kbd{parted /dev/fd0 mklabel loop mkpartfs primary ext2 0 1.4}
+@end example
+
+@item Mount the floppy disk, e.g.,
+
+@example
+$ @kbd{mount -t ext2 /dev/fd0 /mnt/floppy}
+@end example
+
+@item Copy @file{parted.static} to the floppy, e.g.,
+
+@example
+$ @kbd{cp parted.static /mnt/floppy}
+@end example
+
+@item Unmount the floppy, e.g.,
+
+@example
+$ @kbd{umount /mnt/floppy}
+@end example
+@end enumerate
+
+@subsection Using the Parted disk
+@enumerate
+@item Choose a rescue disk that suits you.
+
+@item Boot off your rescue disk. Mount the disk you copied Parted onto.
+
+@item Run Parted. For example,
+
+@example
+# @kbd{cd /mnt/floppy}
+# @kbd{./parted-static}
+@end example
+@end enumerate
+
+@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 resize 1 52Mb 104Mb mkfs 2 fat16}
+@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{resize 1 52.0005Mb 104.5Mb}
+(parted) @kbd{mkfs 2 fat16}
+@end example
+
+@noindent Unambiguous abbreviations are allowed. For example, you can
+type ``p'' instead of ``print'', and ``resi'' instead of ``resize''.
+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 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.
+
+If you don't give a parameter to a command, Parted will prompt you for it.
+For example:
+
+@example
+(parted) @kbd{resize 1}
+Start? @kbd{0Gb}
+End? @kbd{40Gb}
+@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 mkfs). For example, if you attempt to
+shrink a partition ``too much'' (i.e., by more than the free space
+available), Parted will automatically reduce the shrinkage so that the
+partition is the smallest it can be without losing data. If this size is
+significantly different from the size requested, Parted will warn you.
+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 -i
+@itemx --interactive
+prompt for user intervention
+
+@item -s
+@itemx --script
+never prompt the user
+
+@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
+* check::
+* cp::
+* help::
+* mklabel::
+* mkfs::
+* mkpart::
+* mkpartfs::
+* move::
+* name::
+* print::
+* quit::
+* rescue::
+* resize::
+* rm::
+* select::
+* set::
+* unit::
+@end menu
+
+@node check
+@subsection check
+@cindex check, command description
+@cindex command description, check
+
+@deffn Command check @var{number}
+
+Checks if the file system on partition @var{number} has
+any errors.
+
+Example:
+
+@example
+(parted) @kbd{check 1}
+@end example
+
+Check the file system on partition 1.
+@end deffn
+
+@node cp
+@subsection cp
+@cindex cp, command description
+@cindex command description, cp
+
+@deffn Command cp [@var{from-device}] @var{from-number} @var{to-number}
+
+Copies the file system on the partition @var{from-number} to partition
+@var{to-number}, deleting the original contents of the destination
+partition.
+
+An optional device parameter, @var{from-device} can be given, which
+specifies which device the source partition is on.
+
+Supported file systems:
+@itemize @bullet
+@item ext2, ext3
+(provided the destination partition is larger than the source partition)
+
+@item fat16, fat32
+@item linux-swap
+(equivalent to mkswap on destination partition)
+@item reiserfs (if libreiserfs is installed)
+
+@end itemize
+
+Example:
+
+@example
+(parted) @kbd{cp /dev/hdb 2 3}
+@end example
+
+@c FIXME: this doesn't format right.
+Copy partition 2 of @file{/dev/hdb} (i.e., @file{/dev/hdb2}) to partition
+on 3, on the device Parted was loaded with, destroying the original
+contents of partition 3.
+@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 resize}
+@end example
+
+Print help for the resize 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 mkfs
+@subsection mkfs
+@cindex mkfs, command description
+@cindex command description, mkfs
+
+@deffn Command mkfs @var{number} @var{fs-type}
+
+Makes a file system @var{fs-type} on partition @var{number}, destroying
+all data that resides on that partition.
+
+Supported file systems:
+@itemize @bullet
+@item ext2
+@item fat16, fat32
+@item linux-swap
+@item reiserfs (if libreiserfs is installed)
+@end itemize
+
+Example:
+
+@example
+(parted) @kbd{mkfs 2 fat32}
+@end example
+
+Make a @var{fat32} file system on partition 2.
+@end deffn
+
+@node mkpart
+@subsection mkpart
+@cindex mkpart, command description
+@cindex command description, mkpart
+
+@deffn Command mkpart @var{part-type} [@var{fs-type}] @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: primary, extended, logical. Extended and
+logical are only used for msdos and dvh disk labels.
+
+@var{fs-type} must be on 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 mkpartfs
+@subsection mkpartfs
+@cindex mkpartfs, command description
+@cindex command description, mkpartfs
+
+@deffn Command mkpartfs @var{part-type} @var{fs-type} @var{start} @var{end}
+
+Creates a new partition of type @var{part-type} with a new file system
+of type @var{fs-type} on it. The new partition will start @var{start}
+megabytes, and end @var{end} megabytes from the beginning of the disk.
+Do not use this command to recover a deleted partition (use mkpart
+instead).
+
+@var{part-type} is one of: primary, extended, logical. Extended and logical
+are only used for msdos and dvh disk labels.
+
+@var{fs-type} must be one of these supported file systems:
+@itemize @bullet
+@item ext2
+@item fat16, fat32
+@item linux-swap
+@item reiserfs (if libreiserfs is installed)
+@end itemize
+
+Example:
+
+@example
+(parted) @kbd{mkpartfs logical ext2 440 670}
+@end example
+
+Make a logical partition and write an ext2 file system, starting 440
+megabytes and ending 670 megabytes from the beginning of the disk.
+@end deffn
+
+@node move
+@subsection move
+@cindex move, command description
+@cindex command description, move
+
+@deffn Command move @var{number} @var{start} @var{end}
+
+Moves partition on the disk, by moving its beginning to @var{start}.
+You can't move a partition so that the old and new positions overlap.
+That is, you can only move partitions into free space. If you want
+to resize a partition in-place, use @command{resize}.
+
+Move never changes the partition number.
+
+Supported file systems:
+@itemize @bullet
+@item ext2, ext3
+(provided the destination partition is larger than the source partition)
+
+@item fat16, fat32
+
+@item linux-swap
+
+@item reiserfs (if libreiserfs is installed)
+@end itemize
+
+Example:
+
+@example
+(parted) move 2 150M 500M
+@end example
+
+Move the partition numbered 2 so that it begins 150 megabytes from the start of
+the disk, and ends 500 megabytes from the start.
+
+@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 resize
+@subsection resize
+@cindex resize, command description
+@cindex command description, resize
+
+@deffn Command resize @var{number} @var{start} @var{end}
+
+Resizes the partition with number @var{number}. The partition will start
+@var{start} from the beginning of the disk, and end @var{end} from the
+beginning of the disk. resize never changes the partition number. Extended
+partitions can be resized only so long as the new extended partition
+completely contains all logical partitions.
+
+Note that Parted can manipulate partitions whether or not they have been
+defragmented, so you do not need to defragmenting the disk before
+using Parted.
+
+Supported file systems:
+@itemize @bullet
+@item ext2, ext3 -- restriction: the new @var{start} must be the same as
+the old @var{start}.
+@item fat16, fat32
+@item hfs, hfs+, hfsx -- restriction: the new @var{start} must be the same as
+the old @var{start} and the new @var{end} must be smaller than the old
+@var{end}.
+@item linux-swap
+@item reiserfs (if libreiserfs is installed)
+@end itemize
+
+Example:
+
+@example
+(parted) @kbd{resize 3 200M 850M}
+@end example
+
+Resize partition 3, so that it begins 200 megabytes and ends 850
+megabytes from the beginning of the disk.
+@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 (@emph{not} mkpartfs) 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 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.
+
+@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 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 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 onstraints, 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 end of the disk.
+
+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.
+
+@c FIXME: why doesn't this @ifnotplaintext work?!
+@c @ifnotplaintext
+@node Index
+@unnumbered Index
+@printindex cp
+@c @end ifnotplaintext
+
+@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/parted-1.8.7/doc/po4a.mk b/parted-1.8.7/doc/po4a.mk
new file mode 100644
index 0000000..24876ac
--- /dev/null
+++ b/parted-1.8.7/doc/po4a.mk
@@ -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/parted-1.8.7/doc/pt_BR/Makefile.am b/parted-1.8.7/doc/pt_BR/Makefile.am
new file mode 100644
index 0000000..d478773
--- /dev/null
+++ b/parted-1.8.7/doc/pt_BR/Makefile.am
@@ -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/parted-1.8.7/doc/pt_BR/Makefile.in b/parted-1.8.7/doc/pt_BR/Makefile.in
new file mode 100644
index 0000000..786ae12
--- /dev/null
+++ b/parted-1.8.7/doc/pt_BR/Makefile.in
@@ -0,0 +1,605 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/pt_BR/Makefile'; \
+ 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
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-pdf: install-pdf-am
+
+install-ps: 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/parted-1.8.7/doc/stamp-vti b/parted-1.8.7/doc/stamp-vti
new file mode 100644
index 0000000..c37c249
--- /dev/null
+++ b/parted-1.8.7/doc/stamp-vti
@@ -0,0 +1,4 @@
+@set UPDATED 18 April 2007
+@set UPDATED-MONTH April 2007
+@set EDITION 1.8.7
+@set VERSION 1.8.7
diff --git a/parted-1.8.7/doc/version.texi b/parted-1.8.7/doc/version.texi
new file mode 100644
index 0000000..c37c249
--- /dev/null
+++ b/parted-1.8.7/doc/version.texi
@@ -0,0 +1,4 @@
+@set UPDATED 18 April 2007
+@set UPDATED-MONTH April 2007
+@set EDITION 1.8.7
+@set VERSION 1.8.7
diff --git a/parted-1.8.7/include/Makefile.am b/parted-1.8.7/include/Makefile.am
new file mode 100644
index 0000000..25715ce
--- /dev/null
+++ b/parted-1.8.7/include/Makefile.am
@@ -0,0 +1,3 @@
+SUBDIRS = parted
+
+MAINTAINERCLEANFILES = Makefile.in
\ No newline at end of file
diff --git a/parted-1.8.7/include/Makefile.in b/parted-1.8.7/include/Makefile.in
new file mode 100644
index 0000000..7ed1596
--- /dev/null
+++ b/parted-1.8.7/include/Makefile.in
@@ -0,0 +1,671 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+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
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \
+ 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
+
+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):
+ @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; \
+ (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):
+ @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; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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 || \
+ tags="$$tags $$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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ 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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+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) install-am \
+ install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic clean-libtool \
+ 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/parted-1.8.7/include/parted/Makefile.am b/parted-1.8.7/include/parted/Makefile.am
new file mode 100644
index 0000000..dd0e1d4
--- /dev/null
+++ b/parted-1.8.7/include/parted/Makefile.am
@@ -0,0 +1,27 @@
+if COMPILE_FOR_S390
+S390_HDRS = fdasd.h vtoc.h
+else
+S390_HDRS =
+endif
+
+partedincludedir = $(includedir)/parted
+
+partedinclude_HEADERS = gnu.h \
+ linux.h \
+ constraint.h \
+ debug.h \
+ device.h \
+ disk.h \
+ exception.h \
+ filesys.h \
+ geom.h \
+ natmath.h \
+ timer.h \
+ unit.h \
+ parted.h \
+ $(S390_HDRS)
+
+noinst_HEADERS = crc32.h \
+ endian.h
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/parted-1.8.7/include/parted/Makefile.in b/parted-1.8.7/include/parted/Makefile.in
new file mode 100644
index 0000000..cbb6e05
--- /dev/null
+++ b/parted-1.8.7/include/parted/Makefile.in
@@ -0,0 +1,612 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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__partedinclude_HEADERS_DIST) $(noinst_HEADERS) \
+ $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+SOURCES =
+DIST_SOURCES =
+am__partedinclude_HEADERS_DIST = gnu.h linux.h constraint.h debug.h \
+ device.h disk.h exception.h filesys.h geom.h natmath.h timer.h \
+ unit.h parted.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 = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(partedincludedir)"
+partedincludeHEADERS_INSTALL = $(INSTALL_HEADER)
+HEADERS = $(noinst_HEADERS) $(partedinclude_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_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 = gnu.h \
+ linux.h \
+ constraint.h \
+ debug.h \
+ device.h \
+ disk.h \
+ exception.h \
+ filesys.h \
+ geom.h \
+ natmath.h \
+ timer.h \
+ unit.h \
+ parted.h \
+ $(S390_HDRS)
+
+noinst_HEADERS = crc32.h \
+ endian.h
+
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/parted/Makefile'; \
+ 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
+
+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)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+ echo " $(partedincludeHEADERS_INSTALL) '$$d$$p' '$(DESTDIR)$(partedincludedir)/$$f'"; \
+ $(partedincludeHEADERS_INSTALL) "$$d$$p" "$(DESTDIR)$(partedincludedir)/$$f"; \
+ done
+
+uninstall-partedincludeHEADERS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(partedinclude_HEADERS)'; for p in $$list; do \
+ f=$(am__strip_dir) \
+ echo " rm -f '$(DESTDIR)$(partedincludedir)/$$f'"; \
+ rm -f "$(DESTDIR)$(partedincludedir)/$$f"; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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
+
+info: info-am
+
+info-am:
+
+install-data-am: install-partedincludeHEADERS
+
+install-dvi: install-dvi-am
+
+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
+
+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 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/parted-1.8.7/include/parted/constraint.h b/parted-1.8.7/include/parted/constraint.h
new file mode 100644
index 0000000..529c8b3
--- /dev/null
+++ b/parted-1.8.7/include/parted/constraint.h
@@ -0,0 +1,97 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 1998, 1999, 2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef PED_CONSTRAINT_H_INCLUDED
+#define PED_CONSTRAINT_H_INCLUDED
+
+typedef struct _PedConstraint PedConstraint;
+
+#include <parted/device.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/parted-1.8.7/include/parted/crc32.h b/parted-1.8.7/include/parted/crc32.h
new file mode 100644
index 0000000..271d773
--- /dev/null
+++ b/parted-1.8.7/include/parted/crc32.h
@@ -0,0 +1,35 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 1998-2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#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/parted-1.8.7/include/parted/debug.h b/parted-1.8.7/include/parted/debug.h
new file mode 100644
index 0000000..dfa7082
--- /dev/null
+++ b/parted-1.8.7/include/parted/debug.h
@@ -0,0 +1,92 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 1998, 1999, 2000, 2002 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef PED_DEBUG_H_INCLUDED
+#define PED_DEBUG_H_INCLUDED
+
+#include <config.h>
+
+#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 int ped_assert ( int cond, 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, action) \
+ do { \
+ if (!ped_assert ( cond, \
+ #cond, \
+ __FILE__, \
+ __LINE__, \
+ __PRETTY_FUNCTION__ )) \
+ { \
+ action; \
+ } \
+ } 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, action) \
+ do { \
+ if (!ped_assert ( cond, \
+ #cond, \
+ "unknown", \
+ 0, \
+ "unknown" )) \
+ { \
+ action; \
+ } \
+ } while (0)
+
+#endif /* __GNUC__ */
+
+#else /* !DEBUG */
+
+#define PED_ASSERT(cond, action) while (0) {}
+#define PED_DEBUG(level, ...) while (0) {}
+
+
+#endif /* DEBUG */
+
+#endif /* PED_DEBUG_H_INCLUDED */
+
diff --git a/parted-1.8.7/include/parted/device.h b/parted-1.8.7/include/parted/device.h
new file mode 100644
index 0000000..aa96b59
--- /dev/null
+++ b/parted-1.8.7/include/parted/device.h
@@ -0,0 +1,151 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 1998 - 2001, 2005 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+/**
+ * \addtogroup PedDevice
+ * @{
+ */
+
+/** \file device.h */
+
+#ifndef PED_DEVICE_H_INCLUDED
+#define PED_DEVICE_H_INCLUDED
+
+#include <parted/timer.h>
+
+/** 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
+#ifdef ENABLE_DEVICE_MAPPER
+ ,
+ PED_DEVICE_DM = 12
+#endif
+} 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;
+};
+
+/**
+ * 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) ();
+};
+
+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 (PedDevice* dev);
+
+/* private stuff ;-) */
+
+extern void _ped_device_probe (const char* path);
+
+#endif /* PED_DEVICE_H_INCLUDED */
+
+/** @} */
+
diff --git a/parted-1.8.7/include/parted/disk.h b/parted-1.8.7/include/parted/disk.h
new file mode 100644
index 0000000..4dd81d9
--- /dev/null
+++ b/parted-1.8.7/include/parted/disk.h
@@ -0,0 +1,361 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 1999, 2000, 2001, 2002, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+/**
+ * \addtogroup PedDisk
+ * @{
+ */
+
+/** \file disk.h */
+
+#ifndef PED_DISK_H_INCLUDED
+#define PED_DISK_H_INCLUDED
+
+/**
+ * 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
+};
+#define PED_PARTITION_FIRST_FLAG PED_PARTITION_BOOT
+#define PED_PARTITION_LAST_FLAG PED_PARTITION_MSFT_RESERVED
+
+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 _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>
+
+/** @} */
+
+/**
+ * \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);
+ /** \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);
+
+ /* other */
+ int (*alloc_metadata) (PedDisk* disk);
+ int (*get_max_primary_partition_count) (const PedDisk* disk);
+};
+
+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);
+
+/**
+ * Deprecated: use ped_disk_type_register.
+ */
+__attribute__ ((deprecated))
+extern void ped_register_disk_type (PedDiskType* type);
+
+/**
+ * Deprecated: use ped_disk_type_unregister.
+ */
+__attribute__ ((deprecated))
+extern void ped_unregister_disk_type (PedDiskType* type);
+
+extern PedDiskType* ped_disk_type_get_next (PedDiskType* 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 int ped_disk_clobber_exclude (PedDevice* dev,
+ const PedDiskType* exclude);
+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);
+
+/** @} */
+
+/**
+ * \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);
+
+/* 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/parted-1.8.7/include/parted/endian.h b/parted-1.8.7/include/parted/endian.h
new file mode 100644
index 0000000..c11b187
--- /dev/null
+++ b/parted-1.8.7/include/parted/endian.h
@@ -0,0 +1,87 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 1998, 1999, 2000, 2001, 2002 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+/* should only be #included by files in libparted */
+
+#ifndef PED_ENDIAN_H_INCLUDED
+#define PED_ENDIAN_H_INCLUDED
+
+#include <config.h>
+#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/parted-1.8.7/include/parted/exception.h b/parted-1.8.7/include/parted/exception.h
new file mode 100644
index 0000000..9ecf504
--- /dev/null
+++ b/parted-1.8.7/include/parted/exception.h
@@ -0,0 +1,117 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 1999, 2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+/**
+ * \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/parted-1.8.7/include/parted/fdasd.h b/parted-1.8.7/include/parted/fdasd.h
new file mode 100644
index 0000000..f6b1e33
--- /dev/null
+++ b/parted-1.8.7/include/parted/fdasd.h
@@ -0,0 +1,231 @@
+/*
+ * 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 FDASD_ERROR "fdasd error: "
+#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 (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/parted-1.8.7/include/parted/filesys.h b/parted-1.8.7/include/parted/filesys.h
new file mode 100644
index 0000000..f7bc7cf
--- /dev/null
+++ b/parted-1.8.7/include/parted/filesys.h
@@ -0,0 +1,117 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 1999, 2000, 2001 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+/**
+ * \addtogroup PedFileSystem
+ * @{
+ */
+
+/** \file filesys.h */
+
+#ifndef PED_FILESYS_H_INCLUDED
+#define PED_FILESYS_H_INCLUDED
+
+typedef struct _PedFileSystem PedFileSystem;
+typedef struct _PedFileSystemType PedFileSystemType;
+typedef const struct _PedFileSystemOps PedFileSystemOps;
+
+#include <parted/geom.h>
+#include <parted/disk.h>
+#include <parted/exception.h>
+#include <parted/constraint.h>
+#include <parted/timer.h>
+#include <stdio.h>
+
+struct _PedFileSystemOps {
+ PedGeometry* (*probe) (PedGeometry* geom);
+ int (*clobber) (PedGeometry* geom);
+
+ PedFileSystem* (*open) (PedGeometry* geom);
+ PedFileSystem* (*create) (PedGeometry* geom, PedTimer* timer);
+ int (*close) (PedFileSystem* fs);
+ int (*check) (PedFileSystem* fs, PedTimer* timer);
+ PedFileSystem* (*copy) (const PedFileSystem* fs, PedGeometry* geom,
+ PedTimer* timer);
+ int (*resize) (PedFileSystem* fs, PedGeometry* geom, PedTimer* timer);
+
+ PedConstraint* (*get_create_constraint) (const PedDevice* dev);
+ PedConstraint* (*get_resize_constraint) (const PedFileSystem* fs);
+ PedConstraint* (*get_copy_constraint) (const PedFileSystem* fs,
+ const PedDevice* dev);
+};
+
+/**
+ * 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 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 PedFileSystemType* ped_file_system_type_get (const char* name);
+extern PedFileSystemType*
+ped_file_system_type_get_next (const PedFileSystemType* fs_type);
+
+extern PedFileSystemType* ped_file_system_probe (PedGeometry* geom);
+extern PedGeometry* ped_file_system_probe_specific (
+ const PedFileSystemType* fs_type,
+ PedGeometry* geom);
+extern int ped_file_system_clobber (PedGeometry* geom);
+
+extern PedFileSystem* ped_file_system_open (PedGeometry* geom);
+extern PedFileSystem* ped_file_system_create (PedGeometry* geom,
+ const PedFileSystemType* type,
+ PedTimer* timer);
+extern int ped_file_system_close (PedFileSystem* fs);
+extern int ped_file_system_check (PedFileSystem* fs, PedTimer* timer);
+extern PedFileSystem* ped_file_system_copy (PedFileSystem* fs,
+ PedGeometry* geom,
+ PedTimer* timer);
+extern int ped_file_system_resize (PedFileSystem* fs, PedGeometry* geom,
+ PedTimer* timer);
+
+extern PedConstraint* ped_file_system_get_create_constraint (
+ const PedFileSystemType* fs_type, const PedDevice* dev);
+extern PedConstraint* ped_file_system_get_resize_constraint (
+ const PedFileSystem* fs);
+extern PedConstraint* ped_file_system_get_copy_constraint (
+ const PedFileSystem* fs, const PedDevice* dev);
+
+#endif /* PED_FILESYS_H_INCLUDED */
+
+/** @} */
diff --git a/parted-1.8.7/include/parted/geom.h b/parted-1.8.7/include/parted/geom.h
new file mode 100644
index 0000000..90dc5b2
--- /dev/null
+++ b/parted-1.8.7/include/parted/geom.h
@@ -0,0 +1,84 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 1998-2001, 2005 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+/**
+ * \addtogroup PedGeometry
+ * @{
+ */
+
+/** \file geom.h */
+
+#ifndef PED_GEOM_H_INCLUDED
+#define PED_GEOM_H_INCLUDED
+
+#include <parted/device.h>
+#include <parted/timer.h>
+
+typedef struct _PedGeometry PedGeometry;
+
+/**
+ * Geometry of the partition
+ */
+struct _PedGeometry {
+ PedDevice* dev;
+ PedSector start;
+ PedSector length;
+ PedSector end;
+};
+
+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_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/parted-1.8.7/include/parted/gnu.h b/parted-1.8.7/include/parted/gnu.h
new file mode 100644
index 0000000..1cf412a
--- /dev/null
+++ b/parted-1.8.7/include/parted/gnu.h
@@ -0,0 +1,45 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2001 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef PED_GNU_H_INCLUDED
+#define PED_GNU_H_INCLUDED
+
+#include <parted/parted.h>
+
+#include <hurd/store.h>
+
+#define GNU_SPECIFIC(dev) ((GNUSpecific*) (dev)->arch_specific)
+
+typedef struct _GNUSpecific GNUSpecific;
+
+struct _GNUSpecific {
+ struct store* store;
+ int consume;
+};
+
+extern PedArchitecture ped_gnu_arch;
+
+/* 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);
+
+#endif /* PED_GNU_H_INCLUDED */
+
diff --git a/parted-1.8.7/include/parted/linux.h b/parted-1.8.7/include/parted/linux.h
new file mode 100644
index 0000000..90d92cf
--- /dev/null
+++ b/parted-1.8.7/include/parted/linux.h
@@ -0,0 +1,46 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2001 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef PED_LINUX_H_INCLUDED
+#define PED_LINUX_H_INCLUDED
+
+#include <parted/parted.h>
+#include <parted/device.h>
+
+#if defined __s390__ || defined __s390x__
+# include <parted/fdasd.h>
+#endif
+
+#define LINUX_SPECIFIC(dev) ((LinuxSpecific*) (dev)->arch_specific)
+
+typedef struct _LinuxSpecific LinuxSpecific;
+
+struct _LinuxSpecific {
+ int fd;
+#if defined(__s390__) || defined(__s390x__)
+ unsigned int real_sector_size;
+ /* IBM internal dasd structure (i guess ;), required. */
+ struct fdasd_anchor *anchor;
+#endif
+};
+
+extern PedArchitecture ped_linux_arch;
+
+#endif /* PED_LINUX_H_INCLUDED */
+
diff --git a/parted-1.8.7/include/parted/natmath.h b/parted-1.8.7/include/parted/natmath.h
new file mode 100644
index 0000000..75b32ad
--- /dev/null
+++ b/parted-1.8.7/include/parted/natmath.h
@@ -0,0 +1,101 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+/**
+ * \addtogroup PedAlignment
+ * @{
+ */
+
+/** \file natmath.h */
+
+#ifndef PED_NATMATH_H_INCLUDED
+#define PED_NATMATH_H_INCLUDED
+
+
+typedef struct _PedAlignment PedAlignment;
+
+#include <parted/disk.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;
+
+extern PedSector
+ped_div_round_up (PedSector numerator, PedSector divisor);
+
+extern PedSector
+ped_div_round_to_nearest (PedSector numerator, PedSector divisor);
+
+#endif /* PED_NATMATH_H_INCLUDED */
+
+/**
+ * @}
+ */
+
diff --git a/parted-1.8.7/include/parted/parted.h b/parted-1.8.7/include/parted/parted.h
new file mode 100644
index 0000000..ff40ede
--- /dev/null
+++ b/parted-1.8.7/include/parted/parted.h
@@ -0,0 +1,64 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 1999, 2000, 2001 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef PARTED_H_INCLUDED
+#define PARTED_H_INCLUDED
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef struct _PedArchitecture PedArchitecture;
+
+#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>
+
+struct _PedArchitecture {
+ PedDiskArchOps* disk_ops;
+ PedDeviceArchOps* dev_ops;
+};
+
+extern const PedArchitecture* ped_architecture;
+
+/* the architecture can't be changed if there are any PedDevice's.
+ * i.e. you should only be doing this if it's the FIRST thing you do...
+ */
+extern int ped_set_architecture (const PedArchitecture* arch);
+
+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 ped_free (void* ptr);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* PARTED_H_INCLUDED */
diff --git a/parted-1.8.7/include/parted/timer.h b/parted-1.8.7/include/parted/timer.h
new file mode 100644
index 0000000..b3cbd10
--- /dev/null
+++ b/parted-1.8.7/include/parted/timer.h
@@ -0,0 +1,66 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2001, 2002 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+/**
+ * \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/parted-1.8.7/include/parted/unit.h b/parted-1.8.7/include/parted/unit.h
new file mode 100644
index 0000000..a7d3d41
--- /dev/null
+++ b/parted-1.8.7/include/parted/unit.h
@@ -0,0 +1,94 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2005, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+/**
+ * \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/parted-1.8.7/include/parted/vtoc.h b/parted-1.8.7/include/parted/vtoc.h
new file mode 100644
index 0000000..3e79478
--- /dev/null
+++ b/parted-1.8.7/include/parted/vtoc.h
@@ -0,0 +1,283 @@
+/*
+ * 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
+
+#define VTOC_ERROR "VTOC error:"
+
+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 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 */
+ 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 */
+};
+
+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 source[LINE_LENGTH], char target[LINE_LENGTH],
+ int l);
+char * vtoc_ebcdic_dec (char source[LINE_LENGTH], char target[LINE_LENGTH],
+ 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 *vlabel);
+
+void vtoc_volume_label_set_volser (volume_label_t *vlabel, char *volser);
+
+char *vtoc_volume_label_get_volser (volume_label_t *vlabel, char *volser);
+
+void vtoc_volume_label_set_key (volume_label_t *vlabel, char *key);
+
+void vtoc_volume_label_set_label (volume_label_t *vlabel, char *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 *f1,
+ format4_label_t *f4, format5_label_t *f5,
+ format7_label_t *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/parted-1.8.7/lib/Makefile.am b/parted-1.8.7/lib/Makefile.am
new file mode 100644
index 0000000..6635f70
--- /dev/null
+++ b/parted-1.8.7/lib/Makefile.am
@@ -0,0 +1 @@
+include gnulib.mk
diff --git a/parted-1.8.7/lib/Makefile.in b/parted-1.8.7/lib/Makefile.in
new file mode 100644
index 0000000..1c6d2a9
--- /dev/null
+++ b/parted-1.8.7/lib/Makefile.in
@@ -0,0 +1,1071 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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) 2004-2007 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=libparted --source-base=lib --m4-base=m4 --doc-base=doc --aux-dir=build-aux --avoid=lock --avoid=size_max --avoid=xsize --avoid=canonicalize-lgpl --libtool --macro-prefix=gl alloca announce-gen assert atexit calloc closeout config-h configmake fdl free gettext gnupload inttypes lib-ignore long-options malloc memchr memcmp memcpy memmove memset realloc rename rpmatch safe-read stdbool strcspn strtod strtol utime version-etc-fsf
+
+
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+LIBRARIES = $(noinst_LIBRARIES)
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+am_libparted_la_OBJECTS = full-write.lo localcharset.lo version-etc.lo \
+ version-etc-fsf.lo xalloc-die.lo xstrndup.lo
+libparted_la_OBJECTS = $(am_libparted_la_OBJECTS)
+libparted_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(libparted_la_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I.@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libparted_la_SOURCES) $(EXTRA_libparted_la_SOURCES)
+DIST_SOURCES = $(libparted_la_SOURCES) $(EXTRA_libparted_la_SOURCES)
+HEADERS = $(noinst_HEADERS)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@ $(POW_LIB)
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+AUTOMAKE_OPTIONS = 1.5 gnits
+noinst_HEADERS =
+noinst_LIBRARIES =
+noinst_LTLIBRARIES = libparted.la
+EXTRA_DIST = alloca.c alloca_.h atexit.c calloc.c close-stream.c \
+ close-stream.h closeout.c closeout.h basename.c dirname.c \
+ dirname.h stripslash.c error.c error.h exitfail.c exitfail.h \
+ __fpending.c __fpending.h free.c getopt.c getopt1.c getopt_.h \
+ getopt_int.h inttypes_.h config.charset ref-add.sin \
+ ref-del.sin long-options.c long-options.h malloc.c memchr.c \
+ memcmp.c memcpy.c memmove.c memset.c quotearg.c quotearg.h \
+ realloc.c regcomp.c regex.c regex.h regex_internal.c \
+ regex_internal.h regexec.c rename.c rpmatch.c safe-read.c \
+ safe-read.h safe-write.c safe-write.h stdbool_.h stdint_.h \
+ stdlib_.h strcspn.c string_.h strndup.c strnlen.c strtod.c \
+ strtol.c unistd_.h utime.c wchar_.h wctype_.h xalloc.h \
+ xmalloc.c
+BUILT_SOURCES = $(ALLOCA_H) configmake.h $(GETOPT_H) $(INTTYPES_H) \
+ $(STDBOOL_H) $(STDINT_H) stdlib.h string.h unistd.h $(WCHAR_H) \
+ $(WCTYPE_H)
+SUFFIXES = .sed .sin
+MOSTLYCLEANFILES = core *.stackdump alloca.h alloca.h-t getopt.h \
+ getopt.h-t inttypes.h inttypes.h-t stdbool.h stdbool.h-t \
+ stdint.h stdint.h-t stdlib.h stdlib.h-t string.h string.h-t \
+ unistd.h unistd.h-t wchar.h wchar.h-t wctype.h wctype.h-t
+MOSTLYCLEANDIRS =
+CLEANFILES = configmake.h configmake.h-t charset.alias ref-add.sed \
+ ref-del.sed
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+AM_CPPFLAGS =
+
+# This is for those projects which use "gettextize --intl" to put a source-code
+# copy of libintl into their package. In such projects, every Makefile.am needs
+# -I$(top_builddir)/intl, so that <libintl.h> can be found in this directory.
+# For the Makefile.ams in other directories it is the maintainer's
+# responsibility; for the one from gnulib we do it here.
+# This option has no effect when the user disables NLS (because then the intl
+# directory contains no libintl.h file) or when the project does not use
+# "gettextize --intl".
+#AM_CPPFLAGS += -I$(top_builddir)/intl
+libparted_la_SOURCES = full-write.h full-write.c gettext.h \
+ localcharset.h localcharset.c version-etc.h version-etc.c \
+ version-etc-fsf.c xalloc-die.c xstrndup.h xstrndup.c
+libparted_la_LIBADD = $(gl_LTLIBOBJS) @LTALLOCA@
+libparted_la_DEPENDENCIES = $(gl_LTLIBOBJS) @LTALLOCA@
+EXTRA_libparted_la_SOURCES = alloca.c atexit.c calloc.c close-stream.c \
+ closeout.c basename.c dirname.c stripslash.c error.c \
+ exitfail.c __fpending.c free.c getopt.c getopt1.c \
+ long-options.c malloc.c memchr.c memcmp.c memcpy.c memmove.c \
+ memset.c quotearg.c realloc.c regcomp.c regex.c \
+ regex_internal.c regexec.c rename.c rpmatch.c safe-read.c \
+ safe-write.c strcspn.c strndup.c strnlen.c strtod.c strtol.c \
+ utime.c xmalloc.c
+libparted_la_LDFLAGS = $(AM_LDFLAGS)
+LINK_WARNING_H = $(top_srcdir)/build-aux/link-warning.h
+charset_alias = $(DESTDIR)$(libdir)/charset.alias
+charset_tmp = $(DESTDIR)$(libdir)/charset.tmp
+all: $(BUILT_SOURCES) config.h
+ $(MAKE) $(AM_MAKEFLAGS) all-am
+
+.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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits lib/Makefile'; \
+ 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
+
+config.h: stamp-h1
+ @if test ! -f $@; then \
+ rm -f stamp-h1; \
+ $(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)
+ 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)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libparted.la: $(libparted_la_OBJECTS) $(libparted_la_DEPENDENCIES)
+ $(libparted_la_LINK) $(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)/alloca.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/__fpending.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/alloca.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/atexit.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/calloc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/close-stream.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/closeout.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)/free.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/full-write.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)/localcharset.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/long-options.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/malloc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memchr.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memcmp.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memcpy.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memmove.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memset.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/quotearg.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)/rename.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)/safe-write.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strcspn.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)/strtod.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strtol.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/utime.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)/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@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) config.h.in $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ here=`pwd`; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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) $(LTLIBRARIES) $(HEADERS) config.h \
+ all-local
+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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+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 -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-noinstLTLIBRARIES mostlyclean-am
+
+distclean: distclean-am
+ -rm -rf $(DEPDIR) ./$(DEPDIR)
+ -rm -f Makefile
+distclean-am: clean-am distclean-compile distclean-generic \
+ distclean-hdr distclean-tags
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+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
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -rf $(DEPDIR) ./$(DEPDIR)
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool mostlyclean-local
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-local
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
+ clean-generic clean-libtool clean-noinstLIBRARIES \
+ clean-noinstLTLIBRARIES ctags distclean distclean-compile \
+ distclean-generic distclean-hdr 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-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 maintainer-clean maintainer-clean-generic \
+ mostlyclean mostlyclean-compile mostlyclean-generic \
+ mostlyclean-libtool mostlyclean-local pdf pdf-am ps ps-am tags \
+ 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.
+alloca.h: alloca_.h
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ cat $(srcdir)/alloca_.h; \
+ } > $@-t
+ mv -f $@-t $@
+
+# Retrieve values of the variables through 'configure' followed by
+# 'make', not directly through 'configure', so that a user who
+# sets some of these variables consistently on the 'make' command
+# line gets correct results.
+#
+# One advantage of this approach, compared to the classical
+# approach of adding -DLIBDIR=\"$(libdir)\" etc. to AM_CPPFLAGS,
+# is that it protects against the use of undefined variables.
+# If, say, $(libdir) is not set in the Makefile, LIBDIR is not
+# defined by this module, and code using LIBDIR gives a
+# compilation error.
+#
+# Another advantage is that 'make' output is shorter.
+#
+# Listed in the same order as the GNU makefile conventions.
+# The Automake-defined pkg* macros are appended, in the order
+# listed in the Automake 1.10a+ documentation.
+configmake.h: Makefile
+ 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
+ mv $@-t $@
+
+# 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_.h
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ cat $(srcdir)/getopt_.h; \
+ } > $@-t
+ mv -f $@-t $@
+
+# 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_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+ -e 's|@''ABSOLUTE_INTTYPES_H''@|$(ABSOLUTE_INTTYPES_H)|g' \
+ -e 's/@''PRI_MACROS_BROKEN''@/$(PRI_MACROS_BROKEN)/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 '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/inttypes_.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: all-local
+ test $(GLIBC21) != no || $(mkinstalldirs) $(DESTDIR)$(libdir)
+ 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 test $(GLIBC21) = no; then \
+ sed -f ref-add.sed charset.alias > $(charset_tmp) ; \
+ $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
+ rm -f $(charset_tmp) ; \
+ fi ; \
+ fi
+
+uninstall-local: 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
+ rm -f t-$@ $@
+ $(SHELL) $(srcdir)/config.charset '$(host)' > t-$@
+ mv t-$@ $@
+.sin.sed:
+ rm -f t-$@ $@
+ sed -e '/^#/d' -e 's/@''PACKAGE''@/$(PACKAGE)/g' $< > t-$@
+ mv t-$@ $@
+
+# We need the following in order to create <stdbool.h> when the system
+# doesn't have one that works.
+stdbool.h: stdbool_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool_.h; \
+ } > $@-t
+ mv $@-t $@
+
+# We need the following in order to create <stdint.h> when the system
+# doesn't have one that works with the given compiler.
+stdint.h: stdint_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
+ -e 's|@''ABSOLUTE_STDINT_H''@|$(ABSOLUTE_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_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
+ -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/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_.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_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''ABSOLUTE_STDLIB_H''@|$(ABSOLUTE_STDLIB_H)|g' \
+ -e 's|@''GNULIB_GETSUBOPT''@|$(GNULIB_GETSUBOPT)|g' \
+ -e 's|@''GNULIB_MKDTEMP''@|$(GNULIB_MKDTEMP)|g' \
+ -e 's|@''GNULIB_MKSTEMP''@|$(GNULIB_MKSTEMP)|g' \
+ -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \
+ -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \
+ -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
+ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/stdlib_.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_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''ABSOLUTE_STRING_H''@|$(ABSOLUTE_STRING_H)|g' \
+ -e 's|@''GNULIB_MBSLEN''@|$(GNULIB_MBSLEN)|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_MEMMEM''@|$(GNULIB_MEMMEM)|g' \
+ -e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \
+ -e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|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_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_STRCASESTR''@|$(GNULIB_STRCASESTR)|g' \
+ -e 's|@''GNULIB_STRTOK_R''@|$(GNULIB_STRTOK_R)|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_STPCPY''@|$(HAVE_STPCPY)|g' \
+ -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \
+ -e 's|@''HAVE_STRCASECMP''@|$(HAVE_STRCASECMP)|g' \
+ -e 's|@''HAVE_DECL_STRNCASECMP''@|$(HAVE_DECL_STRNCASECMP)|g' \
+ -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \
+ -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \
+ -e 's|@''HAVE_STRNDUP''@|$(HAVE_STRNDUP)|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 '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/string_.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_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
+ -e 's|@''ABSOLUTE_UNISTD_H''@|$(ABSOLUTE_UNISTD_H)|g' \
+ -e 's|@''GNULIB_CHOWN''@|$(GNULIB_CHOWN)|g' \
+ -e 's|@''GNULIB_DUP2''@|$(GNULIB_DUP2)|g' \
+ -e 's|@''GNULIB_FCHDIR''@|$(GNULIB_FCHDIR)|g' \
+ -e 's|@''GNULIB_FTRUNCATE''@|$(GNULIB_FTRUNCATE)|g' \
+ -e 's|@''GNULIB_GETCWD''@|$(GNULIB_GETCWD)|g' \
+ -e 's|@''GNULIB_GETLOGIN_R''@|$(GNULIB_GETLOGIN_R)|g' \
+ -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \
+ -e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \
+ -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
+ -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
+ -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
+ -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \
+ -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
+ -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
+ -e 's|@''REPLACE_FCHDIR''@|$(REPLACE_FCHDIR)|g' \
+ -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
+ < $(srcdir)/unistd_.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_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''ABSOLUTE_WCHAR_H''@|$(ABSOLUTE_WCHAR_H)|g' \
+ < $(srcdir)/wchar_.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_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \
+ -e 's|@''ABSOLUTE_WCTYPE_H''@|$(ABSOLUTE_WCTYPE_H)|g' \
+ -e 's/@''HAVE_ISWCNTRL''@/$(HAVE_ISWCNTRL)/g' \
+ -e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \
+ < $(srcdir)/wctype_.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/parted-1.8.7/lib/__fpending.c b/parted-1.8.7/lib/__fpending.c
new file mode 100644
index 0000000..221aee6
--- /dev/null
+++ b/parted-1.8.7/lib/__fpending.c
@@ -0,0 +1,30 @@
+/* __fpending.c -- return the number of pending output bytes on a stream
+ Copyright (C) 2000, 2004, 2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* 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/parted-1.8.7/lib/__fpending.h b/parted-1.8.7/lib/__fpending.h
new file mode 100644
index 0000000..8a8aabc
--- /dev/null
+++ b/parted-1.8.7/lib/__fpending.h
@@ -0,0 +1,34 @@
+/* Declare __fpending.
+
+ Copyright (C) 2000, 2003, 2005, 2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ 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/parted-1.8.7/lib/alloca.c b/parted-1.8.7/lib/alloca.c
new file mode 100644
index 0000000..3a1f4e2
--- /dev/null
+++ b/parted-1.8.7/lib/alloca.c
@@ -0,0 +1,489 @@
+/* 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 (void)
+{
+ static char *addr = NULL; /* Address of first `dummy', once known. */
+ auto char dummy; /* To get stack address. */
+
+ if (addr == NULL)
+ { /* Initial entry. */
+ addr = ADDRESS_FUNCTION (dummy);
+
+ find_stack_direction (); /* Recurse once. */
+ }
+ else
+ {
+ /* Second entry. */
+ if (ADDRESS_FUNCTION (dummy) > addr)
+ 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. */
+ find_stack_direction ();
+# 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 2 */
diff --git a/parted-1.8.7/lib/alloca_.h b/parted-1.8.7/lib/alloca_.h
new file mode 100644
index 0000000..af274b9
--- /dev/null
+++ b/parted-1.8.7/lib/alloca_.h
@@ -0,0 +1,54 @@
+/* Memory allocation on the stack.
+
+ Copyright (C) 1995, 1999, 2001-2004, 2006-2007 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, 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
+# else
+# include <stddef.h>
+# ifdef __cplusplus
+extern "C"
+# endif
+void *alloca (size_t);
+# endif
+#endif
+
+#endif /* _GL_ALLOCA_H */
diff --git a/parted-1.8.7/lib/atexit.c b/parted-1.8.7/lib/atexit.c
new file mode 100644
index 0000000..5ef33e5
--- /dev/null
+++ b/parted-1.8.7/lib/atexit.c
@@ -0,0 +1,13 @@
+/* Wrapper to implement ANSI C's atexit using SunOS's on_exit. */
+/* This function is in the public domain. --Mike Stump. */
+
+#include <config.h>
+
+int
+atexit (void (*f) (void))
+{
+ /* If the system doesn't provide a definition for atexit, use on_exit
+ if the system provides that. */
+ on_exit (f, 0);
+ return 0;
+}
diff --git a/parted-1.8.7/lib/basename.c b/parted-1.8.7/lib/basename.c
new file mode 100644
index 0000000..fbe17ff
--- /dev/null
+++ b/parted-1.8.7/lib/basename.c
@@ -0,0 +1,129 @@
+/* basename.c -- return the last element in a file name
+
+ Copyright (C) 1990, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include "dirname.h"
+
+#include <string.h>
+#include "xalloc.h"
+#include "xstrndup.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;
+}
+
+
+/* In general, we can't use the builtin `basename' function if available,
+ since it has different meanings in different environments.
+ In some environments the builtin `basename' modifies its argument.
+
+ Return the last file name component of NAME, allocated with
+ xmalloc. On systems with drive letters, a leading "./"
+ distinguishes relative names that would otherwise look like a drive
+ letter. Unlike POSIX basename(), NAME cannot be NULL,
+ base_name("") returns "", and the first trailing slash is not
+ stripped.
+
+ If lstat (NAME) would succeed, then { chdir (dir_name (NAME));
+ lstat (base_name (NAME)); } will access the same file. Likewise,
+ if the sequence { chdir (dir_name (NAME));
+ rename (base_name (NAME), "foo"); } succeeds, you have renamed NAME
+ to "foo" in the same directory NAME was in. */
+
+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);
+}
+
+/* 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/parted-1.8.7/lib/calloc.c b/parted-1.8.7/lib/calloc.c
new file mode 100644
index 0000000..c8b1e1e
--- /dev/null
+++ b/parted-1.8.7/lib/calloc.c
@@ -0,0 +1,44 @@
+/* calloc() function that is glibc compatible.
+ This wrapper function is required at least on Tru64 UNIX 5.1.
+ Copyright (C) 2004, 2005, 2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+#undef calloc
+
+#include <stdlib.h>
+
+/* 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)
+{
+ size_t bytes;
+
+ if (n == 0 || s == 0)
+ return calloc (1, 1);
+
+ /* Defend against buggy calloc implementations that mishandle
+ size_t overflow. */
+ bytes = n * s;
+ if (bytes / s != n)
+ return NULL;
+
+ return calloc (n, s);
+}
diff --git a/parted-1.8.7/lib/close-stream.c b/parted-1.8.7/lib/close-stream.c
new file mode 100644
index 0000000..72d0d68
--- /dev/null
+++ b/parted-1.8.7/lib/close-stream.c
@@ -0,0 +1,76 @@
+/* Close a stream, with nicer error checking than fclose's.
+
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#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.
+
+ 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)
+{
+ bool some_pending = (__fpending (stream) != 0);
+ bool prev_fail = (ferror (stream) != 0);
+ 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/parted-1.8.7/lib/close-stream.h b/parted-1.8.7/lib/close-stream.h
new file mode 100644
index 0000000..be3d419
--- /dev/null
+++ b/parted-1.8.7/lib/close-stream.h
@@ -0,0 +1,2 @@
+#include <stdio.h>
+int close_stream (FILE *stream);
diff --git a/parted-1.8.7/lib/closeout.c b/parted-1.8.7/lib/closeout.c
new file mode 100644
index 0000000..830f16f
--- /dev/null
+++ b/parted-1.8.7/lib/closeout.c
@@ -0,0 +1,86 @@
+/* Close standard output and standard error, exiting with a diagnostic on error.
+
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include "closeout.h"
+
+#include <errno.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;
+}
+
+/* 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)
+ {
+ 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/parted-1.8.7/lib/closeout.h b/parted-1.8.7/lib/closeout.h
new file mode 100644
index 0000000..8bed23b
--- /dev/null
+++ b/parted-1.8.7/lib/closeout.h
@@ -0,0 +1,33 @@
+/* Close standard output and standard error.
+
+ Copyright (C) 1998, 2000, 2003, 2004, 2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef CLOSEOUT_H
+# define CLOSEOUT_H 1
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+void close_stdout_set_file_name (const char *file);
+void close_stdout (void);
+
+# ifdef __cplusplus
+}
+# endif
+
+#endif
diff --git a/parted-1.8.7/lib/config.charset b/parted-1.8.7/lib/config.charset
new file mode 100755
index 0000000..148ea44
--- /dev/null
+++ b/parted-1.8.7/lib/config.charset
@@ -0,0 +1,639 @@
+#! /bin/sh
+# Output a system dependent table of character encoding aliases.
+#
+# Copyright (C) 2000-2004, 2006 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, 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
+# ISO-8859-1 Y glibc aix hpux irix osf solaris freebsd netbsd darwin
+# ISO-8859-2 Y glibc aix hpux irix osf solaris freebsd netbsd darwin
+# ISO-8859-3 Y glibc solaris
+# ISO-8859-4 Y osf solaris freebsd netbsd darwin
+# ISO-8859-5 Y glibc aix hpux irix osf solaris freebsd netbsd darwin
+# ISO-8859-6 Y glibc aix hpux solaris
+# ISO-8859-7 Y glibc aix hpux irix osf solaris netbsd darwin
+# ISO-8859-8 Y glibc aix hpux osf solaris
+# ISO-8859-9 Y glibc aix hpux irix osf solaris darwin
+# ISO-8859-13 glibc netbsd darwin
+# ISO-8859-14 glibc
+# ISO-8859-15 glibc aix osf solaris freebsd darwin
+# KOI8-R Y glibc solaris freebsd netbsd darwin
+# KOI8-U Y glibc freebsd netbsd darwin
+# 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 darwin dos
+# CP869 dos
+# CP874 woe32 dos
+# CP922 aix
+# CP932 aix woe32 dos
+# CP943 aix
+# CP949 osf woe32 dos
+# CP950 woe32 dos
+# CP1046 aix
+# CP1124 aix
+# CP1125 dos
+# CP1129 aix
+# CP1250 woe32
+# CP1251 glibc solaris netbsd darwin 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
+# EUC-TW glibc aix hpux irix osf solaris netbsd
+# BIG5 Y glibc aix hpux osf solaris freebsd netbsd darwin
+# BIG5-HKSCS glibc solaris
+# GBK glibc aix osf solaris woe32 dos
+# GB18030 glibc solaris netbsd
+# SHIFT_JIS Y hpux osf solaris freebsd netbsd darwin
+# JOHAB glibc solaris woe32
+# TIS-620 glibc aix hpux osf solaris
+# VISCII Y glibc
+# TCVN5712-1 glibc
+# GEORGIAN-PS 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
+#
+# 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"
+ ;;
+ 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 it 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.
+ echo "* UTF-8"
+ ;;
+ beos*)
+ # BeOS has 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/parted-1.8.7/lib/config.h.in b/parted-1.8.7/lib/config.h.in
new file mode 100644
index 0000000..b222d24
--- /dev/null
+++ b/parted-1.8.7/lib/config.h.in
@@ -0,0 +1,604 @@
+/* lib/config.h.in. Generated from configure.ac by autoheader. */
+
+/* Define this to an absolute name of <inttypes.h>. */
+#undef ABSOLUTE_INTTYPES_H
+
+/* Define this to an absolute name of <stdint.h>. */
+#undef ABSOLUTE_STDINT_H
+
+/* Define this to an absolute name of <stdlib.h>. */
+#undef ABSOLUTE_STDLIB_H
+
+/* Define this to an absolute name of <string.h>. */
+#undef ABSOLUTE_STRING_H
+
+/* Define this to an absolute name of <unistd.h>. */
+#undef ABSOLUTE_UNISTD_H
+
+/* Define this to an absolute name of <wchar.h>. */
+#undef ABSOLUTE_WCHAR_H
+
+/* Define this to an absolute name of <wctype.h>. */
+#undef ABSOLUTE_WCTYPE_H
+
+/* 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
+
+/* Include file system support. i.e. libparted/fs_... */
+#undef ENABLE_FS
+
+/* 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 on systems for which file names may have a so-called `drive letter'
+ prefix, define this to compute the length of that prefix, including the
+ colon. */
+#undef FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX
+
+/* Define if the backslash character may also serve as a file name component
+ separator. */
+#undef FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR
+
+/* Define if a drive letter prefix denotes a relative path if it is not
+ followed by a file name component separator. */
+#undef FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
+
+/* Define to 1 when using the gnulib module close-stream. */
+#undef GNULIB_CLOSE_STREAM
+
+/* Define to 1 if you have 'alloca' after including <alloca.h>, a header that
+ may be supplied by this distribution. */
+#undef HAVE_ALLOCA
+
+/* Define HAVE_ALLOCA_H for backward compatibility with older code that
+ includes <alloca.h> only if HAVE_ALLOCA_H is defined. */
+#undef HAVE_ALLOCA_H
+
+/* Define to 1 if you have the `atexit' function. */
+#undef HAVE_ATEXIT
+
+/* Has backtrace support */
+#undef HAVE_BACKTRACE
+
+/* Define to 1 if you have the <bp-sym.h> header file. */
+#undef HAVE_BP_SYM_H
+
+/* Define to 1 if your system has a GNU libc compatible `calloc' function, and
+ to 0 otherwise. */
+#undef HAVE_CALLOC
+
+/* Define to 1 if you have the `canonicalize_file_name' function. */
+#undef HAVE_CANONICALIZE_FILE_NAME
+
+/* 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 `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 `imaxabs', and to 0 if you
+ don't. */
+#undef HAVE_DECL_IMAXABS
+
+/* Define to 1 if you have the declaration of `imaxdiv', and to 0 if you
+ don't. */
+#undef HAVE_DECL_IMAXDIV
+
+/* 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 `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 `strtoimax', and to 0 if you
+ don't. */
+#undef HAVE_DECL_STRTOIMAX
+
+/* Define to 1 if you have the declaration of `strtoumax', and to 0 if you
+ don't. */
+#undef HAVE_DECL_STRTOUMAX
+
+/* 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 <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 if the GNU gettext() function is already present or preinstalled. */
+#undef HAVE_GETTEXT
+
+/* 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 `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 `parted' library (-lparted). */
+#undef HAVE_LIBPARTED
+
+/* have readline */
+#undef HAVE_LIBREADLINE
+
+/* Have libreiserfs */
+#undef HAVE_LIBREISERFS
+
+/* Define to 1 if you have the <locale.h> header file. */
+#undef HAVE_LOCALE_H
+
+/* Define to 1 if the system has the type `long long int'. */
+#undef HAVE_LONG_LONG_INT
+
+/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
+ to 0 otherwise. */
+#undef HAVE_MALLOC
+
+/* 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 `memchr' function. */
+#undef HAVE_MEMCHR
+
+/* Define to 1 if you have the `memcpy' function. */
+#undef HAVE_MEMCPY
+
+/* Define to 1 if you have the `memmove' function. */
+#undef HAVE_MEMMOVE
+
+/* Define to 1 if you have the <memory.h> header file. */
+#undef HAVE_MEMORY_H
+
+/* Define to 1 if you have the `memset' function. */
+#undef HAVE_MEMSET
+
+/* 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 your system has a GNU libc compatible `realloc' function,
+ and to 0 otherwise. */
+#undef HAVE_REALLOC
+
+/* 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 `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 stdbool.h conforms to C99. */
+#undef HAVE_STDBOOL_H
+
+/* 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 `strcspn' function. */
+#undef HAVE_STRCSPN
+
+/* 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 if you have the strndup() function and it works. */
+#undef HAVE_STRNDUP
+
+/* Define to 1 if you have the `strtol' function. */
+#undef HAVE_STRTOL
+
+/* Define if struct utimbuf is declared -- usually in <utime.h>. Some systems
+ have utime.h but don't declare the struct anywhere. */
+#undef HAVE_STRUCT_UTIMBUF
+
+/* 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/stat.h> header file. */
+#undef HAVE_SYS_STAT_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 <unistd.h> header file. */
+#undef HAVE_UNISTD_H
+
+/* Define to 1 if the system has the type `unsigned long long int'. */
+#undef HAVE_UNSIGNED_LONG_LONG_INT
+
+/* Define if utimes accepts a null argument */
+#undef HAVE_UTIMES_NULL
+
+/* Define to 1 if you have the <utime.h> header file. */
+#undef HAVE_UTIME_H
+
+/* Define to 1 if `utime(file, NULL)' sets file's timestamp to the present. */
+#undef HAVE_UTIME_NULL
+
+/* Define to 1 if you have the <wchar.h> header file. */
+#undef HAVE_WCHAR_H
+
+/* 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 <wctype.h> header file. */
+#undef HAVE_WCTYPE_H
+
+/* Define if you have the 'wint_t' type. */
+#undef HAVE_WINT_T
+
+/* Define to 1 if the system has the type `_Bool'. */
+#undef HAVE__BOOL
+
+/* Define to 1 if you have the `__fpending' function. */
+#undef HAVE___FPENDING
+
+/* Extract low level special HFS(+) files for debugging purposes when using
+ the "check" command (NOT FOR PACKAGING) */
+#undef HFS_EXTRACT_FS
+
+#if FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR
+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+#else
+# define ISSLASH(C) ((C) == '/')
+#endif
+
+/* 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
+
+/* 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
+
+/* 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 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 l, ll, u, ul, ull, etc., as suitable for constants of type
+ 'ptrdiff_t'. */
+#undef PTRDIFF_T_SUFFIX
+
+/* Disable all writing code */
+#undef READ_ONLY
+
+/* Define if rename does not work for source file names with a trailing slash,
+ like the one from SunOS 4.1.1_U1. */
+#undef RENAME_TRAILING_SLASH_BUG
+
+/* 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 you have the ANSI C header files. */
+#undef STDC_HEADERS
+
+/* Define to 1 if strerror_r returns char *. */
+#undef STRERROR_R_CHAR_P
+
+/* Version number of package */
+#undef VERSION
+
+/* 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 to 1 if your processor stores words with the most significant byte
+ first (like Motorola and SPARC, unlike Intel and VAX). */
+#undef WORDS_BIGENDIAN
+
+/* Define to 1 if on AIX 3.
+ System headers sometimes define this.
+ We just want to avoid a redefinition error message. */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+
+/* Number of bits in a file offset, on hosts where this is settable. */
+#undef _FILE_OFFSET_BITS
+
+/* Enable GNU extensions on systems that have them. */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+
+/* 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
+
+/* Enable extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+
+/* Define to rpl_ if the getopt replacement functions and variables should be
+ used. */
+#undef __GETOPT_PREFIX
+
+/* Define to rpl_calloc if the replacement function should be used. */
+#undef calloc
+
+/* Define to empty if `const' does not conform to ANSI C. */
+#undef const
+
+/* Define to rpl_free if the replacement function should be used. */
+#undef free
+
+/* A replacement for va_copy, if needed. */
+#define gl_va_copy(a,b) ((a) = (b))
+
+/* 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
+
+/* Define to rpl_malloc if the replacement function should be used. */
+#undef malloc
+
+/* Define to a type if <wchar.h> does not define. */
+#undef mbstate_t
+
+/* Define to rpl_memcmp if the replacement function should be used. */
+#undef memcmp
+
+/* 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_realloc if the replacement function should be used. */
+#undef realloc
+
+/* 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 rpl_rename if the replacement function should be used. */
+#undef rename
+
+/* Define to equivalent of C99 restrict keyword, or to nothing if this is not
+ supported. Do not define if restrict is supported directly. */
+#undef restrict
+
+/* 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 to rpl_strnlen if the replacement function should be used. */
+#undef strnlen
+
+/* Define to rpl_strtod if the replacement function should be used. */
+#undef strtod
+
+/* Define to rpl_utime if the replacement function should be used. */
+#undef utime
+
+/* Define as a macro for copying va_list variables. */
+#undef va_copy
diff --git a/parted-1.8.7/lib/dirname.c b/parted-1.8.7/lib/dirname.c
new file mode 100644
index 0000000..16552c6
--- /dev/null
+++ b/parted-1.8.7/lib/dirname.c
@@ -0,0 +1,85 @@
+/* dirname.c -- return all but the last element in a file name
+
+ Copyright (C) 1990, 1998, 2000, 2001, 2003, 2004, 2005, 2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include "dirname.h"
+
+#include <string.h>
+#include "xalloc.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 xmalloc.
+ Works properly even if there are trailing slashes (by effectively
+ ignoring them). Unlike POSIX dirname(), FILE cannot be NULL.
+
+ 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 *
+dir_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 = xmalloc (length + append_dot + 1);
+ memcpy (dir, file, length);
+ if (append_dot)
+ dir[length++] = '.';
+ dir[length] = '\0';
+ return dir;
+}
diff --git a/parted-1.8.7/lib/dirname.h b/parted-1.8.7/lib/dirname.h
new file mode 100644
index 0000000..91e7ed3
--- /dev/null
+++ b/parted-1.8.7/lib/dirname.h
@@ -0,0 +1,70 @@
+/* Take file names apart into directory and base names.
+
+ Copyright (C) 1998, 2001, 2003-2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef DIRNAME_H_
+# define DIRNAME_H_ 1
+
+# include <stdbool.h>
+# include <stddef.h>
+
+# ifndef DIRECTORY_SEPARATOR
+# define DIRECTORY_SEPARATOR '/'
+# endif
+
+# ifndef ISSLASH
+# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR)
+# endif
+
+# ifndef FILE_SYSTEM_PREFIX_LEN
+# if FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX
+ /* 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)
+# else
+# define FILE_SYSTEM_PREFIX_LEN(Filename) 0
+# endif
+# endif
+
+# ifndef FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE
+# define FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE 0
+# endif
+
+# ifndef DOUBLE_SLASH_IS_DISTINCT_ROOT
+# define DOUBLE_SLASH_IS_DISTINCT_ROOT 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]) || 0 < FILE_SYSTEM_PREFIX_LEN (F))
+# endif
+# define IS_RELATIVE_FILE_NAME(F) (! IS_ABSOLUTE_FILE_NAME (F))
+
+char *base_name (char const *file);
+char *dir_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/parted-1.8.7/lib/error.c b/parted-1.8.7/lib/error.c
new file mode 100644
index 0000000..cf86343
--- /dev/null
+++ b/parted-1.8.7/lib/error.c
@@ -0,0 +1,338 @@
+/* Error handler for noninteractive utilities
+ Copyright (C) 1990-1998, 2000-2005, 2006 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 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* 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"
+#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 */
+
+# 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 */
+
+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
+
+ fflush (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
+}
+
+/* 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
+
+ fflush (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/parted-1.8.7/lib/error.h b/parted-1.8.7/lib/error.h
new file mode 100644
index 0000000..5a5f247
--- /dev/null
+++ b/parted-1.8.7/lib/error.h
@@ -0,0 +1,66 @@
+/* Declaration for error-reporting function
+ Copyright (C) 1995, 1996, 1997, 2003, 2006 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 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _ERROR_H
+#define _ERROR_H 1
+
+#ifndef __attribute__
+/* This feature is available in gcc versions 2.5 and later. */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__
+# define __attribute__(Spec) /* empty */
+# endif
+/* The __-protected variants of `format' and `printf' attributes
+ are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7)
+# define __format__ format
+# define __printf__ printf
+# endif
+#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, ...)
+ __attribute__ ((__format__ (__printf__, 3, 4)));
+
+extern void error_at_line (int __status, int __errnum, const char *__fname,
+ unsigned int __lineno, const char *__format, ...)
+ __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/parted-1.8.7/lib/exitfail.c b/parted-1.8.7/lib/exitfail.c
new file mode 100644
index 0000000..373d325
--- /dev/null
+++ b/parted-1.8.7/lib/exitfail.c
@@ -0,0 +1,26 @@
+/* Failure exit status
+
+ Copyright (C) 2002, 2003, 2005, 2006, 2007 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; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include "exitfail.h"
+
+#include <stdlib.h>
+
+int volatile exit_failure = EXIT_FAILURE;
diff --git a/parted-1.8.7/lib/exitfail.h b/parted-1.8.7/lib/exitfail.h
new file mode 100644
index 0000000..e46cf9c
--- /dev/null
+++ b/parted-1.8.7/lib/exitfail.h
@@ -0,0 +1,20 @@
+/* Failure exit status
+
+ Copyright (C) 2002 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; see the file COPYING.
+ If not, write to the Free Software Foundation,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+extern int volatile exit_failure;
diff --git a/parted-1.8.7/lib/free.c b/parted-1.8.7/lib/free.c
new file mode 100644
index 0000000..73a125a
--- /dev/null
+++ b/parted-1.8.7/lib/free.c
@@ -0,0 +1,31 @@
+/* Work around incompatibility on older systems where free (NULL) fails.
+
+ Copyright (C) 2003, 2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Paul Eggert */
+
+#include <config.h>
+#undef free
+
+#include <stdlib.h>
+
+void
+rpl_free (void *p)
+{
+ if (p)
+ free (p);
+}
diff --git a/parted-1.8.7/lib/full-write.c b/parted-1.8.7/lib/full-write.c
new file mode 100644
index 0000000..cc16872
--- /dev/null
+++ b/parted-1.8.7/lib/full-write.c
@@ -0,0 +1,81 @@
+/* An interface to read and write that retries (if necessary) until complete.
+
+ Copyright (C) 1993, 1994, 1997, 1998, 1999, 2000, 2001, 2002, 2003,
+ 2004, 2005, 2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+/* Specification. */
+#ifdef FULL_READ
+# include "full-read.h"
+#else
+# include "full-write.h"
+#endif
+
+#include <errno.h>
+
+#ifdef FULL_READ
+# include "safe-read.h"
+# define safe_rw safe_read
+# define full_rw full_read
+# undef const
+# define const /* empty */
+#else
+# include "safe-write.h"
+# define safe_rw safe_write
+# define full_rw full_write
+#endif
+
+#ifdef FULL_READ
+/* Set errno to zero upon EOF. */
+# define ZERO_BYTE_TRANSFER_ERRNO 0
+#else
+/* Some buggy drivers return 0 when one tries to write beyond
+ a device's end. (Example: Linux 1.2.13 on /dev/fd0.)
+ Set errno to ENOSPC so they get a sensible diagnostic. */
+# define ZERO_BYTE_TRANSFER_ERRNO ENOSPC
+#endif
+
+/* Write(read) COUNT bytes at BUF to(from) descriptor FD, retrying if
+ interrupted or if a partial write(read) occurs. Return the number
+ of bytes transferred.
+ When writing, set errno if fewer than COUNT bytes are written.
+ When reading, if fewer than COUNT bytes are read, you must examine
+ errno to distinguish failure from EOF (errno == 0). */
+size_t
+full_rw (int fd, const void *buf, size_t count)
+{
+ size_t total = 0;
+ const char *ptr = (const char *) buf;
+
+ while (count > 0)
+ {
+ size_t n_rw = safe_rw (fd, ptr, count);
+ if (n_rw == (size_t) -1)
+ break;
+ if (n_rw == 0)
+ {
+ errno = ZERO_BYTE_TRANSFER_ERRNO;
+ break;
+ }
+ total += n_rw;
+ ptr += n_rw;
+ count -= n_rw;
+ }
+
+ return total;
+}
diff --git a/parted-1.8.7/lib/full-write.h b/parted-1.8.7/lib/full-write.h
new file mode 100644
index 0000000..d20d2fe
--- /dev/null
+++ b/parted-1.8.7/lib/full-write.h
@@ -0,0 +1,35 @@
+/* An interface to write() that writes all it is asked to write.
+
+ Copyright (C) 2002-2003 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <stddef.h>
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+/* Write COUNT bytes at BUF to descriptor FD, retrying if interrupted
+ or if partial writes occur. Return the number of bytes successfully
+ written, setting errno if that is less than COUNT. */
+extern size_t full_write (int fd, const void *buf, size_t count);
+
+
+#ifdef __cplusplus
+}
+#endif
diff --git a/parted-1.8.7/lib/getopt.c b/parted-1.8.7/lib/getopt.c
new file mode 100644
index 0000000..3580ad8
--- /dev/null
+++ b/parted-1.8.7/lib/getopt.c
@@ -0,0 +1,1191 @@
+/* Getopt for GNU.
+ NOTE: getopt is now 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,88,89,90,91,92,93,94,95,96,98,99,2000,2001,2002,2003,2004,2006
+ 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 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _LIBC
+# include <config.h>
+#endif
+
+#include "getopt.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <unistd.h>
+
+#ifdef __VMS
+# include <unixlib.h>
+#endif
+
+#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
+
+#ifndef attribute_hidden
+# define attribute_hidden
+#endif
+
+/* Unlike standard Unix `getopt', functions like `getopt_long'
+ let the user 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 application's 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;
+
+
+#if defined HAVE_DECL_GETENV && !HAVE_DECL_GETENV
+extern char *getenv ();
+#endif
+
+#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, char **argv, const char *optstring,
+ int posixly_correct, struct _getopt_data *d)
+{
+ /* 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;
+}
+
+/* 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.
+
+ 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.
+
+ If POSIXLY_CORRECT is nonzero, behave as if the POSIXLY_CORRECT
+ environment variable were set. */
+
+int
+_getopt_internal_r (int argc, char **argv, const char *optstring,
+ const struct option *longopts, int *longind,
+ int long_only, int posixly_correct, struct _getopt_data *d)
+{
+ int print_errors = d->opterr;
+ if (optstring[0] == ':')
+ print_errors = 0;
+
+ 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,
+ posixly_correct, d);
+ d->__initialized = 1;
+ }
+
+ /* 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;
+ const struct option *p;
+ const struct option *pfound = NULL;
+ int exact = 0;
+ int ambig = 0;
+ int indfound = -1;
+ int option_index;
+
+ for (nameend = d->__nextchar; *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)
+ == (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. */
+ ambig = 1;
+ }
+
+ if (ambig && !exact)
+ {
+ if (print_errors)
+ {
+#if defined _LIBC && defined USE_IN_LIBIO
+ char *buf;
+
+ if (__asprintf (&buf, _("%s: option `%s' is ambiguous\n"),
+ argv[0], argv[d->optind]) >= 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' is ambiguous\n"),
+ argv[0], argv[d->optind]);
+#endif
+ }
+ d->__nextchar += strlen (d->__nextchar);
+ d->optind++;
+ d->optopt = 0;
+ return '?';
+ }
+
+ 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], argv[d->optind - 1]) >= 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], argv[d->optind - 1]);
+#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++;
+ 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 == ':')
+ {
+ if (print_errors)
+ {
+#if defined _LIBC && defined USE_IN_LIBIO
+ char *buf;
+ int n;
+#endif
+
+ if (d->__posixly_correct)
+ {
+ /* 1003.2 specifies the format of this message. */
+#if defined _LIBC && defined USE_IN_LIBIO
+ n = __asprintf (&buf, _("%s: illegal option -- %c\n"),
+ argv[0], c);
+#else
+ fprintf (stderr, _("%s: illegal option -- %c\n"), argv[0], c);
+#endif
+ }
+ else
+ {
+#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)
+ {
+ /* 1003.2 specifies the format of this message. */
+#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
+ /* 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], argv[d->optind]) >= 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], argv[d->optind]);
+#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 `%s' requires an argument\n"),
+ argv[0], argv[d->optind - 1]) >= 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], argv[d->optind - 1]);
+#endif
+ }
+ d->__nextchar += strlen (d->__nextchar);
+ 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;
+ }
+ 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)
+ {
+ /* 1003.2 specifies the format of this message. */
+#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, posixly_correct, &getopt_data);
+
+ 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, NULL, NULL, 0,
+ POSIXLY_CORRECT);
+}
+
+
+#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/parted-1.8.7/lib/getopt1.c b/parted-1.8.7/lib/getopt1.c
new file mode 100644
index 0000000..cc0746e
--- /dev/null
+++ b/parted-1.8.7/lib/getopt1.c
@@ -0,0 +1,171 @@
+/* getopt_long and getopt_long_only entry points for GNU getopt.
+ Copyright (C) 1987,88,89,90,91,92,93,94,96,97,98,2004,2006
+ 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 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#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, 0, d);
+}
+
+/* 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, 0, d);
+}
+
+
+#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 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/parted-1.8.7/lib/getopt_.h b/parted-1.8.7/lib/getopt_.h
new file mode 100644
index 0000000..615ef9a
--- /dev/null
+++ b/parted-1.8.7/lib/getopt_.h
@@ -0,0 +1,226 @@
+/* Declarations for getopt.
+ Copyright (C) 1989-1994,1996-1999,2001,2003,2004,2005,2006,2007
+ 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 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _GETOPT_H
+
+#ifndef __need_getopt
+# define _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. 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
+# include <stdlib.h>
+# include <stdio.h>
+# include <unistd.h>
+# undef __need_getopt
+# undef getopt
+# undef getopt_long
+# undef getopt_long_only
+# undef optarg
+# undef opterr
+# undef optind
+# undef optopt
+# 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)
+#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
+
+#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. */
+
+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;
+};
+
+/* 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;
+
+#ifndef __need_getopt
+extern int getopt_long (int ___argc, char *__getopt_argv_const *___argv,
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind)
+ __THROW;
+extern int getopt_long_only (int ___argc, char *__getopt_argv_const *___argv,
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind)
+ __THROW;
+
+#endif
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Make sure we later can get all the definitions and declarations. */
+#undef __need_getopt
+
+#endif /* getopt.h */
diff --git a/parted-1.8.7/lib/getopt_int.h b/parted-1.8.7/lib/getopt_int.h
new file mode 100644
index 0000000..401579f
--- /dev/null
+++ b/parted-1.8.7/lib/getopt_int.h
@@ -0,0 +1,131 @@
+/* Internal declarations for getopt.
+ Copyright (C) 1989-1994,1996-1999,2001,2003,2004
+ 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 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _GETOPT_INT_H
+#define _GETOPT_INT_H 1
+
+extern int _getopt_internal (int ___argc, char **___argv,
+ const char *__shortopts,
+ const struct option *__longopts, int *__longind,
+ int __long_only, int __posixly_correct);
+
+
+/* Reentrant versions which can handle parsing multiple argument
+ vectors at the same time. */
+
+/* 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;
+
+ /* 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
+ {
+ REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
+ } __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, int __posixly_correct,
+ struct _getopt_data *__data);
+
+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/parted-1.8.7/lib/gettext.h b/parted-1.8.7/lib/gettext.h
new file mode 100644
index 0000000..9d76ec9
--- /dev/null
+++ b/parted-1.8.7/lib/gettext.h
@@ -0,0 +1,270 @@
+/* Convenience header for conditional use of GNU <libintl.h>.
+ Copyright (C) 1995-1998, 2000-2002, 2004-2006 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, 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) || _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". */
+# define gettext(Msgid) ((const char *) (Msgid))
+# define dgettext(Domainname, Msgid) ((void) (Domainname), gettext (Msgid))
+# define dcgettext(Domainname, Msgid, Category) \
+ ((void) (Category), dgettext (Domainname, Msgid))
+# define ngettext(Msgid1, Msgid2, N) \
+ ((N) == 1 \
+ ? ((void) (Msgid2), (const char *) (Msgid1)) \
+ : ((void) (Msgid1), (const char *) (Msgid2)))
+# define dngettext(Domainname, Msgid1, Msgid2, N) \
+ ((void) (Domainname), ngettext (Msgid1, Msgid2, N))
+# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
+ ((void) (Category), dngettext(Domainname, Msgid1, Msgid2, N))
+# define textdomain(Domainname) ((const char *) (Domainname))
+# define bindtextdomain(Domainname, Dirname) \
+ ((void) (Domainname), (const char *) (Dirname))
+# define bind_textdomain_codeset(Domainname, Codeset) \
+ ((void) (Domainname), (const char *) (Codeset))
+
+#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/parted-1.8.7/lib/gnulib.mk b/parted-1.8.7/lib/gnulib.mk
new file mode 100644
index 0000000..6408020
--- /dev/null
+++ b/parted-1.8.7/lib/gnulib.mk
@@ -0,0 +1,787 @@
+## DO NOT EDIT! GENERATED AUTOMATICALLY!
+## Process this file with automake to produce Makefile.in.
+# Copyright (C) 2004-2007 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=libparted --source-base=lib --m4-base=m4 --doc-base=doc --aux-dir=build-aux --avoid=lock --avoid=size_max --avoid=xsize --avoid=canonicalize-lgpl --libtool --macro-prefix=gl alloca announce-gen assert atexit calloc closeout config-h configmake fdl free gettext gnupload inttypes lib-ignore long-options malloc memchr memcmp memcpy memmove memset realloc rename rpmatch safe-read stdbool strcspn strtod strtol utime version-etc-fsf
+
+AUTOMAKE_OPTIONS = 1.5 gnits
+
+noinst_HEADERS =
+noinst_LIBRARIES =
+noinst_LTLIBRARIES =
+EXTRA_DIST =
+BUILT_SOURCES =
+SUFFIXES =
+MOSTLYCLEANFILES = core *.stackdump
+MOSTLYCLEANDIRS =
+CLEANFILES =
+DISTCLEANFILES =
+MAINTAINERCLEANFILES =
+
+AM_CPPFLAGS =
+
+noinst_LTLIBRARIES += libparted.la
+
+libparted_la_SOURCES =
+libparted_la_LIBADD = $(gl_LTLIBOBJS)
+libparted_la_DEPENDENCIES = $(gl_LTLIBOBJS)
+EXTRA_libparted_la_SOURCES =
+libparted_la_LDFLAGS = $(AM_LDFLAGS)
+
+## begin gnulib module alloca
+
+
+EXTRA_DIST += alloca.c
+
+EXTRA_libparted_la_SOURCES += alloca.c
+
+libparted_la_LIBADD += @LTALLOCA@
+libparted_la_DEPENDENCIES += @LTALLOCA@
+## 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.
+alloca.h: alloca_.h
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ cat $(srcdir)/alloca_.h; \
+ } > $@-t
+ mv -f $@-t $@
+MOSTLYCLEANFILES += alloca.h alloca.h-t
+
+EXTRA_DIST += alloca_.h
+
+## end gnulib module alloca-opt
+
+## begin gnulib module atexit
+
+
+EXTRA_DIST += atexit.c
+
+EXTRA_libparted_la_SOURCES += atexit.c
+
+## end gnulib module atexit
+
+## begin gnulib module calloc
+
+
+EXTRA_DIST += calloc.c
+
+EXTRA_libparted_la_SOURCES += calloc.c
+
+## end gnulib module calloc
+
+## begin gnulib module close-stream
+
+
+EXTRA_DIST += close-stream.c close-stream.h
+
+EXTRA_libparted_la_SOURCES += close-stream.c
+
+## end gnulib module close-stream
+
+## begin gnulib module closeout
+
+
+EXTRA_DIST += closeout.c closeout.h
+
+EXTRA_libparted_la_SOURCES += closeout.c
+
+## end gnulib module closeout
+
+## begin gnulib module configmake
+
+# Retrieve values of the variables through 'configure' followed by
+# 'make', not directly through 'configure', so that a user who
+# sets some of these variables consistently on the 'make' command
+# line gets correct results.
+#
+# One advantage of this approach, compared to the classical
+# approach of adding -DLIBDIR=\"$(libdir)\" etc. to AM_CPPFLAGS,
+# is that it protects against the use of undefined variables.
+# If, say, $(libdir) is not set in the Makefile, LIBDIR is not
+# defined by this module, and code using LIBDIR gives a
+# compilation error.
+#
+# Another advantage is that 'make' output is shorter.
+#
+# Listed in the same order as the GNU makefile conventions.
+# The Automake-defined pkg* macros are appended, in the order
+# listed in the Automake 1.10a+ documentation.
+configmake.h: Makefile
+ 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
+ mv $@-t $@
+BUILT_SOURCES += configmake.h
+CLEANFILES += configmake.h configmake.h-t
+
+## end gnulib module configmake
+
+## begin gnulib module dirname
+
+
+EXTRA_DIST += basename.c dirname.c dirname.h stripslash.c
+
+EXTRA_libparted_la_SOURCES += basename.c dirname.c stripslash.c
+
+## end gnulib module dirname
+
+## begin gnulib module error
+
+
+EXTRA_DIST += error.c error.h
+
+EXTRA_libparted_la_SOURCES += error.c
+
+## end gnulib module error
+
+## begin gnulib module exitfail
+
+
+EXTRA_DIST += exitfail.c exitfail.h
+
+EXTRA_libparted_la_SOURCES += exitfail.c
+
+## end gnulib module exitfail
+
+## begin gnulib module fpending
+
+
+EXTRA_DIST += __fpending.c __fpending.h
+
+EXTRA_libparted_la_SOURCES += __fpending.c
+
+## end gnulib module fpending
+
+## begin gnulib module free
+
+
+EXTRA_DIST += free.c
+
+EXTRA_libparted_la_SOURCES += free.c
+
+## end gnulib module free
+
+## begin gnulib module full-write
+
+libparted_la_SOURCES += full-write.h full-write.c
+
+## end gnulib module full-write
+
+## begin gnulib module getopt
+
+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_.h
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ cat $(srcdir)/getopt_.h; \
+ } > $@-t
+ mv -f $@-t $@
+MOSTLYCLEANFILES += getopt.h getopt.h-t
+
+EXTRA_DIST += getopt.c getopt1.c getopt_.h getopt_int.h
+
+EXTRA_libparted_la_SOURCES += getopt.c getopt1.c
+
+## end gnulib module getopt
+
+## begin gnulib module gettext
+
+# This is for those projects which use "gettextize --intl" to put a source-code
+# copy of libintl into their package. In such projects, every Makefile.am needs
+# -I$(top_builddir)/intl, so that <libintl.h> can be found in this directory.
+# For the Makefile.ams in other directories it is the maintainer's
+# responsibility; for the one from gnulib we do it here.
+# This option has no effect when the user disables NLS (because then the intl
+# directory contains no libintl.h file) or when the project does not use
+# "gettextize --intl".
+#AM_CPPFLAGS += -I$(top_builddir)/intl
+
+## end gnulib module gettext
+
+## begin gnulib module gettext-h
+
+libparted_la_SOURCES += gettext.h
+
+## end gnulib module gettext-h
+
+## begin gnulib module inttypes
+
+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_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE_INTTYPES_H''@/$(HAVE_INTTYPES_H)/g' \
+ -e 's|@''ABSOLUTE_INTTYPES_H''@|$(ABSOLUTE_INTTYPES_H)|g' \
+ -e 's/@''PRI_MACROS_BROKEN''@/$(PRI_MACROS_BROKEN)/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 '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/inttypes_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += inttypes.h inttypes.h-t
+
+EXTRA_DIST += inttypes_.h
+
+## end gnulib module inttypes
+
+## begin gnulib module link-warning
+
+LINK_WARNING_H=$(top_srcdir)/build-aux/link-warning.h
+
+## end gnulib module link-warning
+
+## begin gnulib module localcharset
+
+libparted_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: all-local
+ test $(GLIBC21) != no || $(mkinstalldirs) $(DESTDIR)$(libdir)
+ 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 test $(GLIBC21) = no; then \
+ sed -f ref-add.sed charset.alias > $(charset_tmp) ; \
+ $(INSTALL_DATA) $(charset_tmp) $(charset_alias) ; \
+ rm -f $(charset_tmp) ; \
+ fi ; \
+ fi
+
+uninstall-local: 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
+ rm -f t-$@ $@
+ $(SHELL) $(srcdir)/config.charset '$(host)' > t-$@
+ mv t-$@ $@
+
+SUFFIXES += .sed .sin
+.sin.sed:
+ 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 long-options
+
+
+EXTRA_DIST += long-options.c long-options.h
+
+EXTRA_libparted_la_SOURCES += long-options.c
+
+## end gnulib module long-options
+
+## begin gnulib module malloc
+
+
+EXTRA_DIST += malloc.c
+
+EXTRA_libparted_la_SOURCES += malloc.c
+
+## end gnulib module malloc
+
+## begin gnulib module memchr
+
+
+EXTRA_DIST += memchr.c
+
+EXTRA_libparted_la_SOURCES += memchr.c
+
+## end gnulib module memchr
+
+## begin gnulib module memcmp
+
+
+EXTRA_DIST += memcmp.c
+
+EXTRA_libparted_la_SOURCES += memcmp.c
+
+## end gnulib module memcmp
+
+## begin gnulib module memcpy
+
+
+EXTRA_DIST += memcpy.c
+
+EXTRA_libparted_la_SOURCES += memcpy.c
+
+## end gnulib module memcpy
+
+## begin gnulib module memmove
+
+
+EXTRA_DIST += memmove.c
+
+EXTRA_libparted_la_SOURCES += memmove.c
+
+## end gnulib module memmove
+
+## begin gnulib module memset
+
+
+EXTRA_DIST += memset.c
+
+EXTRA_libparted_la_SOURCES += memset.c
+
+## end gnulib module memset
+
+## begin gnulib module quotearg
+
+
+EXTRA_DIST += quotearg.c quotearg.h
+
+EXTRA_libparted_la_SOURCES += quotearg.c
+
+## end gnulib module quotearg
+
+## begin gnulib module realloc
+
+
+EXTRA_DIST += realloc.c
+
+EXTRA_libparted_la_SOURCES += realloc.c
+
+## end gnulib module realloc
+
+## begin gnulib module regex
+
+
+EXTRA_DIST += regcomp.c regex.c regex.h regex_internal.c regex_internal.h regexec.c
+
+EXTRA_libparted_la_SOURCES += regcomp.c regex.c regex_internal.c regexec.c
+
+## end gnulib module regex
+
+## begin gnulib module rename
+
+
+EXTRA_DIST += rename.c
+
+EXTRA_libparted_la_SOURCES += rename.c
+
+## end gnulib module rename
+
+## begin gnulib module rpmatch
+
+
+EXTRA_DIST += rpmatch.c
+
+EXTRA_libparted_la_SOURCES += rpmatch.c
+
+## end gnulib module rpmatch
+
+## begin gnulib module safe-read
+
+
+EXTRA_DIST += safe-read.c safe-read.h
+
+EXTRA_libparted_la_SOURCES += safe-read.c
+
+## end gnulib module safe-read
+
+## begin gnulib module safe-write
+
+
+EXTRA_DIST += safe-write.c safe-write.h
+
+EXTRA_libparted_la_SOURCES += safe-write.c
+
+## end gnulib module safe-write
+
+## 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.
+stdbool.h: stdbool_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE__BOOL''@/$(HAVE__BOOL)/g' < $(srcdir)/stdbool_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += stdbool.h stdbool.h-t
+
+EXTRA_DIST += stdbool_.h
+
+## end gnulib module stdbool
+
+## 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.
+stdint.h: stdint_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE_STDINT_H''@/$(HAVE_STDINT_H)/g' \
+ -e 's|@''ABSOLUTE_STDINT_H''@|$(ABSOLUTE_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_LONG_LONG_INT''@/$(HAVE_LONG_LONG_INT)/g' \
+ -e 's/@''HAVE_UNSIGNED_LONG_LONG_INT''@/$(HAVE_UNSIGNED_LONG_LONG_INT)/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_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += stdint.h stdint.h-t
+
+EXTRA_DIST += stdint_.h
+
+## end gnulib module stdint
+
+## 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_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''ABSOLUTE_STDLIB_H''@|$(ABSOLUTE_STDLIB_H)|g' \
+ -e 's|@''GNULIB_GETSUBOPT''@|$(GNULIB_GETSUBOPT)|g' \
+ -e 's|@''GNULIB_MKDTEMP''@|$(GNULIB_MKDTEMP)|g' \
+ -e 's|@''GNULIB_MKSTEMP''@|$(GNULIB_MKSTEMP)|g' \
+ -e 's|@''HAVE_GETSUBOPT''@|$(HAVE_GETSUBOPT)|g' \
+ -e 's|@''HAVE_MKDTEMP''@|$(HAVE_MKDTEMP)|g' \
+ -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
+ -e '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/stdlib_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += stdlib.h stdlib.h-t
+
+EXTRA_DIST += stdlib_.h
+
+## end gnulib module stdlib
+
+## begin gnulib module strcspn
+
+
+EXTRA_DIST += strcspn.c
+
+EXTRA_libparted_la_SOURCES += strcspn.c
+
+## end gnulib module strcspn
+
+## 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_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */' && \
+ sed -e 's|@''ABSOLUTE_STRING_H''@|$(ABSOLUTE_STRING_H)|g' \
+ -e 's|@''GNULIB_MBSLEN''@|$(GNULIB_MBSLEN)|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_MEMMEM''@|$(GNULIB_MEMMEM)|g' \
+ -e 's|@''GNULIB_MEMPCPY''@|$(GNULIB_MEMPCPY)|g' \
+ -e 's|@''GNULIB_MEMRCHR''@|$(GNULIB_MEMRCHR)|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_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_STRCASESTR''@|$(GNULIB_STRCASESTR)|g' \
+ -e 's|@''GNULIB_STRTOK_R''@|$(GNULIB_STRTOK_R)|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_STPCPY''@|$(HAVE_STPCPY)|g' \
+ -e 's|@''HAVE_STPNCPY''@|$(HAVE_STPNCPY)|g' \
+ -e 's|@''HAVE_STRCASECMP''@|$(HAVE_STRCASECMP)|g' \
+ -e 's|@''HAVE_DECL_STRNCASECMP''@|$(HAVE_DECL_STRNCASECMP)|g' \
+ -e 's|@''HAVE_STRCHRNUL''@|$(HAVE_STRCHRNUL)|g' \
+ -e 's|@''HAVE_DECL_STRDUP''@|$(HAVE_DECL_STRDUP)|g' \
+ -e 's|@''HAVE_STRNDUP''@|$(HAVE_STRNDUP)|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 '/definition of GL_LINK_WARNING/r $(LINK_WARNING_H)' \
+ < $(srcdir)/string_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += string.h string.h-t
+
+EXTRA_DIST += string_.h
+
+## end gnulib module string
+
+## begin gnulib module strndup
+
+
+EXTRA_DIST += strndup.c
+
+EXTRA_libparted_la_SOURCES += strndup.c
+
+## end gnulib module strndup
+
+## begin gnulib module strnlen
+
+
+EXTRA_DIST += strnlen.c
+
+EXTRA_libparted_la_SOURCES += strnlen.c
+
+## end gnulib module strnlen
+
+## begin gnulib module strtod
+
+LIBS += $(POW_LIB)
+
+EXTRA_DIST += strtod.c
+
+EXTRA_libparted_la_SOURCES += strtod.c
+
+## end gnulib module strtod
+
+## begin gnulib module strtol
+
+
+EXTRA_DIST += strtol.c
+
+EXTRA_libparted_la_SOURCES += strtol.c
+
+## end gnulib module strtol
+
+## 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_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''HAVE_UNISTD_H''@|$(HAVE_UNISTD_H)|g' \
+ -e 's|@''ABSOLUTE_UNISTD_H''@|$(ABSOLUTE_UNISTD_H)|g' \
+ -e 's|@''GNULIB_CHOWN''@|$(GNULIB_CHOWN)|g' \
+ -e 's|@''GNULIB_DUP2''@|$(GNULIB_DUP2)|g' \
+ -e 's|@''GNULIB_FCHDIR''@|$(GNULIB_FCHDIR)|g' \
+ -e 's|@''GNULIB_FTRUNCATE''@|$(GNULIB_FTRUNCATE)|g' \
+ -e 's|@''GNULIB_GETCWD''@|$(GNULIB_GETCWD)|g' \
+ -e 's|@''GNULIB_GETLOGIN_R''@|$(GNULIB_GETLOGIN_R)|g' \
+ -e 's|@''GNULIB_READLINK''@|$(GNULIB_READLINK)|g' \
+ -e 's|@''GNULIB_SLEEP''@|$(GNULIB_SLEEP)|g' \
+ -e 's|@''HAVE_DUP2''@|$(HAVE_DUP2)|g' \
+ -e 's|@''HAVE_FTRUNCATE''@|$(HAVE_FTRUNCATE)|g' \
+ -e 's|@''HAVE_READLINK''@|$(HAVE_READLINK)|g' \
+ -e 's|@''HAVE_SLEEP''@|$(HAVE_SLEEP)|g' \
+ -e 's|@''HAVE_DECL_GETLOGIN_R''@|$(HAVE_DECL_GETLOGIN_R)|g' \
+ -e 's|@''REPLACE_CHOWN''@|$(REPLACE_CHOWN)|g' \
+ -e 's|@''REPLACE_FCHDIR''@|$(REPLACE_FCHDIR)|g' \
+ -e 's|@''REPLACE_GETCWD''@|$(REPLACE_GETCWD)|g' \
+ < $(srcdir)/unistd_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += unistd.h unistd.h-t
+
+EXTRA_DIST += unistd_.h
+
+## end gnulib module unistd
+
+## begin gnulib module utime
+
+
+EXTRA_DIST += utime.c
+
+EXTRA_libparted_la_SOURCES += utime.c
+
+## end gnulib module utime
+
+## begin gnulib module version-etc
+
+libparted_la_SOURCES += version-etc.h version-etc.c
+
+## end gnulib module version-etc
+
+## begin gnulib module version-etc-fsf
+
+libparted_la_SOURCES += version-etc-fsf.c
+
+## end gnulib module version-etc-fsf
+
+## 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_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's|@''ABSOLUTE_WCHAR_H''@|$(ABSOLUTE_WCHAR_H)|g' \
+ < $(srcdir)/wchar_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += wchar.h wchar.h-t
+
+EXTRA_DIST += wchar_.h
+
+## end gnulib module wchar
+
+## begin gnulib module wctype
+
+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_.h
+ rm -f $@-t $@
+ { echo '/* DO NOT EDIT! GENERATED AUTOMATICALLY! */'; \
+ sed -e 's/@''HAVE_WCTYPE_H''@/$(HAVE_WCTYPE_H)/g' \
+ -e 's|@''ABSOLUTE_WCTYPE_H''@|$(ABSOLUTE_WCTYPE_H)|g' \
+ -e 's/@''HAVE_ISWCNTRL''@/$(HAVE_ISWCNTRL)/g' \
+ -e 's/@''HAVE_WINT_T''@/$(HAVE_WINT_T)/g' \
+ < $(srcdir)/wctype_.h; \
+ } > $@-t
+ mv $@-t $@
+MOSTLYCLEANFILES += wctype.h wctype.h-t
+
+EXTRA_DIST += wctype_.h
+
+## end gnulib module wctype
+
+## begin gnulib module xalloc
+
+
+EXTRA_DIST += xalloc.h xmalloc.c
+
+EXTRA_libparted_la_SOURCES += xmalloc.c
+
+## end gnulib module xalloc
+
+## begin gnulib module xalloc-die
+
+libparted_la_SOURCES += xalloc-die.c
+
+## end gnulib module xalloc-die
+
+## begin gnulib module xstrndup
+
+libparted_la_SOURCES += xstrndup.h xstrndup.c
+
+## end gnulib module xstrndup
+
+
+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/parted-1.8.7/lib/inttypes_.h b/parted-1.8.7/lib/inttypes_.h
new file mode 100644
index 0000000..fcf95b0
--- /dev/null
+++ b/parted-1.8.7/lib/inttypes_.h
@@ -0,0 +1,1099 @@
+/* Copyright (C) 2006-2007 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 Lesser General Public License as published by
+ the Free Software Foundation; either version 2.1, or (at your option)
+ any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU Lesser 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 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. */
+#if ! defined INTTYPES_H || defined _GL_JUST_INCLUDE_ABSOLUTE_INTTYPES_H
+# if @HAVE_INTTYPES_H@
+# if defined __DECC && __DECC_VER >= 60000000
+# include_next <inttypes.h>
+# else
+# include @ABSOLUTE_INTTYPES_H@
+# endif
+# endif
+#endif
+
+#if ! defined INTTYPES_H && ! defined _GL_JUST_INCLUDE_ABSOLUTE_INTTYPES_H
+#define INTTYPES_H
+
+/*
+ * ISO C 99 <inttypes.h> for platforms that lack it.
+ * <http://www.opengroup.org/susv3xbd/inttypes.h.html>
+ */
+
+/* Include <stdint.h> or the gnulib replacement. */
+#include <stdint.h>
+/* 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_LINK_WARNING 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 INT64_MAX == 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 UINT64_MAX == 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 INTMAX_MAX > INT32_MAX
+# define PRIdMAX PRId64
+# else
+# define PRIdMAX "ld"
+# endif
+# endif
+# if !defined PRIiMAX || @PRI_MACROS_BROKEN@
+# undef PRIiMAX
+# if INTMAX_MAX > INT32_MAX
+# define PRIiMAX PRIi64
+# else
+# define PRIiMAX "li"
+# endif
+# endif
+# if !defined PRIoMAX || @PRI_MACROS_BROKEN@
+# undef PRIoMAX
+# if UINTMAX_MAX > UINT32_MAX
+# define PRIoMAX PRIo64
+# else
+# define PRIoMAX "lo"
+# endif
+# endif
+# if !defined PRIuMAX || @PRI_MACROS_BROKEN@
+# undef PRIuMAX
+# if UINTMAX_MAX > UINT32_MAX
+# define PRIuMAX PRIu64
+# else
+# define PRIuMAX "lu"
+# endif
+# endif
+# if !defined PRIxMAX || @PRI_MACROS_BROKEN@
+# undef PRIxMAX
+# if UINTMAX_MAX > UINT32_MAX
+# define PRIxMAX PRIx64
+# else
+# define PRIxMAX "lx"
+# endif
+# endif
+# if !defined PRIXMAX || @PRI_MACROS_BROKEN@
+# undef PRIXMAX
+# if UINTMAX_MAX > UINT32_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 INT64_MAX == 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 UINT64_MAX == 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 INTMAX_MAX > INT32_MAX
+# define SCNdMAX SCNd64
+# else
+# define SCNdMAX "ld"
+# endif
+# endif
+# if !defined SCNiMAX || @PRI_MACROS_BROKEN@
+# undef SCNiMAX
+# if INTMAX_MAX > INT32_MAX
+# define SCNiMAX SCNi64
+# else
+# define SCNiMAX "li"
+# endif
+# endif
+# if !defined SCNoMAX || @PRI_MACROS_BROKEN@
+# undef SCNoMAX
+# if UINTMAX_MAX > UINT32_MAX
+# define SCNoMAX SCNo64
+# else
+# define SCNoMAX "lo"
+# endif
+# endif
+# if !defined SCNuMAX || @PRI_MACROS_BROKEN@
+# undef SCNuMAX
+# if UINTMAX_MAX > UINT32_MAX
+# define SCNuMAX SCNu64
+# else
+# define SCNuMAX "lu"
+# endif
+# endif
+# if !defined SCNxMAX || @PRI_MACROS_BROKEN@
+# undef SCNxMAX
+# if UINTMAX_MAX > UINT32_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
+# define imaxabs(a) \
+ (GL_LINK_WARNING ("imaxabs is unportable - " \
+ "use gnulib module imaxabs for portability"), \
+ imaxabs (a))
+#endif
+
+#if @GNULIB_IMAXDIV@
+# if !@HAVE_DECL_IMAXDIV@
+typedef struct { intmax_t quot; intmax_t rem; } imaxdiv_t;
+extern imaxdiv_t imaxdiv (intmax_t, intmax_t);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef imaxdiv
+# define imaxdiv(a,b) \
+ (GL_LINK_WARNING ("imaxdiv is unportable - " \
+ "use gnulib module imaxdiv for portability"), \
+ imaxdiv (a, b))
+#endif
+
+#if @GNULIB_STRTOIMAX@
+# if !@HAVE_DECL_STRTOIMAX@
+extern intmax_t strtoimax (const char *, char **, int);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strtoimax
+# define strtoimax(p,e,b) \
+ (GL_LINK_WARNING ("strtoimax is unportable - " \
+ "use gnulib module strtoimax for portability"), \
+ strtoimax (p, e, b))
+#endif
+
+#if @GNULIB_STRTOUMAX@
+# if !@HAVE_DECL_STRTOUMAX@
+extern uintmax_t strtoumax (const char *, char **, int);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strtoumax
+# define strtoumax(p,e,b) \
+ (GL_LINK_WARNING ("strtoumax is unportable - " \
+ "use gnulib module strtoumax for portability"), \
+ strtoumax (p, e, b))
+#endif
+
+/* Don't bother defining or declaring wcstoimax and wcstoumax, since
+ wide-character functions like this are hardly ever useful. */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* INTTYPES_H */
diff --git a/parted-1.8.7/lib/localcharset.c b/parted-1.8.7/lib/localcharset.c
new file mode 100644
index 0000000..a0f7cca
--- /dev/null
+++ b/parted-1.8.7/lib/localcharset.c
@@ -0,0 +1,460 @@
+/* Determine a canonical name for the current locale's character encoding.
+
+ Copyright (C) 2000-2006 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, 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 <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#include <stdlib.h>
+
+#if defined _WIN32 || defined __WIN32__
+# define WIN32_NATIVE
+#endif
+
+#if defined __EMX__
+/* Assume EMX program runs on OS/2, even if compiled under DOS. */
+# define OS2
+#endif
+
+#if !defined WIN32_NATIVE
+# 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
+
+#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 VMS || defined WIN32_NATIVE || defined __CYGWIN__)
+ FILE *fp;
+ 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 || (fp = fopen (file_name, "r")) == NULL)
+ /* Out of memory or file not found, treat it as empty. */
+ 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;
+ if (old_res_ptr != NULL)
+ 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;
+ }
+ }
+
+ if (file_name != NULL)
+ free (file_name);
+
+#else
+
+# 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 2006 does not have locales. nl_langinfo (CODESET) always
+ returns "US-ASCII". As long as this is not fixed, 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. */
+ 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. */
+ 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/parted-1.8.7/lib/localcharset.h b/parted-1.8.7/lib/localcharset.h
new file mode 100644
index 0000000..5030210
--- /dev/null
+++ b/parted-1.8.7/lib/localcharset.h
@@ -0,0 +1,41 @@
+/* Determine a canonical name for the current locale's character encoding.
+ Copyright (C) 2000-2003 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 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, 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/parted-1.8.7/lib/long-options.c b/parted-1.8.7/lib/long-options.c
new file mode 100644
index 0000000..fb61661
--- /dev/null
+++ b/parted-1.8.7/lib/long-options.c
@@ -0,0 +1,89 @@
+/* Utility to accept --help and --version options as unobtrusively as possible.
+
+ Copyright (C) 1993, 1994, 1998, 1999, 2000, 2002, 2003, 2004, 2005,
+ 2006 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, 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 "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/parted-1.8.7/lib/long-options.h b/parted-1.8.7/lib/long-options.h
new file mode 100644
index 0000000..03106a8
--- /dev/null
+++ b/parted-1.8.7/lib/long-options.h
@@ -0,0 +1,26 @@
+/* long-options.h -- declaration for --help- and --version-handling function.
+ Copyright (C) 1993, 1994, 1998, 1999, 2003 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* 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/parted-1.8.7/lib/malloc.c b/parted-1.8.7/lib/malloc.c
new file mode 100644
index 0000000..d4dae3e
--- /dev/null
+++ b/parted-1.8.7/lib/malloc.c
@@ -0,0 +1,35 @@
+/* malloc() function that is glibc compatible.
+
+ Copyright (C) 1997, 1998, 2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+#undef malloc
+
+#include <stdlib.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)
+{
+ if (n == 0)
+ n = 1;
+ return malloc (n);
+}
diff --git a/parted-1.8.7/lib/memchr.c b/parted-1.8.7/lib/memchr.c
new file mode 100644
index 0000000..d44ad6d
--- /dev/null
+++ b/parted-1.8.7/lib/memchr.c
@@ -0,0 +1,201 @@
+/* Copyright (C) 1991, 1993, 1996, 1997, 1999, 2000, 2003, 2004, 2006 Free
+ Software Foundation, Inc.
+
+ Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
+ with help from Dan Sahlin (dan@sics.se) and
+ commentary by Jim Blandy (jimb@ai.mit.edu);
+ adaptation to memchr suggested by Dick Karpinski (dick@cca.ucsf.edu),
+ and implemented by Roland McGrath (roland@ai.mit.edu).
+
+NOTE: The canonical source of this file is maintained with the GNU C Library.
+Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+
+This program is free software; you can 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, write to the Free Software Foundation,
+Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _LIBC
+# include <config.h>
+#endif
+
+#include <string.h>
+
+#include <stddef.h>
+
+#if defined _LIBC
+# include <memcopy.h>
+#else
+# define reg_char char
+#endif
+
+#include <limits.h>
+
+#if HAVE_BP_SYM_H || defined _LIBC
+# include <bp-sym.h>
+#else
+# define BP_SYM(sym) sym
+#endif
+
+#undef memchr
+#undef __memchr
+
+/* Search no more than N bytes of S for C. */
+void *
+__memchr (void const *s, int c_in, size_t n)
+{
+ const unsigned char *char_ptr;
+ const unsigned long int *longword_ptr;
+ unsigned long int longword, magic_bits, charmask;
+ unsigned reg_char c;
+ int i;
+
+ c = (unsigned char) c_in;
+
+ /* Handle the first few characters by reading one character at a time.
+ Do this until CHAR_PTR is aligned on a longword boundary. */
+ for (char_ptr = (const unsigned char *) s;
+ n > 0 && (size_t) char_ptr % sizeof longword != 0;
+ --n, ++char_ptr)
+ if (*char_ptr == c)
+ return (void *) char_ptr;
+
+ /* All these elucidatory comments refer to 4-byte longwords,
+ but the theory applies equally well to any size longwords. */
+
+ longword_ptr = (const unsigned long int *) char_ptr;
+
+ /* Bits 31, 24, 16, and 8 of this number are zero. Call these bits
+ the "holes." Note that there is a hole just to the left of
+ each byte, with an extra at the end:
+
+ bits: 01111110 11111110 11111110 11111111
+ bytes: AAAAAAAA BBBBBBBB CCCCCCCC DDDDDDDD
+
+ The 1-bits make sure that carries propagate to the next 0-bit.
+ The 0-bits provide holes for carries to fall into. */
+
+ /* Set MAGIC_BITS to be this pattern of 1 and 0 bits.
+ Set CHARMASK to be a longword, each of whose bytes is C. */
+
+ magic_bits = 0xfefefefe;
+ charmask = c | (c << 8);
+ charmask |= charmask << 16;
+#if 0xffffffffU < ULONG_MAX
+ magic_bits |= magic_bits << 32;
+ charmask |= charmask << 32;
+ if (8 < sizeof longword)
+ for (i = 64; i < sizeof longword * 8; i *= 2)
+ {
+ magic_bits |= magic_bits << i;
+ charmask |= charmask << i;
+ }
+#endif
+ magic_bits = (ULONG_MAX >> 1) & (magic_bits | 1);
+
+ /* Instead of the traditional loop which tests each character,
+ we will test a longword at a time. The tricky part is testing
+ if *any of the four* bytes in the longword in question are zero. */
+ while (n >= sizeof longword)
+ {
+ /* We tentatively exit the loop if adding MAGIC_BITS to
+ LONGWORD fails to change any of the hole bits of LONGWORD.
+
+ 1) Is this safe? Will it catch all the zero bytes?
+ Suppose there is a byte with all zeros. Any carry bits
+ propagating from its left will fall into the hole at its
+ least significant bit and stop. Since there will be no
+ carry from its most significant bit, the LSB of the
+ byte to the left will be unchanged, and the zero will be
+ detected.
+
+ 2) Is this worthwhile? Will it ignore everything except
+ zero bytes? Suppose every byte of LONGWORD has a bit set
+ somewhere. There will be a carry into bit 8. If bit 8
+ is set, this will carry into bit 16. If bit 8 is clear,
+ one of bits 9-15 must be set, so there will be a carry
+ into bit 16. Similarly, there will be a carry into bit
+ 24. If one of bits 24-30 is set, there will be a carry
+ into bit 31, so all of the hole bits will be changed.
+
+ The one misfire occurs when bits 24-30 are clear and bit
+ 31 is set; in this case, the hole at bit 31 is not
+ changed. If we had access to the processor carry flag,
+ we could close this loophole by putting the fourth hole
+ at bit 32!
+
+ So it ignores everything except 128's, when they're aligned
+ properly.
+
+ 3) But wait! Aren't we looking for C, not zero?
+ Good point. So what we do is XOR LONGWORD with a longword,
+ each of whose bytes is C. This turns each byte that is C
+ into a zero. */
+
+ longword = *longword_ptr++ ^ charmask;
+
+ /* Add MAGIC_BITS to LONGWORD. */
+ if ((((longword + magic_bits)
+
+ /* Set those bits that were unchanged by the addition. */
+ ^ ~longword)
+
+ /* Look at only the hole bits. If any of the hole bits
+ are unchanged, most likely one of the bytes was a
+ zero. */
+ & ~magic_bits) != 0)
+ {
+ /* Which of the bytes was C? If none of them were, it was
+ a misfire; continue the search. */
+
+ const unsigned char *cp = (const unsigned char *) (longword_ptr - 1);
+
+ if (cp[0] == c)
+ return (void *) cp;
+ if (cp[1] == c)
+ return (void *) &cp[1];
+ if (cp[2] == c)
+ return (void *) &cp[2];
+ if (cp[3] == c)
+ return (void *) &cp[3];
+ if (4 < sizeof longword && cp[4] == c)
+ return (void *) &cp[4];
+ if (5 < sizeof longword && cp[5] == c)
+ return (void *) &cp[5];
+ if (6 < sizeof longword && cp[6] == c)
+ return (void *) &cp[6];
+ if (7 < sizeof longword && cp[7] == c)
+ return (void *) &cp[7];
+ if (8 < sizeof longword)
+ for (i = 8; i < sizeof longword; i++)
+ if (cp[i] == c)
+ return (void *) &cp[i];
+ }
+
+ n -= sizeof longword;
+ }
+
+ char_ptr = (const unsigned char *) longword_ptr;
+
+ while (n-- > 0)
+ {
+ if (*char_ptr == c)
+ return (void *) char_ptr;
+ else
+ ++char_ptr;
+ }
+
+ return 0;
+}
+#ifdef weak_alias
+weak_alias (__memchr, BP_SYM (memchr))
+#endif
diff --git a/parted-1.8.7/lib/memcmp.c b/parted-1.8.7/lib/memcmp.c
new file mode 100644
index 0000000..cf98bfa
--- /dev/null
+++ b/parted-1.8.7/lib/memcmp.c
@@ -0,0 +1,363 @@
+/* Copyright (C) 1991, 1993, 1995, 1997, 1998, 2003, 2006 Free Software
+ Foundation, Inc.
+
+ Contributed by Torbjorn Granlund (tege@sics.se).
+
+ NOTE: The canonical source of this file is maintained with the GNU C Library.
+ Bugs can be reported to bug-glibc@prep.ai.mit.edu.
+
+ This program is free software; you can 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, write to the Free Software
+ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+ USA. */
+
+#ifndef _LIBC
+# include <config.h>
+#endif
+
+#include <string.h>
+
+#undef memcmp
+
+#ifdef _LIBC
+
+# include <memcopy.h>
+# include <endian.h>
+
+# if __BYTE_ORDER == __BIG_ENDIAN
+# define WORDS_BIGENDIAN
+# endif
+
+#else /* Not in the GNU C library. */
+
+# include <sys/types.h>
+
+/* Type to use for aligned memory operations.
+ This should normally be the biggest type supported by a single load
+ and store. Must be an unsigned type. */
+# define op_t unsigned long int
+# define OPSIZ (sizeof(op_t))
+
+/* Threshold value for when to enter the unrolled loops. */
+# define OP_T_THRES 16
+
+/* Type to use for unaligned operations. */
+typedef unsigned char byte;
+
+# ifndef WORDS_BIGENDIAN
+# define MERGE(w0, sh_1, w1, sh_2) (((w0) >> (sh_1)) | ((w1) << (sh_2)))
+# else
+# define MERGE(w0, sh_1, w1, sh_2) (((w0) << (sh_1)) | ((w1) >> (sh_2)))
+# endif
+
+#endif /* In the GNU C library. */
+
+#ifdef WORDS_BIGENDIAN
+# define CMP_LT_OR_GT(a, b) ((a) > (b) ? 1 : -1)
+#else
+# define CMP_LT_OR_GT(a, b) memcmp_bytes ((a), (b))
+#endif
+
+/* BE VERY CAREFUL IF YOU CHANGE THIS CODE! */
+
+/* The strategy of this memcmp is:
+
+ 1. Compare bytes until one of the block pointers is aligned.
+
+ 2. Compare using memcmp_common_alignment or
+ memcmp_not_common_alignment, regarding the alignment of the other
+ block after the initial byte operations. The maximum number of
+ full words (of type op_t) are compared in this way.
+
+ 3. Compare the few remaining bytes. */
+
+#ifndef WORDS_BIGENDIAN
+/* memcmp_bytes -- Compare A and B bytewise in the byte order of the machine.
+ A and B are known to be different.
+ This is needed only on little-endian machines. */
+
+# ifdef __GNUC__
+__inline
+# endif
+static int
+memcmp_bytes (long unsigned int a, long unsigned int b)
+{
+ long int srcp1 = (long int) &a;
+ long int srcp2 = (long int) &b;
+ op_t a0, b0;
+
+ do
+ {
+ a0 = ((byte *) srcp1)[0];
+ b0 = ((byte *) srcp2)[0];
+ srcp1 += 1;
+ srcp2 += 1;
+ }
+ while (a0 == b0);
+ return a0 - b0;
+}
+#endif
+
+/* memcmp_common_alignment -- Compare blocks at SRCP1 and SRCP2 with LEN `op_t'
+ objects (not LEN bytes!). Both SRCP1 and SRCP2 should be aligned for
+ memory operations on `op_t's. */
+#ifdef __GNUC__
+__inline
+#endif
+static int
+memcmp_common_alignment (long int srcp1, long int srcp2, size_t len)
+{
+ op_t a0, a1;
+ op_t b0, b1;
+
+ switch (len % 4)
+ {
+ default: /* Avoid warning about uninitialized local variables. */
+ case 2:
+ a0 = ((op_t *) srcp1)[0];
+ b0 = ((op_t *) srcp2)[0];
+ srcp1 -= 2 * OPSIZ;
+ srcp2 -= 2 * OPSIZ;
+ len += 2;
+ goto do1;
+ case 3:
+ a1 = ((op_t *) srcp1)[0];
+ b1 = ((op_t *) srcp2)[0];
+ srcp1 -= OPSIZ;
+ srcp2 -= OPSIZ;
+ len += 1;
+ goto do2;
+ case 0:
+ if (OP_T_THRES <= 3 * OPSIZ && len == 0)
+ return 0;
+ a0 = ((op_t *) srcp1)[0];
+ b0 = ((op_t *) srcp2)[0];
+ goto do3;
+ case 1:
+ a1 = ((op_t *) srcp1)[0];
+ b1 = ((op_t *) srcp2)[0];
+ srcp1 += OPSIZ;
+ srcp2 += OPSIZ;
+ len -= 1;
+ if (OP_T_THRES <= 3 * OPSIZ && len == 0)
+ goto do0;
+ /* Fall through. */
+ }
+
+ do
+ {
+ a0 = ((op_t *) srcp1)[0];
+ b0 = ((op_t *) srcp2)[0];
+ if (a1 != b1)
+ return CMP_LT_OR_GT (a1, b1);
+
+ do3:
+ a1 = ((op_t *) srcp1)[1];
+ b1 = ((op_t *) srcp2)[1];
+ if (a0 != b0)
+ return CMP_LT_OR_GT (a0, b0);
+
+ do2:
+ a0 = ((op_t *) srcp1)[2];
+ b0 = ((op_t *) srcp2)[2];
+ if (a1 != b1)
+ return CMP_LT_OR_GT (a1, b1);
+
+ do1:
+ a1 = ((op_t *) srcp1)[3];
+ b1 = ((op_t *) srcp2)[3];
+ if (a0 != b0)
+ return CMP_LT_OR_GT (a0, b0);
+
+ srcp1 += 4 * OPSIZ;
+ srcp2 += 4 * OPSIZ;
+ len -= 4;
+ }
+ while (len != 0);
+
+ /* This is the right position for do0. Please don't move
+ it into the loop. */
+ do0:
+ if (a1 != b1)
+ return CMP_LT_OR_GT (a1, b1);
+ return 0;
+}
+
+/* memcmp_not_common_alignment -- Compare blocks at SRCP1 and SRCP2 with LEN
+ `op_t' objects (not LEN bytes!). SRCP2 should be aligned for memory
+ operations on `op_t', but SRCP1 *should be unaligned*. */
+#ifdef __GNUC__
+__inline
+#endif
+static int
+memcmp_not_common_alignment (long int srcp1, long int srcp2, size_t len)
+{
+ op_t a0, a1, a2, a3;
+ op_t b0, b1, b2, b3;
+ op_t x;
+ int shl, shr;
+
+ /* Calculate how to shift a word read at the memory operation
+ aligned srcp1 to make it aligned for comparison. */
+
+ shl = 8 * (srcp1 % OPSIZ);
+ shr = 8 * OPSIZ - shl;
+
+ /* Make SRCP1 aligned by rounding it down to the beginning of the `op_t'
+ it points in the middle of. */
+ srcp1 &= -OPSIZ;
+
+ switch (len % 4)
+ {
+ default: /* Avoid warning about uninitialized local variables. */
+ case 2:
+ a1 = ((op_t *) srcp1)[0];
+ a2 = ((op_t *) srcp1)[1];
+ b2 = ((op_t *) srcp2)[0];
+ srcp1 -= 1 * OPSIZ;
+ srcp2 -= 2 * OPSIZ;
+ len += 2;
+ goto do1;
+ case 3:
+ a0 = ((op_t *) srcp1)[0];
+ a1 = ((op_t *) srcp1)[1];
+ b1 = ((op_t *) srcp2)[0];
+ srcp2 -= 1 * OPSIZ;
+ len += 1;
+ goto do2;
+ case 0:
+ if (OP_T_THRES <= 3 * OPSIZ && len == 0)
+ return 0;
+ a3 = ((op_t *) srcp1)[0];
+ a0 = ((op_t *) srcp1)[1];
+ b0 = ((op_t *) srcp2)[0];
+ srcp1 += 1 * OPSIZ;
+ goto do3;
+ case 1:
+ a2 = ((op_t *) srcp1)[0];
+ a3 = ((op_t *) srcp1)[1];
+ b3 = ((op_t *) srcp2)[0];
+ srcp1 += 2 * OPSIZ;
+ srcp2 += 1 * OPSIZ;
+ len -= 1;
+ if (OP_T_THRES <= 3 * OPSIZ && len == 0)
+ goto do0;
+ /* Fall through. */
+ }
+
+ do
+ {
+ a0 = ((op_t *) srcp1)[0];
+ b0 = ((op_t *) srcp2)[0];
+ x = MERGE(a2, shl, a3, shr);
+ if (x != b3)
+ return CMP_LT_OR_GT (x, b3);
+
+ do3:
+ a1 = ((op_t *) srcp1)[1];
+ b1 = ((op_t *) srcp2)[1];
+ x = MERGE(a3, shl, a0, shr);
+ if (x != b0)
+ return CMP_LT_OR_GT (x, b0);
+
+ do2:
+ a2 = ((op_t *) srcp1)[2];
+ b2 = ((op_t *) srcp2)[2];
+ x = MERGE(a0, shl, a1, shr);
+ if (x != b1)
+ return CMP_LT_OR_GT (x, b1);
+
+ do1:
+ a3 = ((op_t *) srcp1)[3];
+ b3 = ((op_t *) srcp2)[3];
+ x = MERGE(a1, shl, a2, shr);
+ if (x != b2)
+ return CMP_LT_OR_GT (x, b2);
+
+ srcp1 += 4 * OPSIZ;
+ srcp2 += 4 * OPSIZ;
+ len -= 4;
+ }
+ while (len != 0);
+
+ /* This is the right position for do0. Please don't move
+ it into the loop. */
+ do0:
+ x = MERGE(a2, shl, a3, shr);
+ if (x != b3)
+ return CMP_LT_OR_GT (x, b3);
+ return 0;
+}
+
+int
+rpl_memcmp (const void *s1, const void *s2, size_t len)
+{
+ op_t a0;
+ op_t b0;
+ long int srcp1 = (long int) s1;
+ long int srcp2 = (long int) s2;
+ op_t res;
+
+ if (len >= OP_T_THRES)
+ {
+ /* There are at least some bytes to compare. No need to test
+ for LEN == 0 in this alignment loop. */
+ while (srcp2 % OPSIZ != 0)
+ {
+ a0 = ((byte *) srcp1)[0];
+ b0 = ((byte *) srcp2)[0];
+ srcp1 += 1;
+ srcp2 += 1;
+ res = a0 - b0;
+ if (res != 0)
+ return res;
+ len -= 1;
+ }
+
+ /* SRCP2 is now aligned for memory operations on `op_t'.
+ SRCP1 alignment determines if we can do a simple,
+ aligned compare or need to shuffle bits. */
+
+ if (srcp1 % OPSIZ == 0)
+ res = memcmp_common_alignment (srcp1, srcp2, len / OPSIZ);
+ else
+ res = memcmp_not_common_alignment (srcp1, srcp2, len / OPSIZ);
+ if (res != 0)
+ return res;
+
+ /* Number of bytes remaining in the interval [0..OPSIZ-1]. */
+ srcp1 += len & -OPSIZ;
+ srcp2 += len & -OPSIZ;
+ len %= OPSIZ;
+ }
+
+ /* There are just a few bytes to compare. Use byte memory operations. */
+ while (len != 0)
+ {
+ a0 = ((byte *) srcp1)[0];
+ b0 = ((byte *) srcp2)[0];
+ srcp1 += 1;
+ srcp2 += 1;
+ res = a0 - b0;
+ if (res != 0)
+ return res;
+ len -= 1;
+ }
+
+ return 0;
+}
+
+#ifdef weak_alias
+# undef bcmp
+weak_alias (memcmp, bcmp)
+#endif
diff --git a/parted-1.8.7/lib/memcpy.c b/parted-1.8.7/lib/memcpy.c
new file mode 100644
index 0000000..d1e49c6
--- /dev/null
+++ b/parted-1.8.7/lib/memcpy.c
@@ -0,0 +1,36 @@
+/* Copyright (C) 1995, 1997, 2000, 2003, 2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering <meyering@na-net.ornl.gov>. */
+
+#include <config.h>
+
+#include <stddef.h>
+
+/* Copy LEN bytes starting at SRCADDR to DESTADDR. Result undefined
+ if the source overlaps with the destination.
+ Return DESTADDR. */
+
+void *
+memcpy (void *destaddr, void const *srcaddr, size_t len)
+{
+ char *dest = destaddr;
+ char const *src = srcaddr;
+
+ while (len-- > 0)
+ *dest++ = *src++;
+ return destaddr;
+}
diff --git a/parted-1.8.7/lib/memmove.c b/parted-1.8.7/lib/memmove.c
new file mode 100644
index 0000000..c5ff8b5
--- /dev/null
+++ b/parted-1.8.7/lib/memmove.c
@@ -0,0 +1,26 @@
+/* memmove.c -- copy memory.
+ Copy LENGTH bytes from SOURCE to DEST. Does not null-terminate.
+ In the public domain.
+ By David MacKenzie <djm@gnu.ai.mit.edu>. */
+
+#include <config.h>
+
+#include <stddef.h>
+
+void *
+memmove (void *dest0, void const *source0, size_t length)
+{
+ char *dest = dest0;
+ char const *source = source0;
+ if (source < dest)
+ /* Moving from low mem to hi mem; start at end. */
+ for (source += length, dest += length; length; --length)
+ *--dest = *--source;
+ else if (source != dest)
+ {
+ /* Moving from hi mem to low mem; start at beginning. */
+ for (; length; --length)
+ *dest++ = *source++;
+ }
+ return dest0;
+}
diff --git a/parted-1.8.7/lib/memset.c b/parted-1.8.7/lib/memset.c
new file mode 100644
index 0000000..890cbf1
--- /dev/null
+++ b/parted-1.8.7/lib/memset.c
@@ -0,0 +1,28 @@
+/* memset.c -- set an area of memory to a given value
+ Copyright (C) 1991, 2003 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <stddef.h>
+
+void *
+memset (void *str, int c, size_t len)
+{
+ register char *st = str;
+
+ while (len-- > 0)
+ *st++ = c;
+ return str;
+}
diff --git a/parted-1.8.7/lib/quotearg.c b/parted-1.8.7/lib/quotearg.c
new file mode 100644
index 0000000..f7f326a
--- /dev/null
+++ b/parted-1.8.7/lib/quotearg.c
@@ -0,0 +1,697 @@
+/* quotearg.c - quote arguments for output
+
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2005, 2006, 2007 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* 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
+
+#if !HAVE_MBRTOWC
+/* Disable multibyte processing entirely. Since MB_CUR_MAX is 1, the
+ other macros are defined only for documentation and to satisfy C
+ syntax. */
+# undef MB_CUR_MAX
+# define MB_CUR_MAX 1
+# undef mbstate_t
+# define mbstate_t int
+# define mbrtowc(pwc, s, n, ps) ((*(pwc) = *(s)) != 0)
+# define iswprint(wc) isprint ((unsigned char) (wc))
+# undef HAVE_MBSINIT
+#endif
+
+#if !defined mbsinit && !HAVE_MBSINIT
+# define mbsinit(ps) 1
+#endif
+
+#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;
+
+ /* 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];
+};
+
+/* Names of quoting styles. */
+char const *const quoting_style_args[] =
+{
+ "literal",
+ "shell",
+ "shell-always",
+ "c",
+ "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,
+ 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;
+}
+
+/* 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 and the
+ non-quoting-style part of O 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 uses QUOTING_STYLE instead of the quoting
+ style specified by O, and O may not be null. */
+
+static size_t
+quotearg_buffer_restyled (char *buffer, size_t buffersize,
+ char const *arg, size_t argsize,
+ enum quoting_style quoting_style,
+ struct quoting_options const *o)
+{
+ 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;
+
+#define STORE(c) \
+ do \
+ { \
+ if (len < buffersize) \
+ buffer[len] = (c); \
+ len++; \
+ } \
+ while (0)
+
+ switch (quoting_style)
+ {
+ case c_quoting_style:
+ STORE ('"');
+ backslash_escapes = true;
+ quote_string = "\"";
+ quote_string_len = 1;
+ break;
+
+ case escape_quoting_style:
+ backslash_escapes = true;
+ break;
+
+ case locale_quoting_style:
+ case clocale_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. */
+
+ char const *left = gettext_quote (N_("`"), quoting_style);
+ char const *right = gettext_quote (N_("'"), quoting_style);
+ for (quote_string = left; *quote_string; quote_string++)
+ STORE (*quote_string);
+ backslash_escapes = true;
+ quote_string = right;
+ quote_string_len = strlen (quote_string);
+ }
+ break;
+
+ case shell_always_quoting_style:
+ STORE ('\'');
+ quote_string = "'";
+ quote_string_len = 1;
+ break;
+
+ default:
+ break;
+ }
+
+ for (i = 0; ! (argsize == SIZE_MAX ? arg[i] == '\0' : i == argsize); i++)
+ {
+ unsigned char c;
+ unsigned char esc;
+
+ if (backslash_escapes
+ && quote_string_len
+ && i + quote_string_len <= argsize
+ && memcmp (arg + i, quote_string, quote_string_len) == 0)
+ STORE ('\\');
+
+ c = arg[i];
+ switch (c)
+ {
+ case '\0':
+ if (backslash_escapes)
+ {
+ STORE ('\\');
+ STORE ('0');
+ STORE ('0');
+ c = '0';
+ }
+ break;
+
+ case '?':
+ switch (quoting_style)
+ {
+ case shell_quoting_style:
+ goto use_shell_always_quoting_style;
+
+ case c_quoting_style:
+ if (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. */
+ c = arg[i + 2];
+ i += 2;
+ 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; goto c_and_shell_escape;
+
+ c_and_shell_escape:
+ if (quoting_style == shell_quoting_style)
+ goto use_shell_always_quoting_style;
+ 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_quoting_style)
+ goto use_shell_always_quoting_style;
+ break;
+
+ case '\'':
+ switch (quoting_style)
+ {
+ case shell_quoting_style:
+ goto use_shell_always_quoting_style;
+
+ case shell_always_quoting_style:
+ STORE ('\'');
+ STORE ('\\');
+ STORE ('\'');
+ break;
+
+ default:
+ break;
+ }
+ 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. */
+ 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 && quoting_style == shell_quoting_style)
+ {
+ size_t j;
+ for (j = 1; j < bytes; j++)
+ switch (arg[i + m + j])
+ {
+ case '[': case '\\': case '^':
+ case '`': case '|':
+ goto use_shell_always_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)
+ {
+ STORE ('\\');
+ STORE ('0' + (c >> 6));
+ STORE ('0' + ((c >> 3) & 7));
+ c = '0' + (c & 7);
+ }
+ if (ilim <= i + 1)
+ break;
+ STORE (c);
+ c = arg[++i];
+ }
+
+ goto store_c;
+ }
+ }
+ }
+
+ if (! (backslash_escapes
+ && o->quote_these_too[c / INT_BITS] & (1 << (c % INT_BITS))))
+ goto store_c;
+
+ store_escape:
+ STORE ('\\');
+
+ store_c:
+ STORE (c);
+ }
+
+ if (i == 0 && quoting_style == shell_quoting_style)
+ goto use_shell_always_quoting_style;
+
+ if (quote_string)
+ for (; *quote_string; quote_string++)
+ STORE (*quote_string);
+
+ if (len < buffersize)
+ buffer[len] = '\0';
+ return len;
+
+ use_shell_always_quoting_style:
+ return quotearg_buffer_restyled (buffer, buffersize, arg, argsize,
+ shell_always_quoting_style, o);
+}
+
+/* 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);
+ errno = e;
+ return r;
+}
+
+/* Like quotearg_buffer (..., ARG, ARGSIZE, O), except return newly
+ allocated storage containing the quoted string. */
+char *
+quotearg_alloc (char const *arg, size_t argsize,
+ struct quoting_options const *o)
+{
+ int e = errno;
+ size_t bufsize = quotearg_buffer (0, 0, arg, argsize, o) + 1;
+ char *buf = xcharalloc (bufsize);
+ quotearg_buffer (buf, bufsize, arg, argsize, o);
+ errno = e;
+ 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;
+ size_t qsize = quotearg_buffer (val, size, arg, argsize, options);
+
+ if (size <= qsize)
+ {
+ sv[n].size = size = qsize + 1;
+ if (val != slot0)
+ free (val);
+ sv[n].val = val = xcharalloc (size);
+ quotearg_buffer (val, size, arg, argsize, options);
+ }
+
+ 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 (char const *arg)
+{
+ return quotearg_n (0, arg);
+}
+
+/* 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;
+ o.style = style;
+ memset (o.quote_these_too, 0, sizeof o.quote_these_too);
+ return o;
+}
+
+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_char (char const *arg, char ch)
+{
+ struct quoting_options options;
+ options = default_quoting_options;
+ set_char_quoting (&options, ch, 1);
+ return quotearg_n_options (0, arg, SIZE_MAX, &options);
+}
+
+char *
+quotearg_colon (char const *arg)
+{
+ return quotearg_char (arg, ':');
+}
diff --git a/parted-1.8.7/lib/quotearg.h b/parted-1.8.7/lib/quotearg.h
new file mode 100644
index 0000000..4887df3
--- /dev/null
+++ b/parted-1.8.7/lib/quotearg.h
@@ -0,0 +1,140 @@
+/* quotearg.h - quote arguments for output
+
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2004, 2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Paul Eggert <eggert@twinsun.com> */
+
+#ifndef QUOTEARG_H_
+# define QUOTEARG_H_ 1
+
+# include <stddef.h>
+
+/* Basic quoting styles. */
+enum quoting_style
+ {
+ /* Output names as-is (ls --quoting-style=literal). */
+ literal_quoting_style,
+
+ /* Quote names for the shell if they contain shell metacharacters
+ or would cause ambiguous output (ls --quoting-style=shell). */
+ shell_quoting_style,
+
+ /* Quote names for the shell, even if they would normally not
+ require quoting (ls --quoting-style=shell-always). */
+ shell_always_quoting_style,
+
+ /* Quote names as for a C language string (ls --quoting-style=c). */
+ c_quoting_style,
+
+ /* Like c_quoting_style except omit the surrounding double-quote
+ characters (ls --quoting-style=escape). */
+ escape_quoting_style,
+
+ /* Like clocale_quoting_style, but quote `like this' instead of
+ "like this" in the default C locale (ls --quoting-style=locale). */
+ locale_quoting_style,
+
+ /* Like c_quoting_style except use quotation marks appropriate for
+ the locale (ls --quoting-style=clocale). */
+ clocale_quoting_style
+ };
+
+/* 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). */
+int set_char_quoting (struct quoting_options *o, char c, int i);
+
+/* 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. */
+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. */
+char *quotearg_alloc (char const *arg, size_t argsize,
+ 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. */
+char *quotearg_n (int n, char const *arg);
+
+/* Equivalent to quotearg_n (0, ARG). */
+char *quotearg (char const *arg);
+
+/* 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);
+
+/* Like quotearg (ARG), except also quote any instances of CH. */
+char *quotearg_char (char const *arg, char ch);
+
+/* Equivalent to quotearg_char (ARG, ':'). */
+char *quotearg_colon (char const *arg);
+
+/* Free any dynamically allocated memory. */
+void quotearg_free (void);
+
+#endif /* !QUOTEARG_H_ */
diff --git a/parted-1.8.7/lib/realloc.c b/parted-1.8.7/lib/realloc.c
new file mode 100644
index 0000000..c1fe9e5
--- /dev/null
+++ b/parted-1.8.7/lib/realloc.c
@@ -0,0 +1,45 @@
+/* realloc() function that is glibc compatible.
+
+ Copyright (C) 1997, 2003, 2004, 2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Jim Meyering */
+
+#include <config.h>
+#undef realloc
+
+#include <stdlib.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)
+{
+ if (n == 0)
+ {
+ n = 1;
+
+ /* In theory realloc might fail, so don't rely on it to free. */
+ free (p);
+ p = NULL;
+ }
+
+ if (p == NULL)
+ return malloc (n);
+ return realloc (p, n);
+}
diff --git a/parted-1.8.7/lib/ref-add.sin b/parted-1.8.7/lib/ref-add.sin
new file mode 100644
index 0000000..bc5cc79
--- /dev/null
+++ b/parted-1.8.7/lib/ref-add.sin
@@ -0,0 +1,30 @@
+# Add this package to a list of references stored in a text file.
+#
+# Copyright (C) 2000 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, 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/parted-1.8.7/lib/ref-del.sin b/parted-1.8.7/lib/ref-del.sin
new file mode 100644
index 0000000..e9301bf
--- /dev/null
+++ b/parted-1.8.7/lib/ref-del.sin
@@ -0,0 +1,25 @@
+# Remove this package from a list of references stored in a text file.
+#
+# Copyright (C) 2000 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, 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/parted-1.8.7/lib/regcomp.c b/parted-1.8.7/lib/regcomp.c
new file mode 100644
index 0000000..fe4d243
--- /dev/null
+++ b/parted-1.8.7/lib/regcomp.c
@@ -0,0 +1,3832 @@
+/* Extended regular expression matching and search library.
+ Copyright (C) 2002,2003,2004,2005,2006,2007 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 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, 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);
+
+/* 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
+ };
+
+/* 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)
+ {
+ Idx i;
+ re_charset_t *cset = dfa->nodes[node].opr.mbcset;
+ if (cset->non_match || cset->ncoll_syms || cset->nequiv_classes
+ || cset->nranges || cset->nchar_classes)
+ {
+# ifdef _LIBC
+ if (_NL_CURRENT_WORD (LC_COLLATE, _NL_COLLATE_NRULES) != 0)
+ {
+ /* In this case we want to catch the bytes which are
+ the first byte of any 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'. */
+ 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);
+ }
+# else
+ if (dfa->mb_cur_max > 1)
+ for (i = 0; i < SBC_MAX; ++i)
+ if (__btowc (i) == WEOF)
+ re_set_fastmap (fastmap, icase, i);
+# endif /* not _LIBC */
+ }
+ 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;
+ }
+ }
+}
+
+/* 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
+
+/* 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 */
+
+/* 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 (®exp, pattern, length, preg->translate,
+ syntax & RE_ICASE, dfa);
+ if (BE (err != REG_NOERROR, 0))
+ {
+ re_compile_internal_free_return:
+ free_workarea_compile (preg);
+ re_string_destruct (®exp);
+ 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 (®exp, 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 (®exp);
+
+ 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;
+#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
+ if (strcmp (locale_charset (), "UTF-8") == 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))
+ {
+ re_node_set_merge (&init_nodes, dfa->eclosures + dest_idx);
+ 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;
+}
+
+#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.idx)
+ {
+ case LINE_FIRST:
+ case LINE_LAST:
+ case BUF_FIRST:
+ case BUF_LAST:
+ break;
+ default:
+ /* Word anchors etc. cannot be handled. */
+ 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
+
+/* 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;
+ }
+ 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)
+ 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 (dfa->nodes[org_node].type == ANCHOR)
+ {
+ /* In case of the node has another constraint, append it. */
+ if (org_node == root_node && clone_node != org_node)
+ {
+ /* ...but if the node is root_node itself, it means the
+ epsilon closure have a loop, then tie it to the
+ destination of the root_node. */
+ ok = re_node_set_insert (dfa->edests + clone_node, org_dest);
+ if (BE (! ok, 0))
+ return REG_ESPACE;
+ break;
+ }
+ constraint |= dfa->nodes[org_node].opr.ctx_type;
+ }
+ 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 are no such a 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 are a duplicated node which satisfy 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;
+ if (dfa->nodes[org_idx].type == ANCHOR)
+ dfa->nodes[dup_idx].constraint |= dfa->nodes[org_idx].opr.ctx_type;
+ 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;
+ unsigned int constraint;
+ Idx i;
+ bool incomplete;
+ bool ok;
+ re_node_set eclosure;
+ 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;
+
+ constraint = ((dfa->nodes[node].type == ANCHOR)
+ ? dfa->nodes[node].opr.ctx_type : 0);
+ /* If the current node has constraints, duplicate all nodes.
+ Since they must inherit the constraints. */
+ if (constraint
+ && dfa->edests[node].nelem
+ && !dfa->nodes[dfa->edests[node].elems[0]].duplicated)
+ {
+ err = duplicate_node_closure (dfa, node, node, 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'. */
+ re_node_set_merge (&eclosure, &eclosure_elem);
+ /* 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);
+ }
+ }
+
+ /* Epsilon closures include 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;
+}
+
+/* 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;
+}
+
+/* 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 (¤t_token, regexp, syntax | RE_CARET_ANCHORS_HERE);
+ tree = parse_reg_exp (regexp, preg, ¤t_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, 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;
+
+ /* 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 ((Idx) -1 < 0 || 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 (bitset_t sbcset, re_charset_t *mbcset, Idx *range_alloc,
+ bracket_elem_t *start_elem, bracket_elem_t *end_elem)
+# else /* not RE_ENABLE_I18N */
+build_range_exp (bitset_t sbcset, bracket_elem_t *start_elem,
+ 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 (wcscoll (cmp_buf, cmp_buf + 4) > 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 environement.
+ 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)
+ {
+ 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 (sbcset,
+ dfa->mb_cur_max > 1 ? mbcset : NULL,
+ &range_alloc, &start_elem, &end_elem);
+# else
+ *err = build_range_exp (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];
+ 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;
+ if (len == weights[idx2])
+ {
+ int cnt = 0;
+ while (cnt <= len &&
+ weights[idx1 + 1 + cnt] == weights[idx2 + 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;
+}
+
+#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 */
+
+/* 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/parted-1.8.7/lib/regex.c b/parted-1.8.7/lib/regex.c
new file mode 100644
index 0000000..d4eb726
--- /dev/null
+++ b/parted-1.8.7/lib/regex.c
@@ -0,0 +1,71 @@
+/* Extended regular expression matching and search library.
+ Copyright (C) 2002, 2003, 2005, 2006 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 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, 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/parted-1.8.7/lib/regex.h b/parted-1.8.7/lib/regex.h
new file mode 100644
index 0000000..7a79ca3
--- /dev/null
+++ b/parted-1.8.7/lib/regex.h
@@ -0,0 +1,675 @@
+/* Definitions for data structures and routines for the regular
+ expression library.
+ Copyright (C) 1985,1989-93,1995-98,2000,2001,2002,2003,2005,2006
+ 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 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, 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 an bre or
+ immediately after an alternation or begin-group 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;
+
+#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 */
+
+#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
+
+/* 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 `regex_compile' 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;
+
+/* 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;
+
+/* 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
+ PATTERN_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/parted-1.8.7/lib/regex_internal.c b/parted-1.8.7/lib/regex_internal.c
new file mode 100644
index 0000000..2129888
--- /dev/null
+++ b/parted-1.8.7/lib/regex_internal.c
@@ -0,0 +1,1741 @@
+/* Extended regular expression matching and search library.
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 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 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, 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;
+
+/* 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
+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
+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
+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
+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
+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
+ {
+ /* No, skip all characters until IDX. */
+ Idx prev_valid_len = pstr->valid_len;
+
+#ifdef RE_ENABLE_I18N
+ 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;
+ unsigned char buf[6];
+ size_t mbclen;
+
+ if (BE (pstr->trans != NULL, 0))
+ {
+ int i = mlen < 6 ? mlen : 6;
+ while (--i >= 0)
+ buf[i] = pstr->trans[p[i]];
+ }
+ /* 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;
+ }
+}
+
+/* Functions for set operation. */
+
+static reg_errcode_t
+internal_function
+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
+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
+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
+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
+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
+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
+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
+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
+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];
+}
+
+
+/* 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
+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
+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
+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
+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
+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++)
+ {
+ unsigned int constraint = 0;
+ re_token_t *node = dfa->nodes + nodes->elems[i];
+ re_token_type_t type = node->type;
+ if (node->constraint)
+ 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;
+ else if (type == ANCHOR)
+ constraint = node->opr.ctx_type;
+
+ 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;
+ }
+ re_node_set_init_copy (newstate->entrance_nodes, nodes);
+ 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/parted-1.8.7/lib/regex_internal.h b/parted-1.8.7/lib/regex_internal.h
new file mode 100644
index 0000000..fac6249
--- /dev/null
+++ b/parted-1.8.7/lib/regex_internal.h
@@ -0,0 +1,853 @@
+/* Extended regular expression matching and search library.
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 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 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, 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>
+
+#ifdef _LIBC
+# include <langinfo.h>
+#else
+# include "localcharset.h"
+#endif
+#if defined HAVE_LOCALE_H || defined _LIBC
+# include <locale.h>
+#endif
+
+#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 && !HAVE_DECL_ISBLANK && !defined 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_LOCALE_H && HAVE_WCTYPE_H && HAVE_ISWCTYPE && HAVE_WCRTOMB && HAVE_MBRTOWC && 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 __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 == 0xffffffff
+# define BITSET_WORD_BITS 32
+#elif BITSET_WORD_MAX >> 31 >> 5 == 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
+# ifdef __i386__
+# 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
+# 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)
+
+
+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 */
+
+#endif /* _REGEX_INTERNAL_H */
diff --git a/parted-1.8.7/lib/regexec.c b/parted-1.8.7/lib/regexec.c
new file mode 100644
index 0000000..b136570
--- /dev/null
+++ b/parted-1.8.7/lib/regexec.c
@@ -0,0 +1,4399 @@
+/* Extended regular expression matching and search library.
+ Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007 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 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, 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;
+
+/* 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
+
+/* 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 */
+
+/* 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
+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, 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
+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;
+ }
+ 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
+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
+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
+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
+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
+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++)
+ re_node_set_merge (&state->inveclosure,
+ dfa->inveclosures + dest_nodes->elems[i]);
+ }
+ 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
+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 */
+
+
+/* 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
+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
+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
+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
+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;
+ reg_errcode_t err = REG_NOERROR;
+ 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
+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
+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);
+ 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);
+ 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];
+ if (weight_len == weights[equiv_class_idx])
+ {
+ Idx cnt = 0;
+ 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
+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;
+}
+
+
+/* Functions for matching context. */
+
+/* Initialize MCTX. */
+
+static reg_errcode_t
+internal_function
+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
+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
+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/parted-1.8.7/lib/rename.c b/parted-1.8.7/lib/rename.c
new file mode 100644
index 0000000..32d2b01
--- /dev/null
+++ b/parted-1.8.7/lib/rename.c
@@ -0,0 +1,57 @@
+/* Work around the bug in some systems whereby rename fails when the source
+ file has a trailing slash. The rename functions of SunOS 4.1.1_U1 and
+ mips-dec-ultrix4.4 have this bug.
+
+ Copyright (C) 2001, 2002, 2003, 2005, 2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* written by Volker Borchert */
+
+#include <config.h>
+#undef rename
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "dirname.h"
+#include "xalloc.h"
+
+/* Rename the file SRC to DST, removing any trailing
+ slashes from SRC. Needed for SunOS 4.1.1_U1. */
+
+int
+rpl_rename (char const *src, char const *dst)
+{
+ char *src_temp;
+ int ret_val;
+ size_t s_len = strlen (src);
+
+ if (s_len && src[s_len - 1] == '/')
+ {
+ src_temp = xstrdup (src);
+ strip_trailing_slashes (src_temp);
+ }
+ else
+ src_temp = (char *) src;
+
+ ret_val = rename (src_temp, dst);
+
+ if (src_temp != src)
+ free (src_temp);
+
+ return ret_val;
+}
diff --git a/parted-1.8.7/lib/rpmatch.c b/parted-1.8.7/lib/rpmatch.c
new file mode 100644
index 0000000..e5f79f8
--- /dev/null
+++ b/parted-1.8.7/lib/rpmatch.c
@@ -0,0 +1,79 @@
+/* Determine whether string value is affirmation or negative response
+ according to current locale's data.
+
+ Copyright (C) 1996, 1998, 2000, 2002, 2003, 2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include <stddef.h>
+#include <stdlib.h>
+
+#if ENABLE_NLS
+# include <sys/types.h>
+# include <limits.h>
+# include <regex.h>
+# include "gettext.h"
+# define _(msgid) gettext (msgid)
+
+static int
+try (const char *response, const char *pattern, const int match,
+ const int nomatch, const char **lastp, regex_t *re)
+{
+ if (pattern != *lastp)
+ {
+ /* The pattern has changed. */
+ if (*lastp)
+ {
+ /* Free the old compiled pattern. */
+ regfree (re);
+ *lastp = NULL;
+ }
+ /* Compile the pattern and cache it for future runs. */
+ if (regcomp (re, pattern, REG_EXTENDED) != 0)
+ return -1;
+ *lastp = pattern;
+ }
+
+ /* See if the regular expression matches RESPONSE. */
+ return regexec (re, response, 0, NULL, 0) == 0 ? match : nomatch;
+}
+#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 const char *yesexpr, *noexpr;
+ static regex_t yesre, nore;
+ int result;
+
+ return ((result = try (response, _("^[yY]"), 1, 0,
+ &yesexpr, &yesre))
+ ? result
+ : try (response, _("^[nN]"), 0, -1, &noexpr, &nore));
+#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/parted-1.8.7/lib/safe-read.c b/parted-1.8.7/lib/safe-read.c
new file mode 100644
index 0000000..b7bf1d5
--- /dev/null
+++ b/parted-1.8.7/lib/safe-read.c
@@ -0,0 +1,78 @@
+/* An interface to read and write that retries after interrupts.
+
+ Copyright (C) 1993, 1994, 1998, 2002, 2003, 2004, 2005, 2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#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/parted-1.8.7/lib/safe-read.h b/parted-1.8.7/lib/safe-read.h
new file mode 100644
index 0000000..3451955
--- /dev/null
+++ b/parted-1.8.7/lib/safe-read.h
@@ -0,0 +1,35 @@
+/* An interface to read() that retries after interrupts.
+ Copyright (C) 2002, 2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#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/parted-1.8.7/lib/safe-write.c b/parted-1.8.7/lib/safe-write.c
new file mode 100644
index 0000000..4c375a6
--- /dev/null
+++ b/parted-1.8.7/lib/safe-write.c
@@ -0,0 +1,19 @@
+/* An interface to write that retries after interrupts.
+ Copyright (C) 2002 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#define SAFE_WRITE
+#include "safe-read.c"
diff --git a/parted-1.8.7/lib/safe-write.h b/parted-1.8.7/lib/safe-write.h
new file mode 100644
index 0000000..c194636
--- /dev/null
+++ b/parted-1.8.7/lib/safe-write.h
@@ -0,0 +1,25 @@
+/* An interface to write() that retries after interrupts.
+ Copyright (C) 2002 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <stddef.h>
+
+#define SAFE_WRITE_ERROR ((size_t) -1)
+
+/* Write up to COUNT bytes at BUF to descriptor FD, retrying if interrupted.
+ Return the actual number of bytes written, zero for EOF, or SAFE_WRITE_ERROR
+ upon error. */
+extern size_t safe_write (int fd, const void *buf, size_t count);
diff --git a/parted-1.8.7/lib/stdbool_.h b/parted-1.8.7/lib/stdbool_.h
new file mode 100644
index 0000000..150a010
--- /dev/null
+++ b/parted-1.8.7/lib/stdbool_.h
@@ -0,0 +1,118 @@
+/* Copyright (C) 2001, 2002, 2003, 2006, 2007 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 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, 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'.
+
+ 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. */
+#ifdef __BEOS__
+# 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__
+ /* 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".
+ The only benefit of the enum type, debuggability, is not important
+ with these compilers. So use 'signed char' and no typedef. */
+# define _Bool signed char
+enum { false = 0, true = 1 };
+# 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/parted-1.8.7/lib/stdint_.h b/parted-1.8.7/lib/stdint_.h
new file mode 100644
index 0000000..4fa5251
--- /dev/null
+++ b/parted-1.8.7/lib/stdint_.h
@@ -0,0 +1,504 @@
+/* Copyright (C) 2001-2002, 2004-2007 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 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _GL_STDINT_H
+#define _GL_STDINT_H
+
+/*
+ * ISO C 99 <stdint.h> for platforms that lack it.
+ * <http://www.opengroup.org/susv3xbd/stdint.h.html>
+ */
+
+/* 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
+ _GL_STDINT_H is defined. */
+# include @ABSOLUTE_STDINT_H@
+#endif
+
+/* <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 @ABSOLUTE_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. */
+# define _GL_JUST_INCLUDE_ABSOLUTE_INTTYPES_H
+# include <inttypes.h>
+# undef _GL_JUST_INCLUDE_ABSOLUTE_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
+
+#if ! defined __cplusplus || defined __STDC_CONSTANT_MACROS
+
+/* Get WCHAR_MIN, WCHAR_MAX. */
+# if ! (defined WCHAR_MIN && defined WCHAR_MAX)
+# include <wchar.h>
+# endif
+
+#endif
+
+/* Minimum and maximum values for a 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) \
+ : ((((zero) + 1) << ((bits) ? (bits) - 1 : 0)) - 1) * 2 + 1)
+
+/* 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
+#define int8_t signed char
+#define uint8_t unsigned char
+
+#undef int16_t
+#undef uint16_t
+#define int16_t short int
+#define uint16_t unsigned short int
+
+#undef int32_t
+#undef uint32_t
+#define int32_t int
+#define uint32_t unsigned int
+
+/* 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
+# define int64_t long int
+# define GL_INT64_T
+#elif defined _MSC_VER
+# undef int64_t
+# define int64_t __int64
+# define GL_INT64_T
+#elif @HAVE_LONG_LONG_INT@
+# undef int64_t
+# define int64_t long long int
+# define GL_INT64_T
+#endif
+
+#if ULONG_MAX >> 31 >> 31 >> 1 == 1
+# undef uint64_t
+# define uint64_t unsigned long int
+# define GL_UINT64_T
+#elif defined _MSC_VER
+# undef uint64_t
+# define uint64_t unsigned __int64
+# define GL_UINT64_T
+#elif @HAVE_UNSIGNED_LONG_LONG_INT@
+# undef uint64_t
+# define uint64_t unsigned long long int
+# define GL_UINT64_T
+#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
+#define int_fast8_t long int
+#define uint_fast8_t unsigned int_fast8_t
+#define int_fast16_t long int
+#define uint_fast16_t unsigned int_fast16_t
+#define int_fast32_t long int
+#define uint_fast32_t unsigned int_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
+#define intptr_t long int
+#define uintptr_t unsigned long int
+
+/* 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
+# define intmax_t long long int
+#elif defined GL_INT64_T
+# define intmax_t int64_t
+#else
+# define intmax_t long int
+#endif
+
+#undef uintmax_t
+#if @HAVE_UNSIGNED_LONG_LONG_INT@ && ULONG_MAX >> 31 == 1
+# define uintmax_t unsigned long long int
+#elif defined GL_UINT64_T
+# define uintmax_t uint64_t
+#else
+# define uintmax_t unsigned long int
+#endif
+
+/* 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
+
+#undef INT64_MIN
+#undef INT64_MAX
+#ifdef GL_INT64_T
+/* 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
+
+#undef UINT64_MAX
+#ifdef GL_UINT64_T
+# 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
+#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@)
+
+/* 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
+#define SIZE_MAX _STDINT_MAX (0, @BITSIZEOF_SIZE_T@, 0@SIZE_T_SUFFIX@)
+
+/* wchar_t limits */
+#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 /* _GL_STDINT_H */
diff --git a/parted-1.8.7/lib/stdlib_.h b/parted-1.8.7/lib/stdlib_.h
new file mode 100644
index 0000000..c947c1d
--- /dev/null
+++ b/parted-1.8.7/lib/stdlib_.h
@@ -0,0 +1,148 @@
+/* A GNU-like <stdlib.h>.
+
+ Copyright (C) 1995, 2001-2002, 2006-2007 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#if defined __need_malloc_and_calloc
+/* Special invocation convention inside glibc header files. */
+
+/* This #pragma avoids a warning with "gcc -Wall" on some glibc systems
+ on which <stdlib.h> has an inappropriate declaration, see
+ <http://sourceware.org/bugzilla/show_bug.cgi?id=1079>. */
+#ifdef __GNUC__
+# pragma GCC system_header
+#endif
+
+#include @ABSOLUTE_STDLIB_H@
+
+#else
+/* Normal invocation convention. */
+
+#if defined __DECC && __DECC_VER >= 60000000
+# include_next <stdlib.h>
+#endif
+
+#ifndef _GL_STDLIB_H
+#define _GL_STDLIB_H
+
+/* This #pragma avoids a warning with "gcc -Wall" on some glibc systems
+ on which <stdlib.h> has an inappropriate declaration, see
+ <http://sourceware.org/bugzilla/show_bug.cgi?id=1079>. */
+#ifdef __GNUC__
+# pragma GCC system_header
+#endif
+
+#if !(defined __DECC && __DECC_VER >= 60000000)
+# include @ABSOLUTE_STDLIB_H@
+#endif
+
+
+/* The definition of GL_LINK_WARNING 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
+
+
+#ifdef __cplusplus
+extern "C" {
+#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@
+extern int getsubopt (char **optionp, char *const *tokens, char **valuep);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getsubopt
+# define getsubopt(o,t,v) \
+ (GL_LINK_WARNING ("getsubopt is unportable - " \
+ "use gnulib module getsubopt for portability"), \
+ getsubopt (o, t, v))
+#endif
+
+
+#if @GNULIB_MKDTEMP@
+# if !@HAVE_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. */
+extern char * mkdtemp (char *template);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mkdtemp
+# define mkdtemp(t) \
+ (GL_LINK_WARNING ("mkdtemp is unportable - " \
+ "use gnulib module mkdtemp for portability"), \
+ mkdtemp (t))
+#endif
+
+
+#if @GNULIB_MKSTEMP@
+# if @REPLACE_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. */
+# define mkstemp rpl_mkstemp
+extern int mkstemp (char *template);
+# else
+/* On MacOS X 10.3, only <unistd.h> declares mkstemp. */
+# include <unistd.h>
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mkstemp
+# define mkstemp(t) \
+ (GL_LINK_WARNING ("mkstemp is unportable - " \
+ "use gnulib module mkstemp for portability"), \
+ mkstemp (t))
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _GL_STDLIB_H */
+#endif
diff --git a/parted-1.8.7/lib/strcspn.c b/parted-1.8.7/lib/strcspn.c
new file mode 100644
index 0000000..5a8d6f9
--- /dev/null
+++ b/parted-1.8.7/lib/strcspn.c
@@ -0,0 +1,41 @@
+/* Copyright (C) 1991, 1994, 1996-1997, 2002-2003, 2005-2006 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 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include <stddef.h>
+#include <string.h>
+
+#undef strcspn
+
+/* Return the length of the maximum initial segment of S
+ which contains no characters from REJECT. */
+size_t
+strcspn (const char *s, const char *reject)
+{
+ size_t count = 0;
+
+ while (*s != '\0')
+ if (strchr (reject, *s++) == NULL)
+ ++count;
+ else
+ return count;
+
+ return count;
+}
diff --git a/parted-1.8.7/lib/string_.h b/parted-1.8.7/lib/string_.h
new file mode 100644
index 0000000..9588863
--- /dev/null
+++ b/parted-1.8.7/lib/string_.h
@@ -0,0 +1,550 @@
+/* A GNU-like <string.h>.
+
+ Copyright (C) 1995-1996, 2001-2007 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#if defined __DECC && __DECC_VER >= 60000000
+# include_next <string.h>
+#endif
+
+#ifndef _GL_STRING_H
+#define _GL_STRING_H
+
+/* This #pragma avoids a warning with "gcc -Wmissing-prototypes" on some
+ mingw systems. */
+#ifdef __GNUC__
+# pragma GCC system_header
+#endif
+
+#if !(defined __DECC && __DECC_VER >= 60000000)
+# include @ABSOLUTE_STRING_H@
+#endif
+
+
+/* The definition of GL_LINK_WARNING is copied here. */
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Return the first occurrence of NEEDLE in HAYSTACK. */
+#if @GNULIB_MEMMEM@
+# if ! @HAVE_DECL_MEMMEM@
+extern void *memmem (void const *__haystack, size_t __haystack_len,
+ void const *__needle, size_t __needle_len);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef memmem
+# define memmem(a,al,b,bl) \
+ (GL_LINK_WARNING ("memmem is unportable - " \
+ "use gnulib module memmem for portability"), \
+ memmem (a, al, b, bl))
+#endif
+
+/* Copy N bytes of SRC to DEST, return pointer to bytes after the
+ last written byte. */
+#if @GNULIB_MEMPCPY@
+# if ! @HAVE_MEMPCPY@
+extern void *mempcpy (void *restrict __dest, void const *restrict __src,
+ size_t __n);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef mempcpy
+# define mempcpy(a,b,n) \
+ (GL_LINK_WARNING ("mempcpy is unportable - " \
+ "use gnulib module mempcpy for portability"), \
+ mempcpy (a, b, n))
+#endif
+
+/* Search backwards through a block for a byte (specified as an int). */
+#if @GNULIB_MEMRCHR@
+# if ! @HAVE_DECL_MEMRCHR@
+extern void *memrchr (void const *, int, size_t);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef memrchr
+# define memrchr(a,b,c) \
+ (GL_LINK_WARNING ("memrchr is unportable - " \
+ "use gnulib module memrchr for portability"), \
+ memrchr (a, b, c))
+#endif
+
+/* Copy SRC to DST, returning the address of the terminating '\0' in DST. */
+#if @GNULIB_STPCPY@
+# if ! @HAVE_STPCPY@
+extern char *stpcpy (char *restrict __dst, char const *restrict __src);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef stpcpy
+# define stpcpy(a,b) \
+ (GL_LINK_WARNING ("stpcpy is unportable - " \
+ "use gnulib module stpcpy for portability"), \
+ stpcpy (a, b))
+#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 ! @HAVE_STPNCPY@
+# define stpncpy gnu_stpncpy
+extern char *stpncpy (char *restrict __dst, char const *restrict __src,
+ size_t __n);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef stpncpy
+# define stpncpy(a,b,n) \
+ (GL_LINK_WARNING ("stpncpy is unportable - " \
+ "use gnulib module stpncpy for portability"), \
+ stpncpy (a, b, n))
+#endif
+
+/* Compare 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 does not work in multibyte locales. */
+#if ! @HAVE_STRCASECMP@
+extern int strcasecmp (char const *s1, char const *s2);
+#endif
+#if defined GNULIB_POSIXCHECK
+/* strcasecmp() does not work with multibyte strings:
+ POSIX says that it operates on "strings", and "string" in POSIX is defined
+ as a sequence of bytes, not of characters. */
+# undef strcasecmp
+# define strcasecmp(a,b) \
+ (GL_LINK_WARNING ("strcasecmp cannot work correctly on character strings " \
+ "in multibyte locales - " \
+ "use mbscasecmp if you care about " \
+ "internationalization, or use c_strcasecmp (from " \
+ "gnulib module c-strcase) if you want a locale " \
+ "independent function"), \
+ strcasecmp (a, b))
+#endif
+
+/* Compare no more than N bytes of 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 cannot work correctly in multibyte locales. */
+#if ! @HAVE_DECL_STRNCASECMP@
+extern int strncasecmp (char const *s1, char const *s2, size_t n);
+#endif
+#if defined GNULIB_POSIXCHECK
+/* strncasecmp() does not work with multibyte strings:
+ POSIX says that it operates on "strings", and "string" in POSIX is defined
+ as a sequence of bytes, not of characters. */
+# undef strncasecmp
+# define strncasecmp(a,b,n) \
+ (GL_LINK_WARNING ("strncasecmp cannot work correctly on character " \
+ "strings in multibyte locales - " \
+ "use mbsncasecmp or mbspcasecmp if you care about " \
+ "internationalization, or use c_strncasecmp (from " \
+ "gnulib module c-strcase) if you want a locale " \
+ "independent function"), \
+ strncasecmp (a, b, n))
+#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
+# define strchr(s,c) \
+ (GL_LINK_WARNING ("strchr cannot work correctly on character strings " \
+ "in some multibyte locales - " \
+ "use mbschr if you care about internationalization"), \
+ strchr (s, c))
+#endif
+
+/* Find the first occurrence of C in S or the final NUL byte. */
+#if @GNULIB_STRCHRNUL@
+# if ! @HAVE_STRCHRNUL@
+extern char *strchrnul (char const *__s, int __c_in);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strchrnul
+# define strchrnul(a,b) \
+ (GL_LINK_WARNING ("strchrnul is unportable - " \
+ "use gnulib module strchrnul for portability"), \
+ strchrnul (a, b))
+#endif
+
+/* Duplicate S, returning an identical malloc'd string. */
+#if @GNULIB_STRDUP@
+# if ! @HAVE_DECL_STRDUP@ && ! defined strdup
+extern char *strdup (char const *__s);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strdup
+# define strdup(a) \
+ (GL_LINK_WARNING ("strdup is unportable - " \
+ "use gnulib module strdup for portability"), \
+ strdup (a))
+#endif
+
+/* Return a newly allocated copy of at most N bytes of STRING. */
+#if @GNULIB_STRNDUP@
+# if ! @HAVE_STRNDUP@
+# undef strndup
+# define strndup rpl_strndup
+# endif
+# if ! @HAVE_STRNDUP@ || ! @HAVE_DECL_STRNDUP@
+extern char *strndup (char const *__string, size_t __n);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strndup
+# define strndup(a,n) \
+ (GL_LINK_WARNING ("strndup is unportable - " \
+ "use gnulib module strndup for portability"), \
+ strndup (a, n))
+#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 ! @HAVE_DECL_STRNLEN@
+extern size_t strnlen (char const *__string, size_t __maxlen);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strnlen
+# define strnlen(a,n) \
+ (GL_LINK_WARNING ("strnlen is unportable - " \
+ "use gnulib module strnlen for portability"), \
+ strnlen (a, n))
+#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
+# define strcspn(s,a) \
+ (GL_LINK_WARNING ("strcspn cannot work correctly on character strings " \
+ "in multibyte locales - " \
+ "use mbscspn if you care about internationalization"), \
+ strcspn (s, a))
+#endif
+
+/* Find the first occurrence in S of any character in ACCEPT. */
+#if @GNULIB_STRPBRK@
+# if ! @HAVE_STRPBRK@
+extern char *strpbrk (char const *__s, char const *__accept);
+# 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
+# define strpbrk(s,a) \
+ (GL_LINK_WARNING ("strpbrk cannot work correctly on character strings " \
+ "in multibyte locales - " \
+ "use mbspbrk if you care about internationalization"), \
+ strpbrk (s, a))
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strpbrk
+# define strpbrk(s,a) \
+ (GL_LINK_WARNING ("strpbrk is unportable - " \
+ "use gnulib module strpbrk for portability"), \
+ strpbrk (s, a))
+#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
+# define strspn(s,a) \
+ (GL_LINK_WARNING ("strspn cannot work correctly on character strings " \
+ "in multibyte locales - " \
+ "use mbsspn if you care about internationalization"), \
+ strspn (s, a))
+#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
+# define strrchr(s,c) \
+ (GL_LINK_WARNING ("strrchr cannot work correctly on character strings " \
+ "in some multibyte locales - " \
+ "use mbsrchr if you care about internationalization"), \
+ strrchr (s, c))
+#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@
+extern char *strsep (char **restrict __stringp, char const *restrict __delim);
+# endif
+# if defined GNULIB_POSIXCHECK
+# undef strsep
+# define strsep(s,d) \
+ (GL_LINK_WARNING ("strsep cannot work correctly on character strings " \
+ "in multibyte locales - " \
+ "use mbssep if you care about internationalization"), \
+ strsep (s, d))
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strsep
+# define strsep(s,d) \
+ (GL_LINK_WARNING ("strsep is unportable - " \
+ "use gnulib module strsep for portability"), \
+ strsep (s, d))
+#endif
+
+#if 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
+# define strstr(a,b) \
+ (GL_LINK_WARNING ("strstr cannot work correctly on character strings " \
+ "in most multibyte locales - " \
+ "use mbsstr if you care about internationalization"), \
+ strstr (a, b))
+#endif
+
+/* Find the first occurrence of NEEDLE in HAYSTACK, using case-insensitive
+ comparison. */
+#if ! @HAVE_STRCASESTR@
+extern char *strcasestr (const char *haystack, const char *needle);
+#endif
+#if 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
+# define strcasestr(a,b) \
+ (GL_LINK_WARNING ("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"), \
+ strcasestr (a, b))
+#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 ! @HAVE_DECL_STRTOK_R@
+extern char *strtok_r (char *restrict s, char const *restrict delim,
+ char **restrict save_ptr);
+# endif
+# if defined GNULIB_POSIXCHECK
+# undef strtok_r
+# define strtok_r(s,d,p) \
+ (GL_LINK_WARNING ("strtok_r cannot work correctly on character strings " \
+ "in multibyte locales - " \
+ "use mbstok_r if you care about internationalization"), \
+ strtok_r (s, d, p))
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef strtok_r
+# define strtok_r(s,d,p) \
+ (GL_LINK_WARNING ("strtok_r is unportable - " \
+ "use gnulib module strtok_r for portability"), \
+ strtok_r (s, d, p))
+#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. */
+extern size_t mbslen (const char *string);
+#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. */
+# define mbschr rpl_mbschr /* avoid collision with HP-UX function */
+extern char * mbschr (const char *string, int c);
+#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. */
+# define mbsrchr rpl_mbsrchr /* avoid collision with HP-UX function */
+extern char * mbsrchr (const char *string, int c);
+#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. */
+extern char * mbsstr (const char *haystack, const char *needle);
+#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. */
+extern int mbscasecmp (const char *s1, const char *s2);
+#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! */
+extern int mbsncasecmp (const char *s1, const char *s2, size_t n);
+#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, returning less than, equal to or greater than zero if this
+ initial segment is lexicographically less than, equal to or greater than
+ PREFIX.
+ Note: This function may, in multibyte locales, return 0 if STRING is of
+ smaller length than PREFIX!
+ Unlike strncasecmp(), this function works correctly in multibyte
+ locales. */
+extern char * mbspcasecmp (const char *string, const char *prefix);
+#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. */
+extern char * mbscasestr (const char *haystack, const char *needle);
+#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. */
+extern size_t mbscspn (const char *string, const char *accept);
+#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. */
+# define mbspbrk rpl_mbspbrk /* avoid collision with HP-UX function */
+extern char * mbspbrk (const char *string, const char *accept);
+#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. */
+extern size_t mbsspn (const char *string, const char *reject);
+#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(). */
+extern char * mbssep (char **stringp, const char *delim);
+#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(). */
+extern char * mbstok_r (char *string, const char *delim, char **save_ptr);
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
diff --git a/parted-1.8.7/lib/stripslash.c b/parted-1.8.7/lib/stripslash.c
new file mode 100644
index 0000000..342d497
--- /dev/null
+++ b/parted-1.8.7/lib/stripslash.c
@@ -0,0 +1,45 @@
+/* stripslash.c -- remove redundant trailing slashes from a file name
+
+ Copyright (C) 1990, 2001, 2003-2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#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/parted-1.8.7/lib/strndup.c b/parted-1.8.7/lib/strndup.c
new file mode 100644
index 0000000..3a1b0ea
--- /dev/null
+++ b/parted-1.8.7/lib/strndup.c
@@ -0,0 +1,37 @@
+/* A replacement function, for systems that lack strndup.
+
+ Copyright (C) 1996, 1997, 1998, 2001, 2002, 2003, 2005, 2006, 2007
+ 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, 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/parted-1.8.7/lib/strnlen.c b/parted-1.8.7/lib/strnlen.c
new file mode 100644
index 0000000..d346d32
--- /dev/null
+++ b/parted-1.8.7/lib/strnlen.c
@@ -0,0 +1,31 @@
+/* Find the length of STRING, but scan at most MAXLEN characters.
+ Copyright (C) 2005, 2006, 2007 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 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, 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/parted-1.8.7/lib/strtod.c b/parted-1.8.7/lib/strtod.c
new file mode 100644
index 0000000..fdfc09f
--- /dev/null
+++ b/parted-1.8.7/lib/strtod.c
@@ -0,0 +1,174 @@
+/* Copyright (C) 1991, 1992, 1997, 1999, 2003, 2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#include <errno.h>
+
+#include <ctype.h>
+
+#include <math.h>
+
+#include <float.h>
+#include <stdlib.h>
+#include <string.h>
+
+/* Convert NPTR to a double. If ENDPTR is not NULL, a pointer to the
+ character after the last one used in the number is put in *ENDPTR. */
+double
+strtod (const char *nptr, char **endptr)
+{
+ register const char *s;
+ short int sign;
+
+ /* The number so far. */
+ double num;
+
+ int got_dot; /* Found a decimal point. */
+ int got_digit; /* Seen any digits. */
+
+ /* The exponent of the number. */
+ long int exponent;
+
+ if (nptr == NULL)
+ {
+ errno = EINVAL;
+ goto noconv;
+ }
+
+ s = nptr;
+
+ /* Eat whitespace. */
+ while (isspace ((unsigned char) *s))
+ ++s;
+
+ /* Get the sign. */
+ sign = *s == '-' ? -1 : 1;
+ if (*s == '-' || *s == '+')
+ ++s;
+
+ num = 0.0;
+ got_dot = 0;
+ got_digit = 0;
+ exponent = 0;
+ for (;; ++s)
+ {
+ if ('0' <= *s && *s <= '9')
+ {
+ got_digit = 1;
+
+ /* Make sure that multiplication by 10 will not overflow. */
+ if (num > DBL_MAX * 0.1)
+ /* The value of the digit doesn't matter, since we have already
+ gotten as many digits as can be represented in a `double'.
+ This doesn't necessarily mean the result will overflow.
+ The exponent may reduce it to within range.
+
+ We just need to record that there was another
+ digit so that we can multiply by 10 later. */
+ ++exponent;
+ else
+ num = (num * 10.0) + (*s - '0');
+
+ /* Keep track of the number of digits after the decimal point.
+ If we just divided by 10 here, we would lose precision. */
+ if (got_dot)
+ --exponent;
+ }
+ else if (!got_dot && *s == '.')
+ /* Record that we have found the decimal point. */
+ got_dot = 1;
+ else
+ /* Any other character terminates the number. */
+ break;
+ }
+
+ if (!got_digit)
+ goto noconv;
+
+ if (tolower ((unsigned char) *s) == 'e')
+ {
+ /* Get the exponent specified after the `e' or `E'. */
+ int save = errno;
+ char *end;
+ long int exp;
+
+ errno = 0;
+ ++s;
+ exp = strtol (s, &end, 10);
+ if (errno == ERANGE)
+ {
+ /* The exponent overflowed a `long int'. It is probably a safe
+ assumption that an exponent that cannot be represented by
+ a `long int' exceeds the limits of a `double'. */
+ if (endptr != NULL)
+ *endptr = end;
+ if (exp < 0)
+ goto underflow;
+ else
+ goto overflow;
+ }
+ else if (end == s)
+ /* There was no exponent. Reset END to point to
+ the 'e' or 'E', so *ENDPTR will be set there. */
+ end = (char *) s - 1;
+ errno = save;
+ s = end;
+ exponent += exp;
+ }
+
+ if (endptr != NULL)
+ *endptr = (char *) s;
+
+ if (num == 0.0)
+ return 0.0;
+
+ /* Multiply NUM by 10 to the EXPONENT power,
+ checking for overflow and underflow. */
+
+ if (exponent < 0)
+ {
+ if (num < DBL_MIN * pow (10.0, (double) -exponent))
+ goto underflow;
+ }
+ else if (exponent > 0)
+ {
+ if (num > DBL_MAX * pow (10.0, (double) -exponent))
+ goto overflow;
+ }
+
+ num *= pow (10.0, (double) exponent);
+
+ return num * sign;
+
+overflow:
+ /* Return an overflow error. */
+ errno = ERANGE;
+ return HUGE_VAL * sign;
+
+underflow:
+ /* Return an underflow error. */
+ if (endptr != NULL)
+ *endptr = (char *) nptr;
+ errno = ERANGE;
+ return 0.0;
+
+noconv:
+ /* There was no number. */
+ if (endptr != NULL)
+ *endptr = (char *) nptr;
+ return 0.0;
+}
diff --git a/parted-1.8.7/lib/strtol.c b/parted-1.8.7/lib/strtol.c
new file mode 100644
index 0000000..e14d3cf
--- /dev/null
+++ b/parted-1.8.7/lib/strtol.c
@@ -0,0 +1,436 @@
+/* Convert string representation of a number into an integer value.
+
+ Copyright (C) 1991, 1992, 1994, 1995, 1996, 1997, 1998, 1999, 2003, 2005,
+ 2006, 2007
+ 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 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#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 LONG_LONG_MIN
+# define STRTOL_LONG_MAX LONG_LONG_MAX
+# define STRTOL_ULONG_MAX ULONG_LONG_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 \
+ : ~ (t) 0 << (sizeof (t) * CHAR_BIT - 1)))
+# define TYPE_MAXIMUM(t) \
+ ((t) (! TYPE_SIGNED (t) \
+ ? (t) -1 \
+ : ~ (~ (t) 0 << (sizeof (t) * CHAR_BIT - 1))))
+
+# ifndef ULONG_LONG_MAX
+# define ULONG_LONG_MAX TYPE_MAXIMUM (unsigned long long)
+# endif
+# ifndef LONG_LONG_MAX
+# define LONG_LONG_MAX TYPE_MAXIMUM (long long int)
+# endif
+# ifndef LONG_LONG_MIN
+# define LONG_LONG_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 = ULONG_LONG_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
+
+#include <wchar.h>
+
+#ifdef USE_WIDE_CHAR
+# 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;
+}
+
+/* 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/parted-1.8.7/lib/unistd_.h b/parted-1.8.7/lib/unistd_.h
new file mode 100644
index 0000000..9beffce
--- /dev/null
+++ b/parted-1.8.7/lib/unistd_.h
@@ -0,0 +1,216 @@
+/* Substitute for and wrapper around <unistd.h>.
+ Copyright (C) 2004-2007 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef _GL_UNISTD_H
+#define _GL_UNISTD_H
+
+#if @HAVE_UNISTD_H@
+# include @ABSOLUTE_UNISTD_H@
+#endif
+
+/* mingw doesn't define the SEEK_* macros in <unistd.h>. */
+#if !(defined SEEK_CUR && defined SEEK_END && defined SEEK_SET)
+# include <stdio.h>
+#endif
+
+/* mingw fails to declare _exit in <unistd.h>. */
+#include <stdlib.h>
+
+/* The definition of GL_LINK_WARNING is copied here. */
+
+
+/* Declare overridden functions. */
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#if @GNULIB_CHOWN@
+# if @REPLACE_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).
+ Return 0 if successful, otherwise -1 and errno set.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/chown.html>. */
+# define chown rpl_chown
+extern int chown (const char *file, uid_t uid, gid_t gid);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef chown
+# define chown(f,u,g) \
+ (GL_LINK_WARNING ("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"), \
+ chown (f, u, g))
+#endif
+
+
+#if @GNULIB_DUP2@
+# if !@HAVE_DUP2@
+/* Copy the file descriptor OLDFD into file descriptor NEWFD. Do nothing if
+ NEWFD = OLDFD, otherwise close NEWFD first if it is open.
+ Return 0 if successful, otherwise -1 and errno set.
+ See the POSIX:2001 specification
+ <http://www.opengroup.org/susv3xsh/dup2.html>. */
+extern int dup2 (int oldfd, int newfd);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef dup2
+# define dup2(o,n) \
+ (GL_LINK_WARNING ("dup2 is unportable - " \
+ "use gnulib module dup2 for portability"), \
+ dup2 (o, n))
+#endif
+
+
+#if @GNULIB_FCHDIR@
+# if @REPLACE_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>. */
+extern int fchdir (int /*fd*/);
+
+# define close rpl_close
+extern int close (int);
+# define dup rpl_dup
+extern int dup (int);
+# define dup2 rpl_dup2
+extern int dup2 (int, int);
+
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef fchdir
+# define fchdir(f) \
+ (GL_LINK_WARNING ("fchdir is unportable - " \
+ "use gnulib module fchdir for portability"), \
+ fchdir (f))
+#endif
+
+
+#if @GNULIB_FTRUNCATE@
+# if !@HAVE_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>. */
+extern int ftruncate (int fd, off_t length);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef ftruncate
+# define ftruncate(f,l) \
+ (GL_LINK_WARNING ("ftruncate is unportable - " \
+ "use gnulib module ftruncate for portability"), \
+ ftruncate (f, l))
+#endif
+
+
+#if @GNULIB_GETCWD@
+/* Include the headers that might declare getcwd so that they will not
+ cause confusion if included after this file. */
+# include <stdlib.h>
+# if @REPLACE_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. */
+# define getcwd rpl_getcwd
+extern char * getcwd (char *buf, size_t size);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getcwd
+# define getcwd(b,s) \
+ (GL_LINK_WARNING ("getcwd is unportable - " \
+ "use gnulib module getcwd for portability"), \
+ getcwd (b, s))
+#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>.
+ */
+# if !@HAVE_DECL_GETLOGIN_R@
+# include <stddef.h>
+extern int getlogin_r (char *name, size_t size);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef getlogin_r
+# define getlogin_r(n,s) \
+ (GL_LINK_WARNING ("getlogin_r is unportable - " \
+ "use gnulib module getlogin_r for portability"), \
+ getlogin_r (n, s))
+#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 !@HAVE_READLINK@
+# include <stddef.h>
+extern int readlink (const char *file, char *buf, size_t bufsize);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef readlink
+# define readlink(f,b,s) \
+ (GL_LINK_WARNING ("readlink is unportable - " \
+ "use gnulib module readlink for portability"), \
+ readlink (f, b, s))
+#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 !@HAVE_SLEEP@
+extern unsigned int sleep (unsigned int n);
+# endif
+#elif defined GNULIB_POSIXCHECK
+# undef sleep
+# define sleep(n) \
+ (GL_LINK_WARNING ("sleep is unportable - " \
+ "use gnulib module sleep for portability"), \
+ sleep (n))
+#endif
+
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif /* _GL_UNISTD_H */
diff --git a/parted-1.8.7/lib/utime.c b/parted-1.8.7/lib/utime.c
new file mode 100644
index 0000000..273a5fb
--- /dev/null
+++ b/parted-1.8.7/lib/utime.c
@@ -0,0 +1,109 @@
+/* Copyright (C) 1998, 2001, 2002, 2003, 2004, 2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* derived from a function in touch.c */
+
+#include <config.h>
+#undef utime
+
+#include <sys/types.h>
+
+#ifdef HAVE_UTIME_H
+# include <utime.h>
+#endif
+
+#if !HAVE_UTIMES_NULL
+# include <sys/stat.h>
+# include <fcntl.h>
+#endif
+
+#include <unistd.h>
+#include <errno.h>
+
+#include "full-write.h"
+#include "safe-read.h"
+
+/* Some systems (even some that do have <utime.h>) don't declare this
+ structure anywhere. */
+#ifndef HAVE_STRUCT_UTIMBUF
+struct utimbuf
+{
+ long actime;
+ long modtime;
+};
+#endif
+
+/* The results of open() in this file are not used with fchdir,
+ therefore save some unnecessary work in fchdir.c. */
+#undef open
+#undef close
+
+/* Emulate utime (file, NULL) for systems (like 4.3BSD) that do not
+ interpret it to set the access and modification times of FILE to
+ the current time. Return 0 if successful, -1 if not. */
+
+static int
+utime_null (const char *file)
+{
+#if HAVE_UTIMES_NULL
+ return utimes (file, 0);
+#else
+ int fd;
+ char c;
+ int status = 0;
+ struct stat st;
+ int saved_errno = 0;
+
+ fd = open (file, O_RDWR);
+ if (fd < 0
+ || fstat (fd, &st) < 0
+ || safe_read (fd, &c, sizeof c) == SAFE_READ_ERROR
+ || lseek (fd, (off_t) 0, SEEK_SET) < 0
+ || full_write (fd, &c, sizeof c) != sizeof c
+ /* Maybe do this -- it's necessary on SunOS 4.1.3 with some combination
+ of patches, but that system doesn't use this code: it has utimes.
+ || fsync (fd) < 0
+ */
+ || (st.st_size == 0 && ftruncate (fd, st.st_size) < 0))
+ {
+ saved_errno = errno;
+ status = -1;
+ }
+
+ if (0 <= fd)
+ {
+ if (close (fd) < 0)
+ status = -1;
+
+ /* If there was a prior failure, use the saved errno value.
+ But if the only failure was in the close, don't change errno. */
+ if (saved_errno)
+ errno = saved_errno;
+ }
+
+ return status;
+#endif
+}
+
+int
+rpl_utime (const char *file, const struct utimbuf *times)
+{
+ if (times)
+ return utime (file, times);
+
+ return utime_null (file);
+}
diff --git a/parted-1.8.7/lib/version-etc-fsf.c b/parted-1.8.7/lib/version-etc-fsf.c
new file mode 100644
index 0000000..f25eb65
--- /dev/null
+++ b/parted-1.8.7/lib/version-etc-fsf.c
@@ -0,0 +1,31 @@
+/* Variable with FSF copyright information, for version-etc.
+ Copyright (C) 1999-2006 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, 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 "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/parted-1.8.7/lib/version-etc.c b/parted-1.8.7/lib/version-etc.c
new file mode 100644
index 0000000..1ae82c4
--- /dev/null
+++ b/parted-1.8.7/lib/version-etc.c
@@ -0,0 +1,173 @@
+/* Utility to help print --version output in a consistent format.
+ Copyright (C) 1999-2007 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, 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 "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)
+
+enum { COPYRIGHT_YEAR = 2007 };
+
+/* Like version_etc, below, but with the NULL-terminated author list
+ provided via a variable of type va_list. */
+void
+version_etc_va (FILE *stream,
+ const char *command_name, const char *package,
+ const char *version, va_list authors)
+{
+ size_t n_authors;
+
+ /* Count the number of authors. */
+ {
+ va_list tmp_authors;
+
+ va_copy (tmp_authors, authors);
+
+ n_authors = 0;
+ while (va_arg (tmp_authors, const char *) != NULL)
+ ++n_authors;
+ }
+
+ if (command_name)
+ fprintf (stream, "%s (%s) %s\n", command_name, package, version);
+ else
+ fprintf (stream, "%s %s\n", package, version);
+
+ /* 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 GPLv2+: GNU GPL version 2 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. */
+ vfprintf (stream, _("Written by %s.\n"), authors);
+ break;
+ case 2:
+ /* TRANSLATORS: Each %s denotes an author name. */
+ vfprintf (stream, _("Written by %s and %s.\n"), authors);
+ break;
+ case 3:
+ /* TRANSLATORS: Each %s denotes an author name. */
+ vfprintf (stream, _("Written by %s, %s, and %s.\n"), authors);
+ 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. */
+ vfprintf (stream, _("Written by %s, %s, %s,\nand %s.\n"), authors);
+ 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. */
+ vfprintf (stream, _("Written by %s, %s, %s,\n%s, and %s.\n"), authors);
+ 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. */
+ vfprintf (stream, _("Written by %s, %s, %s,\n%s, %s, and %s.\n"),
+ authors);
+ 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. */
+ vfprintf (stream, _("Written by %s, %s, %s,\n%s, %s, %s, and %s.\n"),
+ authors);
+ 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. */
+ vfprintf (stream, _("\
+Written by %s, %s, %s,\n%s, %s, %s, %s,\nand %s.\n"),
+ authors);
+ 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. */
+ vfprintf (stream, _("\
+Written by %s, %s, %s,\n%s, %s, %s, %s,\n%s, and %s.\n"),
+ authors);
+ 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. */
+ vfprintf (stream, _("\
+Written by %s, %s, %s,\n%s, %s, %s, %s,\n%s, %s, and others.\n"),
+ authors);
+ break;
+ }
+ va_end (authors);
+}
+
+
+/* Display the --version information the standard way.
+
+ 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 author 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);
+}
diff --git a/parted-1.8.7/lib/version-etc.h b/parted-1.8.7/lib/version-etc.h
new file mode 100644
index 0000000..84da535
--- /dev/null
+++ b/parted-1.8.7/lib/version-etc.h
@@ -0,0 +1,37 @@
+/* Utility to help print --version output in a consistent format.
+ Copyright (C) 1999, 2003, 2005 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+/* Written by Jim Meyering. */
+
+#ifndef VERSION_ETC_H
+# define VERSION_ETC_H 1
+
+# include <stdarg.h>
+# include <stdio.h>
+
+extern const char version_etc_copyright[];
+
+extern void version_etc_va (FILE *stream,
+ const char *command_name, const char *package,
+ const char *version, va_list authors);
+
+extern void version_etc (FILE *stream,
+ const char *command_name, const char *package,
+ const char *version,
+ /* const char *author1, ...*/ ...);
+
+#endif /* VERSION_ETC_H */
diff --git a/parted-1.8.7/lib/wchar_.h b/parted-1.8.7/lib/wchar_.h
new file mode 100644
index 0000000..7a93d07
--- /dev/null
+++ b/parted-1.8.7/lib/wchar_.h
@@ -0,0 +1,49 @@
+/* A substitute for ISO C99 <wchar.h>, for platforms that have issues.
+
+ Copyright (C) 2007 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, 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.
+ */
+
+#if defined __DECC && __DECC_VER >= 60000000
+# include <stdio.h>
+# include_next <wchar.h>
+#endif
+
+#ifndef _GL_WCHAR_H
+#define _GL_WCHAR_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 the original <wchar.h>. */
+#if !(defined __DECC && __DECC_VER >= 60000000)
+# include @ABSOLUTE_WCHAR_H@
+#endif
+
+#endif /* _GL_WCHAR_H */
diff --git a/parted-1.8.7/lib/wctype_.h b/parted-1.8.7/lib/wctype_.h
new file mode 100644
index 0000000..110a68e
--- /dev/null
+++ b/parted-1.8.7/lib/wctype_.h
@@ -0,0 +1,165 @@
+/* A substitute for ISO C99 <wctype.h>, for platforms that lack it.
+
+ Copyright (C) 2006, 2007 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, 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.
+ */
+
+#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
+
+#if @HAVE_WCTYPE_H@
+# if defined __DECC && __DECC_VER >= 60000000
+# include_next <wctype.h>
+# endif
+#endif
+
+#ifndef _GL_WCTYPE_H
+#define _GL_WCTYPE_H
+
+/* Include the original <wctype.h> if it exists.
+ BeOS 5 has the functions but no <wctype.h>. */
+#if @HAVE_WCTYPE_H@
+# if !(defined __DECC && __DECC_VER >= 60000000)
+# include @ABSOLUTE_WCTYPE_H@
+# endif
+#endif
+
+#if @HAVE_WINT_T@
+typedef wint_t __wctype_wint_t;
+#else
+typedef int __wctype_wint_t;
+#endif
+
+/* FreeBSD 4.4 to 4.11 has <wctype.h> but lacks the functions.
+ Assume all 12 functions are implemented the same way, or not at all. */
+#if ! @HAVE_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
+
+static inline int
+iswalnum (__wctype_wint_t wc)
+{
+ return ((wc >= '0' && wc <= '9')
+ || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'));
+}
+
+static inline int
+iswalpha (__wctype_wint_t wc)
+{
+ return (wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z';
+}
+
+static inline int
+iswblank (__wctype_wint_t wc)
+{
+ return wc == ' ' || wc == '\t';
+}
+
+static inline int
+iswcntrl (__wctype_wint_t wc)
+{
+ return (wc & ~0x1f) == 0 || wc == 0x7f;
+}
+
+static inline int
+iswdigit (__wctype_wint_t wc)
+{
+ return wc >= '0' && wc <= '9';
+}
+
+static inline int
+iswgraph (__wctype_wint_t wc)
+{
+ return wc >= '!' && wc <= '~';
+}
+
+static inline int
+iswlower (__wctype_wint_t wc)
+{
+ return wc >= 'a' && wc <= 'z';
+}
+
+static inline int
+iswprint (__wctype_wint_t wc)
+{
+ return wc >= ' ' && wc <= '~';
+}
+
+static inline int
+iswpunct (__wctype_wint_t wc)
+{
+ return (wc >= '!' && wc <= '~'
+ && !((wc >= '0' && wc <= '9')
+ || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z')));
+}
+
+static inline int
+iswspace (__wctype_wint_t wc)
+{
+ return (wc == ' ' || wc == '\t'
+ || wc == '\n' || wc == '\v' || wc == '\f' || wc == '\r');
+}
+
+static inline int
+iswupper (__wctype_wint_t wc)
+{
+ return wc >= 'A' && wc <= 'Z';
+}
+
+static inline int
+iswxdigit (__wctype_wint_t wc)
+{
+ return ((wc >= '0' && wc <= '9')
+ || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F'));
+}
+
+# endif /* ! HAVE_ISWCNTRL */
+
+#endif /* _GL_WCTYPE_H */
diff --git a/parted-1.8.7/lib/xalloc-die.c b/parted-1.8.7/lib/xalloc-die.c
new file mode 100644
index 0000000..090f060
--- /dev/null
+++ b/parted-1.8.7/lib/xalloc-die.c
@@ -0,0 +1,42 @@
+/* Report a memory allocation failure and exit.
+
+ Copyright (C) 1997, 1998, 1999, 2000, 2002, 2003, 2004, 2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#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/parted-1.8.7/lib/xalloc.h b/parted-1.8.7/lib/xalloc.h
new file mode 100644
index 0000000..0c6d8dc
--- /dev/null
+++ b/parted-1.8.7/lib/xalloc.h
@@ -0,0 +1,271 @@
+/* xalloc.h -- malloc with out-of-memory checking
+
+ Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+ 1999, 2000, 2003, 2004, 2006, 2007 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#ifndef XALLOC_H_
+# define XALLOC_H_
+
+# include <stddef.h>
+
+
+# ifdef __cplusplus
+extern "C" {
+# endif
+
+
+# ifndef __attribute__
+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 8) || __STRICT_ANSI__
+# define __attribute__(x)
+# endif
+# endif
+
+# ifndef ATTRIBUTE_NORETURN
+# define ATTRIBUTE_NORETURN __attribute__ ((__noreturn__))
+# 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) ATTRIBUTE_NORETURN;
+
+void *xmalloc (size_t s);
+void *xzalloc (size_t s);
+void *xcalloc (size_t n, size_t s);
+void *xrealloc (void *p, size_t s);
+void *x2realloc (void *p, size_t *pn);
+void *xmemdup (void const *p, size_t s);
+char *xstrdup (char const *str);
+
+/* 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))
+
+
+/* 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);
+ void *xnrealloc (void *p, size_t n, size_t s);
+ void *x2nrealloc (void *p, size_t *pn, size_t s);
+ char *xcharalloc (size_t n);
+# 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)
+{
+ 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)
+{
+ 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)
+{
+ 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/parted-1.8.7/lib/xmalloc.c b/parted-1.8.7/lib/xmalloc.c
new file mode 100644
index 0000000..318e0dd
--- /dev/null
+++ b/parted-1.8.7/lib/xmalloc.c
@@ -0,0 +1,123 @@
+/* xmalloc.c -- malloc with out of memory checking
+
+ Copyright (C) 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
+ 1999, 2000, 2002, 2003, 2004, 2005, 2006 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#include <config.h>
+
+#if ! HAVE_INLINE
+# define static_inline
+#endif
+#include "xalloc.h"
+#undef static_inline
+
+#include <stdlib.h>
+#include <string.h>
+
+#ifndef SIZE_MAX
+# define SIZE_MAX ((size_t) -1)
+#endif
+
+/* 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 and supports the GNU API even on non-GNU platforms. */
+#if defined HAVE_CALLOC || defined __GLIBC__
+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)
+{
+ p = realloc (p, n);
+ if (!p && n != 0)
+ 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/parted-1.8.7/lib/xstrndup.c b/parted-1.8.7/lib/xstrndup.c
new file mode 100644
index 0000000..7ccefd7
--- /dev/null
+++ b/parted-1.8.7/lib/xstrndup.c
@@ -0,0 +1,37 @@
+/* Duplicate a bounded initial segment of a string, with out-of-memory
+ checking.
+ Copyright (C) 2003, 2006, 2007 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#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/parted-1.8.7/lib/xstrndup.h b/parted-1.8.7/lib/xstrndup.h
new file mode 100644
index 0000000..88354cf
--- /dev/null
+++ b/parted-1.8.7/lib/xstrndup.h
@@ -0,0 +1,24 @@
+/* Duplicate a bounded initial segment of a string, with out-of-memory
+ checking.
+ Copyright (C) 2003 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, write to the Free Software Foundation,
+ Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */
+
+#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/parted-1.8.7/libparted.pc.in b/parted-1.8.7/libparted.pc.in
new file mode 100644
index 0000000..0943bf0
--- /dev/null
+++ b/parted-1.8.7/libparted.pc.in
@@ -0,0 +1,11 @@
+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/parted-1.8.7/libparted/Makefile.am b/parted-1.8.7/libparted/Makefile.am
new file mode 100644
index 0000000..0b013cc
--- /dev/null
+++ b/parted-1.8.7/libparted/Makefile.am
@@ -0,0 +1,49 @@
+# This file is part of GNU Parted
+# Copyright (C) 1999, 2000, 2001, 2007 Free Software Foundation, Inc.
+#
+# This file may be modified and/or distributed without restriction.
+
+if HAVE_CHECK
+SUBDIRS_CHECK = tests
+else
+SUBDIRS_CHECK =
+endif
+
+SUBDIRS = labels fs . $(SUBDIRS_CHECK)
+
+
+partedincludedir = -I$(top_srcdir)/lib -I$(top_srcdir)/include
+lib_LTLIBRARIES = libparted.la
+libparted_la_LDFLAGS = -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+ -release $(LT_RELEASE)
+libparted_la_SOURCES = debug.c \
+ device.c \
+ exception.c \
+ filesys.c \
+ libparted.c \
+ timer.c \
+ unit.c \
+ disk.c \
+ cs/geom.c \
+ cs/constraint.c \
+ cs/natmath.c \
+ arch/blkpg.h \
+ arch/$(OS).c
+
+EXTRA_libparted_la_SOURCES = arch/linux.c \
+ arch/gnu.c \
+ arch/beos.c
+
+libparted_la_LIBADD = $(OS_LIBS) \
+ $(DL_LIBS) \
+ $(DM_LIBS) \
+ $(SELINUX_LIBS) \
+ $(INTLLIBS) \
+ fs/libfs.la \
+ labels/liblabels.la
+
+EXTRA_DIST = mbr.s
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/parted-1.8.7/libparted/Makefile.in b/parted-1.8.7/libparted/Makefile.in
new file mode 100644
index 0000000..67c20ff
--- /dev/null
+++ b/parted-1.8.7/libparted/Makefile.in
@@ -0,0 +1,877 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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, 2000, 2001, 2007 Free Software Foundation, Inc.
+#
+# This file may be modified and/or distributed without restriction.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+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 = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(libdir)"
+libLTLIBRARIES_INSTALL = $(INSTALL)
+LTLIBRARIES = $(lib_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+libparted_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1) fs/libfs.la \
+ labels/liblabels.la
+am_libparted_la_OBJECTS = debug.lo device.lo exception.lo filesys.lo \
+ libparted.lo timer.lo unit.lo disk.lo geom.lo constraint.lo \
+ natmath.lo $(OS).lo
+libparted_la_OBJECTS = $(am_libparted_la_OBJECTS)
+libparted_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(libparted_la_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I. -I$(top_builddir)/lib@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libparted_la_SOURCES) $(EXTRA_libparted_la_SOURCES)
+DIST_SOURCES = $(libparted_la_SOURCES) $(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
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = labels fs . tests
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+@HAVE_CHECK_FALSE@SUBDIRS_CHECK =
+@HAVE_CHECK_TRUE@SUBDIRS_CHECK = tests
+SUBDIRS = labels fs . $(SUBDIRS_CHECK)
+partedincludedir = -I$(top_srcdir)/lib -I$(top_srcdir)/include
+lib_LTLIBRARIES = libparted.la
+libparted_la_LDFLAGS = -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
+ -release $(LT_RELEASE)
+
+libparted_la_SOURCES = debug.c \
+ device.c \
+ exception.c \
+ filesys.c \
+ libparted.c \
+ timer.c \
+ unit.c \
+ disk.c \
+ cs/geom.c \
+ cs/constraint.c \
+ cs/natmath.c \
+ arch/blkpg.h \
+ arch/$(OS).c
+
+EXTRA_libparted_la_SOURCES = arch/linux.c \
+ arch/gnu.c \
+ arch/beos.c
+
+libparted_la_LIBADD = $(OS_LIBS) \
+ $(DL_LIBS) \
+ $(DM_LIBS) \
+ $(SELINUX_LIBS) \
+ $(INTLLIBS) \
+ fs/libfs.la \
+ labels/liblabels.la
+
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/Makefile'; \
+ 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
+install-libLTLIBRARIES: $(lib_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+ test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) '$$p' '$(DESTDIR)$(libdir)/$$f'"; \
+ $(LIBTOOL) --mode=install $(libLTLIBRARIES_INSTALL) $(INSTALL_STRIP_FLAG) "$$p" "$(DESTDIR)$(libdir)/$$f"; \
+ else :; fi; \
+ done
+
+uninstall-libLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$p"; \
+ done
+
+clean-libLTLIBRARIES:
+ -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
+ @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libparted.la: $(libparted_la_OBJECTS) $(libparted_la_DEPENDENCIES)
+ $(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)/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@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+geom.lo: cs/geom.c
+@am__fastdepCC_TRUE@ $(LIBTOOL) --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@ mv -f $(DEPDIR)/geom.Tpo $(DEPDIR)/geom.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cs/geom.c' object='geom.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) --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@ $(LIBTOOL) --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@ mv -f $(DEPDIR)/constraint.Tpo $(DEPDIR)/constraint.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cs/constraint.c' object='constraint.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) --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@ $(LIBTOOL) --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@ mv -f $(DEPDIR)/natmath.Tpo $(DEPDIR)/natmath.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='cs/natmath.c' object='natmath.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) --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@ $(LIBTOOL) --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@ mv -f $(DEPDIR)/$(OS).Tpo $(DEPDIR)/$(OS).Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='arch/$(OS).c' object='$(OS).lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) --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@ $(LIBTOOL) --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@ mv -f $(DEPDIR)/linux.Tpo $(DEPDIR)/linux.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='arch/linux.c' object='linux.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) --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@ $(LIBTOOL) --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@ mv -f $(DEPDIR)/gnu.Tpo $(DEPDIR)/gnu.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='arch/gnu.c' object='gnu.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) --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@ $(LIBTOOL) --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@ mv -f $(DEPDIR)/beos.Tpo $(DEPDIR)/beos.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='arch/beos.c' object='beos.lo' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LIBTOOL) --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):
+ @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; \
+ (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):
+ @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; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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 || \
+ tags="$$tags $$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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ 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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-exec-am: install-libLTLIBRARIES
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+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) install-am \
+ install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic \
+ clean-libLTLIBRARIES clean-libtool 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/parted-1.8.7/libparted/arch/beos.c b/parted-1.8.7/libparted/arch/beos.c
new file mode 100644
index 0000000..6b6c897
--- /dev/null
+++ b/parted-1.8.7/libparted/arch/beos.c
@@ -0,0 +1,640 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2006, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <parted/beos.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 */
+
+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, return 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:
+ ped_free (dev->arch_specific);
+
+error_free_path:
+ ped_free (dev->path);
+
+error_free_dev:
+ ped_free (dev);
+
+error:
+ return NULL;
+}
+
+static void
+beos_destroy (PedDevice* dev)
+{
+ ped_free (dev->arch_specific);
+ ped_free (dev->path);
+ ped_free (dev->model);
+ ped_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, return 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, return 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, return 0);
+
+ 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/parted-1.8.7/libparted/arch/blkpg.h b/parted-1.8.7/libparted/arch/blkpg.h
new file mode 100644
index 0000000..2a5e4fb
--- /dev/null
+++ b/parted-1.8.7/libparted/arch/blkpg.h
@@ -0,0 +1,64 @@
+#ifndef _LINUX_BLKPG_H
+#define _LINUX_BLKPG_H
+
+/*
+ * Partition table and disk geometry handling
+ *
+ * A single ioctl with lots of subfunctions:
+ *
+ * Device number stuff:
+ * get_whole_disk() (given the device number of a partition,
+ * find the device number of the encompassing disk)
+ * get_all_partitions() (given the device number of a disk, return the
+ * device numbers of all its known partitions)
+ *
+ * Partition stuff:
+ * add_partition()
+ * delete_partition()
+ * test_partition_in_use() (also for test_disk_in_use)
+ *
+ * Geometry stuff:
+ * get_geometry()
+ * set_geometry()
+ * get_bios_drivedata()
+ *
+ * For today, only the partition stuff - aeb, 990515
+ */
+#include <linux/ioctl.h>
+
+#define BLKPG _IO(0x12,105)
+
+/* The argument structure */
+struct blkpg_ioctl_arg {
+ int op;
+ int flags;
+ int datalen;
+ void *data;
+};
+
+/* The subfunctions (for the op field) */
+#define BLKPG_ADD_PARTITION 1
+#define BLKPG_DEL_PARTITION 2
+
+/* Sizes of name fields. Unused at present. */
+#define BLKPG_DEVNAMELTH 64
+#define BLKPG_VOLNAMELTH 64
+
+/* The data structure for ADD_PARTITION and DEL_PARTITION */
+struct blkpg_partition {
+ long long start; /* starting offset in bytes */
+ long long length; /* length in bytes */
+ int pno; /* partition number */
+ char devname[BLKPG_DEVNAMELTH]; /* partition name, like sda5 or c0d1p2,
+ to be used in kernel messages */
+ char volname[BLKPG_VOLNAMELTH]; /* volume label */
+};
+
+#ifdef __KERNEL__
+
+extern char * partition_name(kdev_t dev);
+extern int blk_ioctl(kdev_t dev, unsigned int cmd, unsigned long arg);
+
+#endif /* __KERNEL__ */
+
+#endif /* _LINUX_BLKPG_H */
diff --git a/parted-1.8.7/libparted/arch/gnu.c b/parted-1.8.7/libparted/arch/gnu.c
new file mode 100644
index 0000000..badc747
--- /dev/null
+++ b/parted-1.8.7/libparted/arch/gnu.c
@@ -0,0 +1,875 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 1999, 2000, 2001, 2005, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <parted/gnu.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 */
+
+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:
+ ped_free (dev->arch_specific);
+error_free_path:
+ ped_free (dev->path);
+error_free_dev:
+ ped_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)
+{
+ ped_free (dev->arch_specific);
+ ped_free (dev->path);
+ ped_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, return 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, return 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, return 0);
+
+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, return 0);
+ PED_ASSERT (!dev->external_mode, return 0);
+ PED_ASSERT (buffer != NULL, return 0);
+
+ 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, return 0);
+ PED_ASSERT (!dev->external_mode, return 0);
+
+ 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:
+ if (last_failure)
+ ped_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/parted-1.8.7/libparted/arch/linux.c b/parted-1.8.7/libparted/arch/linux.c
new file mode 100644
index 0000000..4bd49cd
--- /dev/null
+++ b/parted-1.8.7/libparted/arch/linux.c
@@ -0,0 +1,2448 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 1999 - 2005, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#define PROC_DEVICES_BUFSIZ 16384
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <parted/linux.h>
+
+#include <ctype.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <libgen.h>
+#include <stdio.h>
+#include <syscall.h>
+#include <unistd.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>
+#ifdef ENABLE_DEVICE_MAPPER
+#include <libdevmapper.h>
+#endif
+
+#include "blkpg.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 */
+
+/* O_DIRECT mode not supported in Sapphire */
+#undef O_DIRECT
+#if defined(O_DIRECT) && (!defined(__s390__) || !defined(__s390x__))
+#define RD_MODE (O_RDONLY | O_DIRECT)
+#define WR_MODE (O_WRONLY | O_DIRECT)
+#define RW_MODE (O_RDWR | O_DIRECT)
+#else
+#define RD_MODE (O_RDONLY)
+#define WR_MODE (O_WRONLY)
+#define RW_MODE (O_RDWR)
+#endif
+
+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 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 SX8_MAJOR1 160
+#define SX8_MAJOR2 161
+
+#define SCSI_BLK_MAJOR(M) ( \
+ (M) == SCSI_DISK0_MAJOR \
+ || (M) == SCSI_CDROM_MAJOR \
+ || ((M) >= SCSI_DISK1_MAJOR && (M) <= SCSI_DISK7_MAJOR))
+
+static char* _device_get_part_path (PedDevice* dev, int num);
+static int _partition_is_mounted_by_path (const char* path);
+
+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);
+}
+
+#ifdef ENABLE_DEVICE_MAPPER
+static int
+readFD (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;
+ *buf = realloc (*buf, size);
+ } while (1);
+
+ if (filesize == 0 && s < 0) {
+ free (*buf);
+ *buf = NULL;
+ return -1;
+ } else {
+ /* there is always some excess memory left unused */
+ *buf = realloc (*buf, filesize+1);
+ (*buf)[filesize] = '\0';
+ }
+
+ return filesize;
+}
+
+static int
+_is_dm_major (int major)
+{
+ 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 (readFD(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, "device-mapper"))
+ 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;
+}
+#endif
+
+static int
+_device_stat (PedDevice* dev, struct stat * dev_stat)
+{
+ PED_ASSERT (dev != NULL, return 0);
+ PED_ASSERT (!dev->external_mode, return 0);
+
+ 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;
+
+ if (!_device_stat (dev, &dev_stat))
+ return 0;
+
+ if (!S_ISBLK(dev_stat.st_mode)) {
+ dev->type = PED_DEVICE_FILE;
+ return 1;
+ }
+
+ dev_major = major (dev_stat.st_rdev);
+ 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 == 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;
+#endif
+ } 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_devfs ()
+{
+ static int have_devfs = -1;
+ struct stat sb;
+
+ if (have_devfs != -1)
+ return have_devfs;
+
+ /* the presence of /dev/.devfsd implies that DevFS is active */
+ if (stat("/dev/.devfsd", &sb) < 0)
+ return have_devfs = 0;
+
+ return have_devfs = S_ISCHR(sb.st_mode) ? 1 : 0;
+}
+
+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, return);
+
+ if (_get_linux_version() < KERNEL_VERSION (2,3,0)) {
+ dev->sector_size = PED_SECTOR_SIZE_DEFAULT;
+ return;
+ }
+
+ if (ioctl (arch_specific->fd, BLKSSZGET, §or_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;
+ }
+
+ /* Return PED_SECTOR_SIZE_DEFAULT for DASDs. */
+ if (dev->type == PED_DEVICE_DASD) {
+ dev->sector_size = PED_SECTOR_SIZE_DEFAULT;
+ }
+
+ if (dev->sector_size != PED_SECTOR_SIZE_DEFAULT) {
+ ped_exception_throw (
+ PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_OK,
+ _("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"),
+ dev->path, dev->sector_size);
+ }
+}
+
+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;
+
+
+ PED_ASSERT (dev->open_count > 0, return 0);
+ PED_ASSERT (dev->sector_size % PED_SECTOR_SIZE_DEFAULT == 0, return 0);
+
+ 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), return 0);
+
+ _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;
+ int dev_major;
+ struct hd_driveid hdi;
+ PedExceptionOption ex_status;
+ char hdi_buf[41];
+ int sector_multiplier = 0;
+
+ if (!_device_stat (dev, &dev_stat))
+ goto error;
+
+ dev_major = major (dev_stat.st_rdev);
+
+ 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, (void) 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, (void) 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",
+ basename (dev->path), file);
+
+ if ((f = fopen (name_buf, "r")) == NULL)
+ return NULL;
+
+ if (fgets (buf, 255, f) == NULL)
+ 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);
+ ped_free (vendor);
+ ped_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;
+
+ if (S_ISBLK(dev_stat.st_mode))
+ dev->length = _device_get_length (dev);
+ else
+ dev->length = dev_stat.st_size / 512;
+ if (dev->length <= 0) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("The device %s has zero length, and can't 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->sector_size = PED_SECTOR_SIZE_DEFAULT;
+ dev->phys_sector_size = PED_SECTOR_SIZE_DEFAULT;
+ dev->model = strdup ("");
+
+ return 1;
+
+error_close_dev:
+ ped_device_close (dev);
+error:
+ return 0;
+}
+
+static int
+init_dasd (PedDevice* dev, char* model_name)
+{
+ struct stat dev_stat;
+ struct hd_geometry geo;
+ char *errstr = 0;
+
+ 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), return 0);
+
+ _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;
+ }
+
+ dev->model = strdup (model_name);
+
+ ped_device_close (dev);
+ return 1;
+
+ ped_exception_throw ( PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_IGNORE_CANCEL,
+ errstr );
+
+error_close_dev:
+ ped_device_close (dev);
+error:
+ return 0;
+}
+
+static int
+init_generic (PedDevice* dev, 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 {
+ /* 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, (void) 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 PedDevice*
+linux_new (const char* path)
+{
+ PedDevice* dev;
+
+ PED_ASSERT (path != NULL, return 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;
+
+ 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_DASD:
+ if (!init_dasd (dev, _("IBM S390 DASD drive")))
+ goto error_free_arch_specific;
+ break;
+
+ 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;
+
+#ifdef ENABLE_DEVICE_MAPPER
+ case PED_DEVICE_DM:
+ if (!init_generic (dev, _("Linux device-mapper")))
+ goto error_free_arch_specific;
+ break;
+#endif
+
+ case PED_DEVICE_UNKNOWN:
+ if (!init_generic (dev, _("Unknown")))
+ 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:
+ ped_free (dev->arch_specific);
+error_free_path:
+ ped_free (dev->path);
+error_free_dev:
+ ped_free (dev);
+error:
+ return NULL;
+}
+
+static void
+linux_destroy (PedDevice* dev)
+{
+ ped_free (dev->arch_specific);
+ ped_free (dev->path);
+ ped_free (dev->model);
+ ped_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);
+ ped_free (part_name);
+
+ if (status)
+ return 1;
+ }
+
+ return 0;
+}
+
+/* we need to flush the master device, and all the partition devices,
+ * because there is no coherency between the caches.
+ * 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);
+
+ 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);
+ close (fd);
+ }
+ }
+ ped_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;
+ }
+
+ _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);
+ close (arch_specific->fd);
+ 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, return 0);
+ PED_ASSERT (dev != NULL, return 0);
+ PED_ASSERT (!dev->external_mode, return 0);
+
+ 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, return 0);
+ PED_ASSERT(buffer != NULL, return 0);
+
+ 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);
+ int status;
+ PedExceptionOption ex_status;
+ void* diobuf;
+
+ PED_ASSERT (dev->sector_size % PED_SECTOR_SIZE_DEFAULT == 0, return 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, (void) 0);
+ break;
+ }
+ }
+
+ size_t read_length = count * dev->sector_size;
+ if (posix_memalign (&diobuf, dev->sector_size, read_length) != 0)
+ return 0;
+
+ while (1) {
+ status = read (arch_specific->fd, diobuf, read_length);
+ if (status > 0)
+ memcpy(buffer, diobuf, status);
+ if (status == count * dev->sector_size) 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,
+ _("%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, (void) 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, return 0);
+ PED_ASSERT(buffer != NULL, return 0);
+
+ 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);
+ int status;
+ PedExceptionOption ex_status;
+ size_t write_length = count * dev->sector_size;
+ void* diobuf;
+ void* diobuf_start;
+
+ PED_ASSERT(dev->sector_size % PED_SECTOR_SIZE_DEFAULT == 0, return 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) * 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 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, (void) 0);
+ break;
+ }
+ }
+
+#ifdef READ_ONLY
+ printf ("ped_device_write (\"%s\", %p, %d, %d)\n",
+ dev->path, buffer, (int) start, (int) count);
+#else
+ dev->dirty = 1;
+ if (posix_memalign(&diobuf, PED_SECTOR_SIZE_DEFAULT,
+ count * PED_SECTOR_SIZE_DEFAULT) != 0)
+ return 0;
+ memcpy(diobuf, buffer, count * PED_SECTOR_SIZE_DEFAULT);
+ diobuf_start = diobuf;
+ while (1) {
+ status = write (arch_specific->fd, diobuf, write_length);
+ if (status == count * dev->sector_size) 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, (void) 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, return 0);
+
+ 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, (void) 0);
+ break;
+ }
+ }
+ return 1;
+}
+
+static int
+linux_sync (PedDevice* dev)
+{
+ PED_ASSERT (dev != NULL, return 0);
+ PED_ASSERT (!dev->external_mode, return 0);
+
+ 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, return 0);
+ PED_ASSERT (!dev->external_mode, return 0);
+
+ 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];
+
+ proc_part_file = fopen ("/proc/partitions", "r");
+ if (!proc_part_file)
+ return 0;
+
+ if (fgets (buf, 256, proc_part_file) == NULL)
+ return 0;
+
+ if (fgets (buf, 256, proc_part_file) == NULL)
+ return 0;
+
+ 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);
+ }
+
+ fclose (proc_part_file);
+ return 1;
+}
+
+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 ();
+
+ /* /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*
+_device_get_part_path (PedDevice* dev, int num)
+{
+ int path_len = strlen (dev->path);
+ int result_len = path_len + 16;
+ char* result;
+
+ result = (char*) ped_malloc (result_len);
+ if (!result)
+ return NULL;
+
+ /* 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 (!strcmp (dev->path + path_len - 5, "/disc")) {
+ /* replace /disc with /path%d */
+ strcpy (result, dev->path);
+ snprintf (result + path_len - 5, 16, "/part%d", num);
+ } else if (dev->type == PED_DEVICE_DAC960
+ || dev->type == PED_DEVICE_CPQARRAY
+ || dev->type == PED_DEVICE_ATARAID
+#ifdef ENABLE_DEVICE_MAPPER
+ || dev->type == PED_DEVICE_DM
+#endif
+ || isdigit (dev->path[path_len - 1]))
+ snprintf (result, result_len, "%sp%d", dev->path, num);
+ else
+ snprintf (result, result_len, "%s%d", dev->path, num);
+
+ return result;
+}
+
+static char*
+linux_partition_get_path (const PedPartition* part)
+{
+ return _device_get_part_path (part->disk->dev, part->num);
+}
+
+static dev_t
+_partition_get_part_dev (const PedPartition* part)
+{
+ struct stat dev_stat;
+ int dev_major, dev_minor;
+
+ if (!_device_stat (part->disk->dev, &dev_stat))
+ return (dev_t)0;
+ dev_major = major (dev_stat.st_rdev);
+ dev_minor = minor (dev_stat.st_rdev);
+ return (dev_t)makedev (dev_major, dev_minor + 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;
+ int junk;
+
+ file = fopen (file_name, "r");
+ if (!file)
+ return 0;
+ while (fgets (line, 512, file)) {
+ junk = sscanf (line, "%s", part_name);
+ if (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);
+}
+
+static int
+_partition_is_mounted (const PedPartition *part)
+{
+ dev_t dev;
+ if (!ped_partition_is_active (part))
+ return 0;
+ dev = _partition_get_part_dev (part);
+ return _partition_is_mounted_by_dev (dev);
+}
+
+static int
+linux_partition_is_busy (const PedPartition* part)
+{
+ PedPartition* walk;
+
+ PED_ASSERT (part != NULL, return 0);
+
+ 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, PedPartition* part)
+{
+ struct blkpg_partition linux_part;
+ const char* vol_name;
+ char* dev_name;
+
+ PED_ASSERT(disk != NULL, return 0);
+ PED_ASSERT(disk->dev->sector_size % PED_SECTOR_SIZE_DEFAULT == 0,
+ 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);
+
+ ped_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;
+
+ memset (&linux_part, 0, sizeof (linux_part));
+ linux_part.pno = n;
+ return _blkpg_part_command (disk->dev, &linux_part,
+ BLKPG_DEL_PARTITION);
+}
+
+static int
+_disk_sync_part_table (PedDisk* disk)
+{
+ int i;
+ int last = PED_MAX (ped_disk_get_last_partition_num (disk), 16);
+ int* rets = ped_malloc(sizeof(int) * last);
+ int* errnums = ped_malloc(sizeof(int) * last);
+ int ret = 1;
+
+ for (i = 1; i <= last; i++) {
+ rets[i - 1] = _blkpg_remove_partition (disk, i);
+ errnums[i - 1] = errno;
+ }
+
+ for (i = 1; i <= last; i++) {
+ PedPartition* part;
+
+ part = ped_disk_get_partition (disk, i);
+ if (part) {
+ /* busy... so we won't (can't!) disturb ;) Prolly
+ * doesn't matter anyway, because users shouldn't be
+ * changing mounted partitions anyway...
+ */
+ if (!rets[i - 1] && errnums[i - 1] == EBUSY)
+ continue;
+
+ /* add the (possibly modified or new) partition */
+ if (!_blkpg_add_partition (disk, part))
+ ret = 0;
+ }
+ }
+
+ 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 < 0)
+ 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);
+ rc = dm_task_run(task);
+ if (rc < 0) {
+ rc = 0;
+ goto err;
+ }
+ rc = 0;
+
+ 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;
+
+ rc = 0;
+ 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 stat dev_stat;
+ struct dm_task* task = NULL;
+ struct dm_info* info = alloca(sizeof *info);
+ struct dm_names* names = NULL;
+ unsigned int next = 0;
+ int rc;
+
+ if (!_device_stat (dev, &dev_stat))
+ goto err;
+
+ task = dm_task_create(DM_DEVICE_LIST);
+ if (!task)
+ goto err;
+
+ dm_task_set_major (task, major (dev_stat.st_rdev));
+ dm_task_set_minor (task, minor (dev_stat.st_rdev));
+
+ rc = dm_task_run(task);
+ if (rc < 0)
+ 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 *)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)
+{
+ struct stat dev_stat;
+ struct dm_task* task = NULL;
+ int rc;
+ char* vol_name = NULL;
+ char* dev_name = NULL;
+ char* params = NULL;
+
+ dev_name = _device_get_part_path (disk->dev, part->num);
+ if (!dev_name)
+ return 0;
+
+ vol_name = strrchr (dev_name, '/');
+ if (vol_name && *vol_name && *(++vol_name))
+ vol_name = strdup (vol_name);
+ else
+ vol_name = strdup (dev_name);
+ if (!vol_name)
+ return 0;
+
+ if (!_device_stat (disk->dev, &dev_stat))
+ goto err;
+
+ if (asprintf (¶ms, "%d:%d %lld", major (dev_stat.st_rdev),
+ minor (dev_stat.st_rdev), part->geom.start) == -1)
+ goto err;
+
+ if (!params)
+ 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);
+ rc = dm_task_run(task);
+ if (rc >= 0) {
+ //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);
+ if (params)
+ free (params);
+ free (vol_name);
+ return 0;
+}
+
+static int
+_dm_reread_part_table (PedDisk* disk)
+{
+ int rc = 1;
+ int last = PED_MAX (ped_disk_get_last_partition_num (disk), 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
+_kernel_reread_part_table (PedDevice* dev)
+{
+ LinuxSpecific* arch_specific = LINUX_SPECIFIC (dev);
+ int retry_count = 5;
+
+ sync();
+ while (ioctl (arch_specific->fd, BLKRRPART)) {
+ retry_count--;
+ sync();
+ if (!retry_count) {
+ ped_exception_throw (
+ PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_IGNORE,
+ _("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."),
+ dev->path, strerror (errno), dev->path);
+ return 0;
+ }
+ }
+
+ return 1;
+}
+
+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;
+}
+
+static int
+linux_disk_commit (PedDisk* disk)
+{
+#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) {
+ /* The ioctl() command BLKPG_ADD_PARTITION does not notify
+ * the devfs system; consequently, /proc/partitions will not
+ * be up to date, and the proper links in /dev are not
+ * created. Therefore, if using DevFS, we must get the kernel
+ * to re-read and grok the partition table.
+ */
+ /* Work around kernel dasd problem so we really do BLKRRPART */
+ if (disk->dev->type != PED_DEVICE_DASD &&
+ _have_blkpg () && !_have_devfs ()) {
+ if (_disk_sync_part_table (disk))
+ return 1;
+ }
+
+ return _kernel_reread_part_table (disk->dev);
+ }
+
+ return 1;
+}
+
+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
+};
+
+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/parted-1.8.7/libparted/cs/constraint.c b/parted-1.8.7/libparted/cs/constraint.c
new file mode 100644
index 0000000..6ba941a
--- /dev/null
+++ b/parted-1.8.7/libparted/cs/constraint.c
@@ -0,0 +1,530 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2000, 2001, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+/**
+ * \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>
+
+/**
+ * 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, return 0);
+ PED_ASSERT (start_range != NULL, return 0);
+ PED_ASSERT (end_range != NULL, return 0);
+ PED_ASSERT (min_size > 0, return 0);
+ PED_ASSERT (max_size > 0, return 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:
+ ped_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, return NULL);
+ PED_ASSERT (max != NULL, return NULL);
+ PED_ASSERT (ped_geometry_test_inside (max, min), return NULL);
+
+ 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, return 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 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 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, return);
+
+ 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);
+ ped_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, return NULL);
+ PED_ASSERT (constraint->start_range->dev == geom->dev, return NULL);
+
+ 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 NULL);
+ 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, return 0);
+ PED_ASSERT (geom != NULL, return 0);
+
+ 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;
+
+ ped_alignment_init (&start_align, geom->start, 0);
+ ped_alignment_init (&end_align, geom->end, 0);
+ ped_geometry_init (&start_sector, geom->dev, geom->start, 1);
+ ped_geometry_init (&end_sector, geom->dev, geom->end, 1);
+
+ return ped_constraint_new (&start_align, &end_align,
+ &start_sector, &end_sector, 1,
+ geom->dev->length);
+}
+
+/**
+ * @}
+ */
+
diff --git a/parted-1.8.7/libparted/cs/geom.c b/parted-1.8.7/libparted/cs/geom.c
new file mode 100644
index 0000000..8a369bd
--- /dev/null
+++ b/parted-1.8.7/libparted/cs/geom.c
@@ -0,0 +1,475 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 1999, 2000, 2005, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+/** \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, return 0);
+ PED_ASSERT (dev != NULL, return 0);
+
+ 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, return 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:
+ ped_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 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, return);
+
+ ped_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, return 0);
+ PED_ASSERT (geom->dev != NULL, return 0);
+
+ if (length < 1) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Can't have the end before the start!"));
+ 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, return 0);
+ PED_ASSERT (b != NULL, return 0);
+
+ 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, return 0);
+ PED_ASSERT (b != NULL, return 0);
+
+ 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, return 0);
+ PED_ASSERT (b != NULL, return 0);
+
+ 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 0);
+
+ 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, return 0);
+ PED_ASSERT (buffer != NULL, return 0);
+ PED_ASSERT (offset >= 0, return 0);
+ PED_ASSERT (count >= 0, return 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;
+}
+
+/**
+ * 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 0);
+ 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 0);
+ 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, return 0);
+ PED_ASSERT (buffer != NULL, return 0);
+ PED_ASSERT (offset >= 0, return 0);
+ PED_ASSERT (count >= 0, return 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, return 0);
+ PED_ASSERT (buffer != NULL, return 0);
+
+ 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, return 0);
+ PED_ASSERT (src != NULL, return 0);
+
+ 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/parted-1.8.7/libparted/cs/natmath.c b/parted-1.8.7/libparted/cs/natmath.c
new file mode 100644
index 0000000..f725cbb
--- /dev/null
+++ b/parted-1.8.7/libparted/cs/natmath.c
@@ -0,0 +1,496 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2000, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+/**
+ * \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.
+ */
+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);
+}
+
+inline PedSector
+ped_div_round_up (PedSector numerator, PedSector divisor)
+{
+ return (numerator + divisor - 1) / divisor;
+}
+
+inline PedSector
+ped_div_round_to_nearest (PedSector numerator, PedSector divisor)
+{
+ return (numerator + divisor/2) / divisor;
+}
+
+/* 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, return 0);
+ PED_ASSERT (b >= 0, return 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, return 0);
+
+ 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:
+ ped_free (align);
+error:
+ return NULL;
+}
+
+/**
+ * Free up memory associated with \p align.
+ */
+void
+ped_alignment_destroy (PedAlignment* align)
+{
+ if (align)
+ ped_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
+ */
+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, return -1);
+
+ 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, return -1);
+
+ 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, return -1);
+
+ 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 -1);
+
+ 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/parted-1.8.7/libparted/debug.c b/parted-1.8.7/libparted/debug.c
new file mode 100644
index 0000000..82d05c4
--- /dev/null
+++ b/parted-1.8.7/libparted/debug.c
@@ -0,0 +1,121 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2000, 2005, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#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 );
+
+ ped_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.
+ */
+int ped_assert ( int cond, const char* cond_text,
+ const char* file, int line, const char* function )
+{
+ PedExceptionOption opt;
+
+ if ( cond )
+ return 1;
+
+#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 */
+ opt = ped_exception_throw (
+ PED_EXCEPTION_BUG,
+ PED_EXCEPTION_IGNORE_CANCEL,
+ _("Assertion (%s) at %s:%d in function %s() failed."),
+ cond_text, file, line, function );
+
+ return ( opt == PED_EXCEPTION_IGNORE );
+}
+
+#endif /* DEBUG */
+
diff --git a/parted-1.8.7/libparted/device.c b/parted-1.8.7/libparted/device.c
new file mode 100644
index 0000000..e079fca
--- /dev/null
+++ b/parted-1.8.7/libparted/device.c
@@ -0,0 +1,443 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 1999 - 2001, 2005, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+/** \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 <errno.h>
+
+static PedDevice* devices; /* legal advice says: initialized to NULL,
+ under section 6.7.8 part 10
+ of ISO/EIC 9899:1999 */
+
+#ifndef HAVE_CANONICALIZE_FILE_NAME
+char *
+canonicalize_file_name (const char *name)
+{
+ char * buf;
+ int size;
+ char * result;
+
+#ifdef PATH_MAX
+ size = PATH_MAX;
+#else
+ /* Bigger is better; realpath has no way todo bounds checking. */
+ size = 4096;
+#endif
+
+ /* Just in case realpath does not NULL terminate the string
+ * or it just fits in SIZE without a NULL terminator. */
+ buf = calloc (size + 1, sizeof(char));
+ if (! buf) {
+ errno = ENOMEM;
+ return NULL;
+ }
+
+ result = realpath (name, buf);
+ if (! result)
+ free (buf);
+
+ return result;
+}
+#endif /* !HAVE_CANONICALIZE_FILE_NAME */
+
+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;
+ }
+
+ 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, return);
+
+ 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;
+
+ PED_ASSERT (path != NULL, return NULL);
+ 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)) {
+ ped_free (normal_path);
+ return walk;
+ }
+ }
+
+ walk = ped_architecture->dev_ops->_new (normal_path);
+ ped_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, return 0);
+ PED_ASSERT (!dev->external_mode, return 0);
+
+ 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, return 0);
+ PED_ASSERT (!dev->external_mode, return 0);
+ PED_ASSERT (dev->open_count > 0, return 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, return 0);
+ PED_ASSERT (!dev->external_mode, return 0);
+
+ 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, return 0);
+ PED_ASSERT (dev->external_mode, return 0);
+
+ 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, return 0);
+ PED_ASSERT (buffer != NULL, return 0);
+ PED_ASSERT (!dev->external_mode, return 0);
+ PED_ASSERT (dev->open_count > 0, return 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, return 0);
+ PED_ASSERT (buffer != NULL, return 0);
+ PED_ASSERT (!dev->external_mode, return 0);
+ PED_ASSERT (dev->open_count > 0, return 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, return 0);
+ PED_ASSERT (!dev->external_mode, return 0);
+ PED_ASSERT (dev->open_count > 0, return 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, return 0);
+ PED_ASSERT (!dev->external_mode, return 0);
+ PED_ASSERT (dev->open_count > 0, return 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, return 0);
+ PED_ASSERT (!dev->external_mode, return 0);
+ PED_ASSERT (dev->open_count > 0, return 0);
+
+ return ped_architecture->dev_ops->sync_fast (dev);
+}
+
+/**
+ * Get a constraint that represents hardware requirements on alignment and
+ * geometry.
+ * This is, for example, important for media that have a physical sector
+ * size that is a multiple of the logical sector size.
+ *
+ * \warning This function is experimental for physical sector sizes not equal to
+ * 2^9.
+ */
+PedConstraint*
+ped_device_get_constraint (PedDevice* dev)
+{
+ int multiplier = dev->phys_sector_size / dev->sector_size;
+
+ PedAlignment* start_align = ped_alignment_new (multiplier, multiplier);
+
+ PedConstraint* c = ped_constraint_new (
+ start_align, ped_alignment_any,
+ ped_geometry_new (dev, 0, dev->length),
+ ped_geometry_new (dev, 0, dev->length),
+ 1, dev->length);
+
+ return c;
+}
+
+/** @} */
+
diff --git a/parted-1.8.7/libparted/disk.c b/parted-1.8.7/libparted/disk.c
new file mode 100644
index 0000000..9831702
--- /dev/null
+++ b/parted-1.8.7/libparted/disk.c
@@ -0,0 +1,2266 @@
+ /*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2005, 2007
+ 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+/** \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>
+
+#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 void _disk_push_update_mode (PedDisk* disk);
+static void _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, return);
+ PED_ASSERT (disk_type->ops != NULL, return);
+ PED_ASSERT (disk_type->name != NULL, return);
+
+ /* pretend that "next" isn't part of the struct :-) */
+ ((struct _PedDiskType*) disk_type)->next = disk_types;
+ disk_types = (struct _PedDiskType*) disk_type;
+}
+
+void
+ped_disk_type_unregister (PedDiskType* disk_type)
+{
+ PedDiskType* walk;
+ PedDiskType* last = NULL;
+
+ PED_ASSERT (disk_types != NULL, return);
+ PED_ASSERT (disk_type != NULL, return);
+
+ for (walk = disk_types; walk && walk != disk_type;
+ last = walk, walk = walk->next);
+
+ PED_ASSERT (walk != NULL, return);
+ if (last)
+ ((struct _PedDiskType*) last)->next = disk_type->next;
+ else
+ disk_types = disk_type->next;
+}
+
+/**
+ * Deprecated: use ped_disk_type_regiser.
+ */
+void
+ped_register_disk_type (PedDiskType* disk_type)
+{
+ ped_disk_type_register (disk_type);
+}
+
+/**
+ * Deprecated: use ped_disk_type_unregiser.
+ */
+void
+ped_unregister_disk_type (PedDiskType* disk_type)
+{
+ ped_disk_type_unregister (disk_type);
+}
+
+/**
+ * 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* 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, return 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, return 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 (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, return NULL);
+
+ if (!ped_device_open (dev))
+ goto error;
+
+ type = ped_disk_probe (dev);
+ if (!type) {
+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+ _("Unable to open %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;
+ PedConstraint* constraint_exact;
+
+ new_part = disk->type->ops->partition_duplicate (old_part);
+ if (!new_part)
+ goto error;
+ new_part->disk = disk;
+
+ constraint_exact = ped_constraint_exact (&new_part->geom);
+ if (!constraint_exact)
+ goto error_destroy_new_part;
+ if (!ped_disk_add_partition (disk, new_part, constraint_exact))
+ goto error_destroy_constraint_exact;
+ ped_constraint_destroy (constraint_exact);
+ return 1;
+
+error_destroy_constraint_exact:
+ ped_constraint_destroy (constraint_exact);
+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, return NULL);
+ PED_ASSERT (!old_disk->update_mode, return NULL);
+ PED_ASSERT (old_disk->type->ops->duplicate != NULL, return NULL);
+ PED_ASSERT (old_disk->type->ops->partition_duplicate != NULL,
+ return NULL);
+
+ new_disk = old_disk->type->ops->duplicate (old_disk);
+ if (!new_disk)
+ goto error;
+
+ _disk_push_update_mode (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))
+ goto error_destroy_new_disk;
+ }
+ }
+ _disk_pop_update_mode (new_disk);
+ return new_disk;
+
+error_destroy_new_disk:
+ ped_disk_destroy (new_disk);
+error:
+ return NULL;
+}
+
+/**
+ * Remove all identifying signatures of a partition table,
+ * except for partition tables of a given type.
+ *
+ * \return 0 on error, 1 otherwise.
+ *
+ * \sa ped_disk_clobber()
+ */
+int
+ped_disk_clobber_exclude (PedDevice* dev, const PedDiskType* exclude)
+{
+ PedDiskType* walk;
+
+ PED_ASSERT (dev != NULL, goto error);
+
+ if (!ped_device_open (dev))
+ goto error;
+
+ for (walk = ped_disk_type_get_next (NULL); walk;
+ walk = ped_disk_type_get_next (walk)) {
+ int probed;
+
+ if (walk == exclude)
+ continue;
+
+ ped_exception_fetch_all ();
+ probed = walk->ops->probe (dev);
+ if (!probed)
+ ped_exception_catch ();
+ ped_exception_leave_all ();
+
+ if (probed && walk->ops->clobber) {
+ if (!walk->ops->clobber (dev))
+ goto error_close_dev;
+ }
+ }
+ ped_device_close (dev);
+ return 1;
+
+error_close_dev:
+ ped_device_close (dev);
+error:
+ return 0;
+}
+
+/**
+ * Remove all identifying signatures of a partition table,
+ *
+ * \return 0 on error, 1 otherwise.
+ *
+ * \sa ped_disk_clobber_exclude()
+ */
+int
+ped_disk_clobber (PedDevice* dev)
+{
+ return ped_disk_clobber_exclude (dev, NULL);
+}
+
+/**
+ * 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, return NULL);
+ PED_ASSERT (type != NULL, return NULL);
+ PED_ASSERT (type->ops->alloc != NULL, return NULL);
+
+ disk = type->ops->alloc (dev);
+ if (!disk)
+ goto error;
+ _disk_pop_update_mode (disk);
+ PED_ASSERT (disk->update_mode == 0, goto error_destroy_disk);
+
+ 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;
+
+ ped_free (disk);
+error:
+ return NULL;
+}
+
+void
+_ped_disk_free (PedDisk* disk)
+{
+ _disk_push_update_mode (disk);
+ ped_disk_delete_all (disk);
+ ped_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, return);
+ PED_ASSERT (!disk->update_mode, return);
+
+ 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, return 0);
+
+ 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, goto error);
+ PED_ASSERT (!disk->update_mode, goto error);
+
+ 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_exclude (disk->dev, disk->type))
+ 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)
+{
+ if (!ped_disk_commit_to_dev (disk))
+ return 0;
+ return ped_disk_commit_to_os (disk);
+}
+
+/**
+ * \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 1);
+
+ 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 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, return 0);
+
+ 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);
+ if (!ped_geometry_test_inside (&walk->geom, geom)
+ || length_error > max_length_error) {
+ char* part_size = ped_unit_format (disk->dev, walk->geom.length);
+ char* fs_size = ped_unit_format (disk->dev, 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);
+
+ ped_free (part_size);
+ ped_free (fs_size);
+
+ if (choice != PED_EXCEPTION_IGNORE)
+ return 0;
+ }
+ }
+
+ 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, return 0);
+
+ 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 partition number on \p disk.
+ */
+int
+ped_disk_get_last_partition_num (const PedDisk* disk)
+{
+ PedPartition* walk;
+ int highest = -1;
+
+ PED_ASSERT (disk != NULL, return 0);
+
+ for (walk = disk->part_list; walk;
+ walk = ped_disk_next_partition (disk, walk)) {
+ if (walk->num > highest)
+ highest = walk->num;
+ }
+
+ return highest;
+}
+
+/**
+ * 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, return 0);
+ PED_ASSERT (disk->type->ops->get_max_primary_partition_count != NULL,
+ return 0);
+
+ return disk->type->ops->get_max_primary_partition_count (disk);
+}
+
+/**
+ * \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, return 0);
+ PED_ASSERT (part->num != -1, return 0);
+ PED_ASSERT (part->disk != NULL, return 0);
+ disk_type = part->disk->type;
+ PED_ASSERT (disk_type != NULL, return 0);
+ PED_ASSERT (disk_type->ops->partition_align != NULL, return 0);
+ PED_ASSERT (part->disk->update_mode, return 0);
+
+ return disk_type->ops->partition_align (part, constraint);
+}
+
+static int
+_partition_enumerate (PedPartition* part)
+{
+ const PedDiskType* disk_type;
+
+ PED_ASSERT (part != NULL, return 0);
+ PED_ASSERT (part->disk != NULL, return 0);
+ disk_type = part->disk->type;
+ PED_ASSERT (disk_type != NULL, return 0);
+ PED_ASSERT (disk_type->ops->partition_enumerate != NULL, return 0);
+
+ 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, return 0);
+
+/* 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, return 0);
+
+ 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, return 0);
+
+ 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 void
+_disk_push_update_mode (PedDisk* disk)
+{
+ if (!disk->update_mode) {
+#ifdef DEBUG
+ _disk_check_sanity (disk);
+#endif
+
+ _disk_remove_freespace (disk);
+ disk->update_mode++;
+ _disk_remove_metadata (disk);
+
+#ifdef DEBUG
+ _disk_check_sanity (disk);
+#endif
+ } else {
+ disk->update_mode++;
+ }
+}
+
+static void
+_disk_pop_update_mode (PedDisk* disk)
+{
+ PED_ASSERT (disk->update_mode, return);
+
+ if (disk->update_mode == 1) {
+ /* re-allocate metadata BEFORE leaving update mode, to prevent infinite
+ * recursion (metadata allocation requires update mode)
+ */
+#ifdef DEBUG
+ _disk_check_sanity (disk);
+#endif
+
+ _disk_alloc_metadata (disk);
+ disk->update_mode--;
+ _disk_alloc_freespace (disk);
+
+#ifdef DEBUG
+ _disk_check_sanity (disk);
+#endif
+ } else {
+ disk->update_mode--;
+ }
+}
+
+/** @} */
+
+/**
+ * \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, return 0);
+
+ 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:
+ ped_free (part);
+error:
+ return NULL;
+}
+
+void
+_ped_partition_free (PedPartition* part)
+{
+ ped_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, return NULL);
+ PED_ASSERT (disk->type->ops->partition_new != NULL, return 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, return);
+ PED_ASSERT (part->disk != NULL, return);
+ PED_ASSERT (part->disk->type->ops->partition_new != NULL, return);
+
+ 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 0);
+
+ 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, return 0);
+ PED_ASSERT (part->disk != NULL, return 0);
+ PED_ASSERT (ped_partition_is_active (part), return 0);
+
+ ops = part->disk->type->ops;
+ PED_ASSERT (ops->partition_set_flag != NULL, return 0);
+ PED_ASSERT (ops->partition_is_flag_available != NULL, return 0);
+
+ 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, return 0);
+ PED_ASSERT (part->disk != NULL, return 0);
+ PED_ASSERT (part->disk->type->ops->partition_get_flag != NULL,
+ return 0);
+ PED_ASSERT (ped_partition_is_active (part), return 0);
+
+ 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, return 0);
+ PED_ASSERT (part->disk != NULL, return 0);
+ PED_ASSERT (part->disk->type->ops->partition_is_flag_available != NULL,
+ return 0);
+ PED_ASSERT (ped_partition_is_active (part), return 0);
+
+ 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, return 0);
+ PED_ASSERT (ped_partition_is_active (part), return 0);
+ PED_ASSERT (part->disk != NULL, return 0);
+ disk_type = part->disk->type;
+ PED_ASSERT (disk_type != NULL, return 0);
+ PED_ASSERT (disk_type->ops != NULL, return 0);
+ PED_ASSERT (disk_type->ops->partition_set_system != NULL, return 0);
+
+ 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, return 0);
+ PED_ASSERT (part->disk != NULL, return 0);
+ PED_ASSERT (ped_partition_is_active (part), return 0);
+ PED_ASSERT (name != NULL, return 0);
+
+ if (!_assert_partition_name_feature (part->disk->type))
+ return 0;
+
+ PED_ASSERT (part->disk->type->ops->partition_set_name != NULL,
+ return 0);
+ 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, return NULL);
+ PED_ASSERT (part->disk != NULL, return 0);
+ PED_ASSERT (ped_partition_is_active (part), return 0);
+
+ if (!_assert_partition_name_feature (part->disk->type))
+ return NULL;
+
+ PED_ASSERT (part->disk->type->ops->partition_get_name != NULL,
+ return 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, return 0);
+
+ 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, return 0);
+
+ 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, return 0);
+
+ for (walk = disk->part_list; walk; walk = walk->next) {
+ PED_ASSERT (!(walk->type & PED_PARTITION_LOGICAL), return 0);
+ PED_ASSERT (!walk->prev || walk->prev->next == walk, return 0);
+ }
+
+ 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, return 0);
+ if (walk->prev)
+ PED_ASSERT (walk->prev->next == walk, return 0);
+ }
+ 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, return 0);
+
+ 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, return 0);
+
+ 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;
+}
+
+/* I'm beginning to agree with Sedgewick :-/ */
+static int
+_disk_raw_insert_before (PedDisk* disk, PedPartition* loc, PedPartition* part)
+{
+ PED_ASSERT (disk != NULL, return 0);
+ PED_ASSERT (loc != NULL, return 0);
+ PED_ASSERT (part != NULL, return 0);
+
+ 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, return 0);
+ PED_ASSERT (loc != NULL, return 0);
+ PED_ASSERT (part != NULL, return 0);
+
+ 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, return 0);
+ PED_ASSERT (part != NULL, return 0);
+
+ 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, return 0);
+
+ 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, return NULL);
+ PED_ASSERT (part->geom.dev == geom->dev, return NULL);
+
+ if (part->type & PED_PARTITION_LOGICAL) {
+ PedPartition* ext_part;
+
+ ext_part = ped_disk_extended_partition (part->disk);
+ PED_ASSERT (ext_part != NULL, return 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, return 0);
+ PED_ASSERT (part != NULL, return 0);
+
+ 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, return 0);
+
+ PED_ASSERT (part->geom.start >= 0, return 0);
+ PED_ASSERT (part->geom.end < disk->dev->length, return 0);
+ PED_ASSERT (part->geom.start <= part->geom.end, return 0);
+
+ 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, return 0);
+ ext_part = ped_disk_extended_partition (disk);
+ if (!ext_part) ext_part = part;
+ PED_ASSERT (ext_part != NULL, return 0);
+
+ 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, return 0);
+
+ 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;
+ }
+
+ 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, return 0);
+ PED_ASSERT (part != NULL, return 0);
+
+ if (!_partition_check_basic_sanity (disk, part))
+ return 0;
+
+ _disk_push_update_mode (disk);
+
+ 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;
+ }
+ if (!_check_partition (disk, part))
+ goto error;
+ if (!_disk_raw_add (disk, part))
+ goto error;
+
+ ped_constraint_destroy (overlap_constraint);
+ ped_constraint_destroy (constraints);
+ _disk_pop_update_mode (disk);
+#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, return 0);
+ PED_ASSERT (part != NULL, return 0);
+
+ _disk_push_update_mode (disk);
+ PED_ASSERT (part->part_list == NULL, goto error);
+ _disk_raw_remove (disk, part);
+ _disk_pop_update_mode (disk);
+ ped_disk_enumerate_partitions (disk);
+ return 1;
+
+error:
+ _disk_pop_update_mode (disk);
+ return 0;
+}
+
+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, return 0);
+ PED_ASSERT (part != NULL, return 0);
+
+ _disk_push_update_mode (disk);
+ if (part->type == PED_PARTITION_EXTENDED)
+ ped_disk_delete_all_logical (disk);
+ ped_disk_remove_partition (disk, part);
+ ped_partition_destroy (part);
+ _disk_pop_update_mode (disk);
+
+ return 1;
+}
+
+static int
+ped_disk_delete_all_logical (PedDisk* disk)
+{
+ PedPartition* walk;
+ PedPartition* next;
+ PedPartition* ext_part;
+
+ PED_ASSERT (disk != NULL, return 0);
+ ext_part = ped_disk_extended_partition (disk);
+ PED_ASSERT (ext_part != NULL, return 0);
+
+ 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, return 0);
+
+ _disk_push_update_mode (disk);
+
+ for (walk = disk->part_list; walk; walk = next) {
+ next = walk->next;
+
+ if (!ped_disk_delete_partition (disk, walk))
+ return 0;
+ }
+
+ _disk_pop_update_mode (disk);
+
+ 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, return 0);
+ PED_ASSERT (part != NULL, return 0);
+ PED_ASSERT (part->disk == disk, return 0);
+
+ old_geom = part->geom;
+ ped_geometry_init (&new_geom, part->geom.dev, start, end - start + 1);
+
+ _disk_push_update_mode (disk);
+
+ 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);
+
+ _disk_pop_update_mode (disk);
+
+ ped_constraint_destroy (overlap_constraint);
+ ped_constraint_destroy (constraints);
+ return 1;
+
+error_pop_update_mode:
+ _disk_pop_update_mode (disk);
+ 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, return 0);
+ PED_ASSERT (part != NULL, return 0);
+
+ if (part->type & PED_PARTITION_LOGICAL) {
+ PED_ASSERT (ext_part != NULL, return 0);
+ 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;
+
+ _disk_push_update_mode (disk);
+
+ 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;
+
+ _disk_pop_update_mode (disk);
+ 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, return NULL);
+ PED_ASSERT(part != NULL, return NULL);
+ PED_ASSERT(ped_partition_is_active (part), return NULL);
+
+ 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 NULL);
+
+ 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, return 0);
+
+ ext_part = ped_disk_extended_partition (disk);
+ if (!ext_part)
+ return 1;
+
+ _disk_push_update_mode (disk);
+
+ first_logical = ext_part->part_list;
+ if (!first_logical) {
+ _disk_pop_update_mode (disk);
+ 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);
+
+ _disk_pop_update_mode (disk);
+ 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_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");
+
+ 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, return);
+
+ 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, return);
+
+ for (part = disk->part_list; part;
+ part = ped_disk_next_partition (disk, part))
+ ped_partition_print (part);
+}
+
+/** @} */
diff --git a/parted-1.8.7/libparted/exception.c b/parted-1.8.7/libparted/exception.c
new file mode 100644
index 0000000..d109209
--- /dev/null
+++ b/parted-1.8.7/libparted/exception.c
@@ -0,0 +1,313 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 1999, 2000, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+/** \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 char* type_strings [] = {
+ N_("Information"),
+ N_("Warning"),
+ N_("Error"),
+ N_("Fatal"),
+ N_("Bug"),
+ N_("No Implementation")
+};
+
+static char* 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 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, return -1);
+
+ 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 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 informations of what could be useful "
+ "for bug submitting! "
+ "Please email a bug report to "
+ "bug-parted@gnu.org containing at least the "
+ "version (%s) and the following message: "),
+ 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;
+
+ ped_free (ex->message);
+ ped_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 (1) {
+ ex->message = (char*) malloc (size);
+ 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;
+ }
+
+ 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, return);
+ ex_fetch_count--;
+}
+
+/** @} */
+
diff --git a/parted-1.8.7/libparted/filesys.c b/parted-1.8.7/libparted/filesys.c
new file mode 100644
index 0000000..cef277c
--- /dev/null
+++ b/parted-1.8.7/libparted/filesys.c
@@ -0,0 +1,783 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 1999, 2000, 2001, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+/** \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;
+
+void
+ped_file_system_type_register (PedFileSystemType* fs_type)
+{
+ PED_ASSERT (fs_type != NULL, return);
+ PED_ASSERT (fs_type->ops != NULL, return);
+ PED_ASSERT (fs_type->name != NULL, return);
+
+ /* pretend that "next" isn't part of the struct :-) */
+ ((struct _PedFileSystemType*) fs_type)->next = fs_types;
+ fs_types = (struct _PedFileSystemType*) fs_type;
+}
+
+void
+ped_file_system_type_unregister (PedFileSystemType* fs_type)
+{
+ PedFileSystemType* walk;
+ PedFileSystemType* last = NULL;
+
+ PED_ASSERT (fs_types != NULL, return);
+ PED_ASSERT (fs_type != NULL, return);
+
+ for (walk = fs_types; walk && walk != fs_type;
+ last = walk, walk = walk->next);
+
+ PED_ASSERT (walk != NULL, return);
+ if (last)
+ ((struct _PedFileSystemType*) last)->next = fs_type->next;
+ else
+ fs_types = fs_type->next;
+}
+
+/**
+ * Get a PedFileSystemType by its @p name.
+ *
+ * @return @c NULL if none found.
+ */
+PedFileSystemType*
+ped_file_system_type_get (const char* name)
+{
+ PedFileSystemType* walk;
+
+ PED_ASSERT (name != NULL, return NULL);
+
+ for (walk = fs_types; walk != NULL; walk = walk->next) {
+ if (!strcasecmp (walk->name, name))
+ break;
+ }
+ return walk;
+}
+
+/**
+ * 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;
+}
+
+/**
+ * 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, return NULL);
+ PED_ASSERT (fs_type->ops->probe != NULL, return NULL);
+ PED_ASSERT (geom != NULL, return NULL);
+
+ if (!ped_device_open (geom->dev))
+ return 0;
+ result = fs_type->ops->probe (geom);
+ ped_device_close (geom->dev);
+ return result;
+}
+
+static int
+_test_open (PedFileSystemType* fs_type, PedGeometry* geom)
+{
+ PedFileSystem* fs;
+
+ ped_exception_fetch_all ();
+ fs = fs_type->ops->open (geom);
+ if (fs)
+ fs_type->ops->close (fs);
+ else
+ ped_exception_catch ();
+ ped_exception_leave_all ();
+ return fs != NULL;
+}
+
+static PedFileSystemType*
+_probe_with_open (PedGeometry* geom, int detected_count,
+ PedFileSystemType* detected[])
+{
+ int i;
+ PedFileSystemType* open_detected = NULL;
+
+ ped_device_open (geom->dev);
+
+ /* If one and only one file system that Parted is able to open
+ * can be successfully opened on this geometry, return it.
+ * If more than one can be, return NULL.
+ */
+ for (i=0; i<detected_count; i++) {
+ if (!detected[i]->ops->open || !_test_open (detected [i], geom))
+ continue;
+
+ if (open_detected) {
+ ped_device_close (geom->dev);
+ return NULL;
+ } else {
+ open_detected = detected [i];
+ }
+ }
+
+ /* If no file system has been successfully opened, and
+ * if Parted has detected at most one unopenable file system,
+ * return it.
+ */
+ if (!open_detected)
+ for (i=0; i<detected_count; i++) {
+ if (detected[i]->ops->open)
+ continue;
+ if (open_detected) {
+ ped_device_close (geom->dev);
+ return NULL;
+ } else {
+ open_detected = detected [i];
+ }
+ }
+
+ ped_device_close (geom->dev);
+ return open_detected;
+}
+
+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, return 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 _probe_with_open (geom, detected_count, detected);
+}
+
+/**
+ * This function erases all file system signatures that indicate that a
+ * file system occupies a given region described by \p geom.
+ * After this operation ped_file_system_probe() won't detect any file system.
+ *
+ * \note ped_file_system_create() calls this before creating a new file system.
+ *
+ * \return \c 1 on success, \c 0 on failure
+ */
+int
+ped_file_system_clobber (PedGeometry* geom)
+{
+ PedFileSystemType* fs_type = NULL;
+
+ PED_ASSERT (geom != NULL, return 0);
+
+ if (!ped_device_open (geom->dev))
+ goto error;
+
+ ped_exception_fetch_all ();
+ while ((fs_type = ped_file_system_type_get_next (fs_type))) {
+ PedGeometry* probed;
+
+ if (!fs_type->ops->clobber)
+ continue;
+
+ probed = ped_file_system_probe_specific (fs_type, geom);
+ if (!probed) {
+ ped_exception_catch ();
+ continue;
+ }
+ ped_geometry_destroy (probed);
+
+ if (fs_type->ops->clobber && !fs_type->ops->clobber (geom)) {
+ ped_exception_leave_all ();
+ goto error_close_dev;
+ }
+ }
+ ped_device_close (geom->dev);
+ ped_exception_leave_all ();
+ return 1;
+
+error_close_dev:
+ ped_device_close (geom->dev);
+error:
+ return 0;
+}
+
+/* This function erases all signatures that indicate the presence of
+ * a file system in a particular region, without erasing any data
+ * contained inside the "exclude" region.
+ */
+static int
+ped_file_system_clobber_exclude (PedGeometry* geom,
+ const PedGeometry* exclude)
+{
+ PedGeometry* clobber_geom;
+ int status;
+
+ if (ped_geometry_test_sector_inside (exclude, geom->start))
+ return 1;
+
+ clobber_geom = ped_geometry_duplicate (geom);
+ if (ped_geometry_test_overlap (clobber_geom, exclude))
+ ped_geometry_set_end (clobber_geom, exclude->start - 1);
+
+ status = ped_file_system_clobber (clobber_geom);
+ ped_geometry_destroy (clobber_geom);
+ return status;
+}
+
+/**
+ * This function opens the file system stored on \p geom, if it
+ * can find one.
+ * It is often called in the following manner:
+ * \code
+ * fs = ped_file_system_open (&part.geom)
+ * \endcode
+ *
+ * \throws PED_EXCEPTION_ERROR if file system could not be detected
+ * \throws PED_EXCEPTION_ERROR if the file system is bigger than its volume
+ * \throws PED_EXCEPTION_NO_FEATURE if opening of a file system stored on
+ * \p geom is not implemented
+ *
+ * \return a PedFileSystem on success, \c NULL on failure.
+ */
+PedFileSystem*
+ped_file_system_open (PedGeometry* geom)
+{
+ PedFileSystemType* type;
+ PedFileSystem* fs;
+ PedGeometry* probed_geom;
+
+ PED_ASSERT (geom != NULL, return NULL);
+
+ if (!ped_device_open (geom->dev))
+ goto error;
+
+ type = ped_file_system_probe (geom);
+ if (!type) {
+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+ _("Could not detect file system."));
+ goto error_close_dev;
+ }
+
+ probed_geom = ped_file_system_probe_specific (type, geom);
+ if (!probed_geom)
+ goto error_close_dev;
+ if (!ped_geometry_test_inside (geom, probed_geom)) {
+ if (ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_IGNORE_CANCEL,
+ _("The file system is bigger than its volume!"))
+ != PED_EXCEPTION_IGNORE)
+ goto error_destroy_probed_geom;
+ }
+
+ if (!type->ops->open) {
+ ped_exception_throw (PED_EXCEPTION_NO_FEATURE,
+ PED_EXCEPTION_CANCEL,
+ _("Support for opening %s file systems "
+ "is not implemented yet."),
+ type->name);
+ goto error_destroy_probed_geom;
+ }
+
+ fs = type->ops->open (probed_geom);
+ if (!fs)
+ goto error_destroy_probed_geom;
+ ped_geometry_destroy (probed_geom);
+ return fs;
+
+error_destroy_probed_geom:
+ ped_geometry_destroy (probed_geom);
+error_close_dev:
+ ped_device_close (geom->dev);
+error:
+ return 0;
+}
+
+/**
+ * This function initializes a new file system of type \p type on
+ * a region described by \p geom, writing out appropriate metadata and
+ * signatures. If \p timer is non-NULL, it is used as the progress meter.
+ *
+ * \throws PED_EXCEPTION_NO_FEATURE if creating file system type \p type
+ * is not implemented yet
+ *
+ * \return a PedFileSystem on success, \c NULL on failure
+ */
+PedFileSystem*
+ped_file_system_create (PedGeometry* geom, const PedFileSystemType* type,
+ PedTimer* timer)
+{
+ PedFileSystem* fs;
+
+ PED_ASSERT (geom != NULL, return NULL);
+ PED_ASSERT (type != NULL, return NULL);
+
+ if (!type->ops->create) {
+ ped_exception_throw (PED_EXCEPTION_NO_FEATURE,
+ PED_EXCEPTION_CANCEL,
+ _("Support for creating %s file systems "
+ "is not implemented yet."),
+ type->name);
+ goto error;
+ }
+
+ if (!ped_device_open (geom->dev))
+ goto error;
+
+ if (!ped_file_system_clobber (geom))
+ goto error_close_dev;
+ fs = type->ops->create (geom, timer);
+ if (!fs)
+ goto error_close_dev;
+ return fs;
+
+error_close_dev:
+ ped_device_close (geom->dev);
+error:
+ return 0;
+}
+
+/**
+ * Close file system \p fs.
+ *
+ * \return \c 1 on success, \c 0 on failure
+ */
+int
+ped_file_system_close (PedFileSystem* fs)
+{
+ PedDevice* dev = fs->geom->dev;
+
+ PED_ASSERT (fs != NULL, goto error_close_dev);
+
+ if (!fs->type->ops->close (fs))
+ goto error_close_dev;
+ ped_device_close (dev);
+ return 1;
+
+error_close_dev:
+ ped_device_close (dev);
+ return 0;
+}
+
+/**
+ * Check \p fs file system for errors.
+ *
+ * \throws PED_EXCEPTION_NO_FEATURE if checking file system \p fs is
+ * not implemented yet
+ *
+ * \return \c 0 on failure (i.e. unfixed errors)
+ */
+int
+ped_file_system_check (PedFileSystem* fs, PedTimer* timer)
+{
+ PED_ASSERT (fs != NULL, return 0);
+
+ if (!fs->type->ops->check) {
+ ped_exception_throw (PED_EXCEPTION_NO_FEATURE,
+ PED_EXCEPTION_CANCEL,
+ _("Support for checking %s file systems "
+ "is not implemented yet."),
+ fs->type->name);
+ return 0;
+ }
+ return fs->type->ops->check (fs, timer);
+}
+
+static int
+_raw_copy (const PedGeometry* src, PedGeometry* dest, PedTimer* timer)
+{
+ char* buf;
+ PedSector pos;
+
+ PED_ASSERT (src != NULL, goto error);
+ PED_ASSERT (dest != NULL, goto error);
+ PED_ASSERT (src->length <= dest->length, goto error);
+
+ buf = ped_malloc (BUFFER_SIZE * 512); /* FIXME */
+ if (!buf)
+ goto error;
+
+ if (!ped_device_open (src->dev))
+ goto error_free_buf;
+ if (!ped_device_open (dest->dev))
+ goto error_close_src;
+
+ for (pos = 0; pos + BUFFER_SIZE < src->length; pos += BUFFER_SIZE) {
+ ped_timer_update (timer, 1.0 * pos / src->length);
+ if (!ped_geometry_read (src, buf, pos, BUFFER_SIZE))
+ goto error_close_dest;
+ if (!ped_geometry_write (dest, buf, pos, BUFFER_SIZE))
+ goto error_close_dest;
+ }
+ if (pos < src->length) {
+ ped_timer_update (timer, 1.0 * pos / src->length);
+ if (!ped_geometry_read (src, buf, pos, src->length - pos))
+ goto error_close_dest;
+ if (!ped_geometry_write (dest, buf, pos, src->length - pos))
+ goto error_close_dest;
+ }
+ ped_timer_update (timer, 1.0);
+
+ ped_device_close (src->dev);
+ ped_device_close (dest->dev);
+ ped_free (buf);
+ return 1;
+
+error_close_dest:
+ ped_device_close (dest->dev);
+error_close_src:
+ ped_device_close (src->dev);
+error_free_buf:
+ ped_free (buf);
+error:
+ return 0;
+}
+
+static PedFileSystem*
+_raw_copy_and_resize (const PedFileSystem* fs, PedGeometry* geom,
+ PedTimer* timer)
+{
+ PedFileSystem* new_fs;
+ PedTimer* sub_timer = NULL;
+
+ ped_timer_reset (timer);
+ ped_timer_set_state_name (timer, _("raw block copying"));
+
+ sub_timer = ped_timer_new_nested (timer, 0.95);
+ if (!_raw_copy (fs->geom, geom, sub_timer))
+ goto error;
+ ped_timer_destroy_nested (sub_timer);
+
+ new_fs = ped_file_system_open (geom);
+ if (!new_fs)
+ goto error;
+
+ ped_timer_set_state_name (timer, _("growing file system"));
+
+ sub_timer = ped_timer_new_nested (timer, 0.05);
+ if (!ped_file_system_resize (new_fs, geom, sub_timer))
+ goto error_close_new_fs;
+ ped_timer_destroy_nested (sub_timer);
+ return new_fs;
+
+error_close_new_fs:
+ ped_file_system_close (new_fs);
+error:
+ ped_timer_destroy_nested (sub_timer);
+ return NULL;
+}
+
+/**
+ * Create a new file system (of the same type) on \p geom, and
+ * copy the contents of \p fs into the new filesystem.
+ * If \p timer is non-NULL, it is used as the progress meter.
+ *
+ * \throws PED_EXCEPTION_ERROR when trying to copy onto an overlapping partition
+ * \throws PED_EXCEPTION_NO_FEATURE if copying of file system \p fs
+ * is not implemented yet
+ *
+ * \return a new PedFileSystem on success, \c NULL on failure
+ */
+PedFileSystem*
+ped_file_system_copy (PedFileSystem* fs, PedGeometry* geom, PedTimer* timer)
+{
+ PedFileSystem* new_fs;
+
+ PED_ASSERT (fs != NULL, return 0);
+ PED_ASSERT (geom != NULL, return 0);
+
+ if (!ped_device_open (geom->dev))
+ goto error;
+
+ if (ped_geometry_test_overlap (fs->geom, geom)) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+ _("Can't copy onto an overlapping partition."));
+ goto error_close_dev;
+ }
+
+ if (!fs->checked && fs->type->ops->check) {
+ if (!ped_file_system_check (fs, timer))
+ goto error_close_dev;
+ }
+
+ if (!ped_file_system_clobber_exclude (geom, fs->geom))
+ goto error_close_dev;
+
+ if (!fs->type->ops->copy) {
+ if (fs->type->ops->resize) {
+ if (fs->geom->length <= geom->length)
+ return _raw_copy_and_resize (
+ fs, (PedGeometry*) geom,
+ timer);
+
+ ped_exception_throw (
+ PED_EXCEPTION_NO_FEATURE,
+ PED_EXCEPTION_CANCEL,
+ _("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."),
+ fs->type->name);
+ goto error_close_dev;
+ } else {
+ ped_exception_throw (
+ PED_EXCEPTION_NO_FEATURE,
+ PED_EXCEPTION_CANCEL,
+ _("Support for copying %s file systems is not "
+ "implemented yet."),
+ fs->type->name);
+ goto error_close_dev;
+ }
+ }
+ new_fs = fs->type->ops->copy (fs, geom, timer);
+ if (!new_fs)
+ goto error_close_dev;
+ return new_fs;
+
+error_close_dev:
+ ped_device_close (geom->dev);
+error:
+ return NULL;;
+}
+
+/**
+ * Resize \p fs to new geometry \p geom.
+ *
+ * \p geom should satisfy the ped_file_system_get_resize_constraint().
+ * (This isn't asserted, so it's not a bug not to... just it's likely
+ * to fail ;) If \p timer is non-NULL, it is used as the progress meter.
+ *
+ * \throws PED_EXCEPTION_NO_FEATURE if resizing of file system \p fs
+ * is not implemented yet
+ *
+ * \return \c 0 on failure
+ */
+int
+ped_file_system_resize (PedFileSystem* fs, PedGeometry* geom, PedTimer* timer)
+{
+ PED_ASSERT (fs != NULL, return 0);
+ PED_ASSERT (geom != NULL, return 0);
+
+ if (!fs->type->ops->resize) {
+ ped_exception_throw (PED_EXCEPTION_NO_FEATURE,
+ PED_EXCEPTION_CANCEL,
+ _("Support for resizing %s file systems "
+ "is not implemented yet."),
+ fs->type->name);
+ return 0;
+ }
+ if (!fs->checked && fs->type->ops->check) {
+ if (!ped_file_system_check (fs, timer))
+ return 0;
+ }
+ if (!ped_file_system_clobber_exclude (geom, fs->geom))
+ return 0;
+
+ return fs->type->ops->resize (fs, geom, timer);
+}
+
+/**
+ * This function returns a constraint on the region that all file systems
+ * of a particular type \p fs_type created on device \p dev with
+ * ped_file_system_create() must satisfy. For example, FAT16 file systems must
+ * be at least 32 megabytes.
+ *
+ * \return \c NULL on failure
+ */
+PedConstraint*
+ped_file_system_get_create_constraint (const PedFileSystemType* fs_type,
+ const PedDevice* dev)
+{
+ PED_ASSERT (fs_type != NULL, return NULL);
+ PED_ASSERT (dev != NULL, return NULL);
+
+ if (!fs_type->ops->get_create_constraint)
+ return NULL;
+ return fs_type->ops->get_create_constraint (dev);
+}
+/**
+ * Return a constraint, that represents all of the possible ways the
+ * file system \p fs can be resized with ped_file_system_resize().
+ * This takes into account the amount of used space on
+ * the filesystem \p fs and the capabilities of the resize algorithm.
+ * Hints:
+ * -# if constraint->start_align->grain_size == 0, or
+ * constraint->start_geom->length == 1, then the start can not be moved
+ * -# constraint->min_size is the minimum size you can resize the partition
+ * to. You might want to tell the user this ;-).
+ *
+ * \return a PedConstraint on success, \c NULL on failure
+ */
+PedConstraint*
+ped_file_system_get_resize_constraint (const PedFileSystem* fs)
+{
+ PED_ASSERT (fs != NULL, return 0);
+
+ if (!fs->type->ops->get_resize_constraint)
+ return NULL;
+ return fs->type->ops->get_resize_constraint (fs);
+}
+
+/**
+ * Get the constraint on copying \p fs with ped_file_system_copy()
+ * to somewhere on \p dev.
+ *
+ * \return a PedConstraint on success, \c NULL on failure
+ */
+PedConstraint*
+ped_file_system_get_copy_constraint (const PedFileSystem* fs,
+ const PedDevice* dev)
+{
+ PedGeometry full_dev;
+
+ PED_ASSERT (fs != NULL, return NULL);
+ PED_ASSERT (dev != NULL, return NULL);
+
+ if (fs->type->ops->get_copy_constraint)
+ return fs->type->ops->get_copy_constraint (fs, dev);
+
+ if (fs->type->ops->resize) {
+ if (!ped_geometry_init (&full_dev, dev, 0, dev->length - 1))
+ return NULL;
+ return ped_constraint_new (
+ ped_alignment_any, ped_alignment_any,
+ &full_dev, &full_dev,
+ fs->geom->length, dev->length);
+ }
+
+ return NULL;
+}
+
+/** @} */
diff --git a/parted-1.8.7/libparted/fs/Makefile.am b/parted-1.8.7/libparted/fs/Makefile.am
new file mode 100644
index 0000000..96a5744
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/Makefile.am
@@ -0,0 +1,33 @@
+# This file is part of GNU Parted
+# Copyright (C) 1999, 2000, 2001, 2007 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 # 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
+# bfs/libbfs.la
+
+libfs_la_SOURCES =
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/parted-1.8.7/libparted/fs/Makefile.in b/parted-1.8.7/libparted/fs/Makefile.in
new file mode 100644
index 0000000..c1ed4df
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/Makefile.in
@@ -0,0 +1,744 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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, 2000, 2001, 2007 Free Software Foundation, Inc.
+#
+# This file may be modified and/or distributed without restriction.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+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
+am_libfs_la_OBJECTS =
+libfs_la_OBJECTS = $(am_libfs_la_OBJECTS)
+libfs_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(libfs_la_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I. -I$(top_builddir)/lib@am__isrc@
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+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
+ETAGS = etags
+CTAGS = ctags
+DIST_SUBDIRS = $(SUBDIRS)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+SUBDIRS = amiga ext2 ufs fat ntfs hfs linux_swap xfs jfs reiserfs # 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
+
+# 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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/Makefile'; \
+ 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
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libfs.la: $(libfs_la_OBJECTS) $(libfs_la_DEPENDENCIES)
+ $(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):
+ @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; \
+ (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):
+ @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; \
+ (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
+ || eval $$failcom; \
+ done && test -z "$$fail"
+tags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
+ done
+ctags-recursive:
+ list='$(SUBDIRS)'; for subdir in $$list; do \
+ test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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 || \
+ tags="$$tags $$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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+ (cd $$subdir && \
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
+ am__remove_distdir=: \
+ am__skip_length_check=: \
+ 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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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
+
+info: info-recursive
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-recursive
+
+install-exec-am:
+
+install-html: install-html-recursive
+
+install-info: install-info-recursive
+
+install-man:
+
+install-pdf: install-pdf-recursive
+
+install-ps: install-ps-recursive
+
+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) install-am \
+ install-strip
+
+.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
+ all all-am check check-am clean clean-generic clean-libtool \
+ clean-noinstLTLIBRARIES 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/parted-1.8.7/libparted/fs/amiga/Makefile.am b/parted-1.8.7/libparted/fs/amiga/Makefile.am
new file mode 100644
index 0000000..599fec2
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/amiga/Makefile.am
@@ -0,0 +1,16 @@
+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/parted-1.8.7/libparted/fs/amiga/Makefile.in b/parted-1.8.7/libparted/fs/amiga/Makefile.in
new file mode 100644
index 0000000..4b5ce57
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/amiga/Makefile.in
@@ -0,0 +1,638 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+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)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)/lib@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libamigafs_la_SOURCES)
+DIST_SOURCES = $(libamigafs_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/amiga/Makefile'; \
+ 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
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libamigafs.la: $(libamigafs_la_OBJECTS) $(libamigafs_la_DEPENDENCIES)
+ $(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@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+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
+
+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 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/parted-1.8.7/libparted/fs/amiga/affs.c b/parted-1.8.7/libparted/fs/amiga/affs.c
new file mode 100644
index 0000000..c099faa
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/amiga/affs.c
@@ -0,0 +1,463 @@
+/*
+ affs.c -- parted support for affs file systems
+ Copyright (C) 1998-2000, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+#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, return NULL);
+ PED_ASSERT (geom->dev != NULL, return 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;
+ }
+ ped_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) {
+ ped_free (block);
+ return ped_geometry_duplicate (geom);
+ }
+
+error:
+ ped_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,
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ resize: NULL,
+ copy: NULL,
+ get_create_constraint: NULL,
+ get_copy_constraint: NULL,
+ get_resize_constraint: NULL
+};
+static PedFileSystemOps _affs1_ops = {
+ probe: _affs1_probe,
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ resize: NULL,
+ copy: NULL,
+ get_create_constraint: NULL,
+ get_copy_constraint: NULL,
+ get_resize_constraint: NULL
+};
+static PedFileSystemOps _affs2_ops = {
+ probe: _affs2_probe,
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ resize: NULL,
+ copy: NULL,
+ get_create_constraint: NULL,
+ get_copy_constraint: NULL,
+ get_resize_constraint: NULL
+};
+static PedFileSystemOps _affs3_ops = {
+ probe: _affs3_probe,
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ resize: NULL,
+ copy: NULL,
+ get_create_constraint: NULL,
+ get_copy_constraint: NULL,
+ get_resize_constraint: NULL
+};
+static PedFileSystemOps _affs4_ops = {
+ probe: _affs4_probe,
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ resize: NULL,
+ copy: NULL,
+ get_create_constraint: NULL,
+ get_copy_constraint: NULL,
+ get_resize_constraint: NULL
+};
+static PedFileSystemOps _affs5_ops = {
+ probe: _affs5_probe,
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ resize: NULL,
+ copy: NULL,
+ get_create_constraint: NULL,
+ get_copy_constraint: NULL,
+ get_resize_constraint: NULL
+};
+static PedFileSystemOps _affs6_ops = {
+ probe: _affs6_probe,
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ resize: NULL,
+ copy: NULL,
+ get_create_constraint: NULL,
+ get_copy_constraint: NULL,
+ get_resize_constraint: NULL
+};
+static PedFileSystemOps _affs7_ops = {
+ probe: _affs7_probe,
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ resize: NULL,
+ copy: NULL,
+ get_create_constraint: NULL,
+ get_copy_constraint: NULL,
+ get_resize_constraint: NULL
+};
+static PedFileSystemOps _amufs_ops = {
+ probe: _amufs_probe,
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ resize: NULL,
+ copy: NULL,
+ get_create_constraint: NULL,
+ get_copy_constraint: NULL,
+ get_resize_constraint: NULL
+};
+static PedFileSystemOps _amufs0_ops = {
+ probe: _amufs0_probe,
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ resize: NULL,
+ copy: NULL,
+ get_create_constraint: NULL,
+ get_copy_constraint: NULL,
+ get_resize_constraint: NULL
+};
+static PedFileSystemOps _amufs1_ops = {
+ probe: _amufs1_probe,
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ resize: NULL,
+ copy: NULL,
+ get_create_constraint: NULL,
+ get_copy_constraint: NULL,
+ get_resize_constraint: NULL
+};
+static PedFileSystemOps _amufs2_ops = {
+ probe: _amufs2_probe,
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ resize: NULL,
+ copy: NULL,
+ get_create_constraint: NULL,
+ get_copy_constraint: NULL,
+ get_resize_constraint: NULL
+};
+static PedFileSystemOps _amufs3_ops = {
+ probe: _amufs3_probe,
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ resize: NULL,
+ copy: NULL,
+ get_create_constraint: NULL,
+ get_copy_constraint: NULL,
+ get_resize_constraint: NULL
+};
+static PedFileSystemOps _amufs4_ops = {
+ probe: _amufs4_probe,
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ resize: NULL,
+ copy: NULL,
+ get_create_constraint: NULL,
+ get_copy_constraint: NULL,
+ get_resize_constraint: NULL
+};
+static PedFileSystemOps _amufs5_ops = {
+ probe: _amufs5_probe,
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ resize: NULL,
+ copy: NULL,
+ get_create_constraint: NULL,
+ get_copy_constraint: NULL,
+ get_resize_constraint: NULL
+};
+
+#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/parted-1.8.7/libparted/fs/amiga/affs.h b/parted-1.8.7/libparted/fs/amiga/affs.h
new file mode 100644
index 0000000..ac12de6
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/amiga/affs.h
@@ -0,0 +1,20 @@
+
+/*
+ affs.h -- parted suppoer for affs filesystems header files
+ Copyright (C) 1998-2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
diff --git a/parted-1.8.7/libparted/fs/amiga/amiga.c b/parted-1.8.7/libparted/fs/amiga/amiga.c
new file mode 100644
index 0000000..9fa2025
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/amiga/amiga.c
@@ -0,0 +1,350 @@
+/*
+ libparted/fs_amiga - amiga file system support.
+ Copyright (C) 2000, 2001, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+
+ 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;
+ ped_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, return NULL);
+ PED_ASSERT(geom->dev!= NULL, return 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 :
+ ped_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)) {
+ ped_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 :
+ ped_free(rdb);
+ return NULL;
+ }
+ }
+
+ /* Current block is not a Partition Block */
+ if (part->pb_ID != IDNAME_PARTITION) {
+ ped_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) {
+ ped_free (rdb);
+ return part;
+ }
+ }
+
+ ped_free (rdb);
+ return NULL;
+}
diff --git a/parted-1.8.7/libparted/fs/amiga/amiga.h b/parted-1.8.7/libparted/fs/amiga/amiga.h
new file mode 100644
index 0000000..a7bc1f8
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/amiga/amiga.h
@@ -0,0 +1,71 @@
+/*
+ util.h -- amiga partition table headers.
+ Copyright (C) 1998-2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+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/parted-1.8.7/libparted/fs/amiga/apfs.c b/parted-1.8.7/libparted/fs/amiga/apfs.c
new file mode 100644
index 0000000..d13ba8d
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/amiga/apfs.c
@@ -0,0 +1,151 @@
+/*
+ apfs.c -- parted support for apfs file systems
+ Copyright (C) 1998-2000, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+#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, prealloc = 0;
+
+ PED_ASSERT (geom != NULL, return NULL);
+ PED_ASSERT (geom->dev != NULL, return 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);
+ blocksize = PED_BE32_TO_CPU (part->de_SizeBlock)
+ * PED_BE32_TO_CPU (part->de_SectorPerBlock) / 128;
+ }
+ ped_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) {
+ ped_free(block);
+ return ped_geometry_duplicate (geom);
+ }
+
+error:
+ ped_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,
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ resize: NULL,
+ copy: NULL,
+ get_create_constraint: NULL,
+ get_copy_constraint: NULL,
+ get_resize_constraint: NULL
+};
+static PedFileSystemOps _apfs2_ops = {
+ probe: _apfs2_probe,
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ resize: NULL,
+ copy: NULL,
+ get_create_constraint: NULL,
+ get_copy_constraint: NULL,
+ get_resize_constraint: NULL
+};
+
+#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/parted-1.8.7/libparted/fs/amiga/apfs.h b/parted-1.8.7/libparted/fs/amiga/apfs.h
new file mode 100644
index 0000000..543a509
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/amiga/apfs.h
@@ -0,0 +1,19 @@
+
+/*
+ apfs.h -- parted support for apfs file systems header files
+ Copyright (C) 1998-2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
diff --git a/parted-1.8.7/libparted/fs/amiga/asfs.c b/parted-1.8.7/libparted/fs/amiga/asfs.c
new file mode 100644
index 0000000..cfd868f
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/amiga/asfs.c
@@ -0,0 +1,143 @@
+/*
+ asfs.c -- parted asfs filesystem support
+ Copyright (C) 1998-2000, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+#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, reserved = 1, prealloc = 1;
+ PedSector root;
+ int found = 0;
+
+ PED_ASSERT (geom != NULL, return NULL);
+ PED_ASSERT (geom->dev != NULL, return 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) == 0 ?
+ 1 : PED_BE32_TO_CPU (part->de_PreAlloc);
+ reserved = PED_BE32_TO_CPU (part->de_Reserved) == 0 ?
+ 1 : PED_BE32_TO_CPU (part->de_Reserved);
+ blocksize = PED_BE32_TO_CPU (part->de_SizeBlock)
+ * PED_BE32_TO_CPU (part->de_SectorPerBlock) / 128;
+ }
+ ped_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) {
+ ped_free (block);
+ return ped_geometry_duplicate (geom);
+ }
+
+error:
+ ped_free (block);
+error_block:
+error_part:
+ return NULL;
+}
+
+static PedFileSystemOps _asfs_ops = {
+ probe: _asfs_probe,
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ resize: NULL,
+ copy: NULL,
+ get_create_constraint: NULL,
+ get_copy_constraint: NULL,
+ get_resize_constraint: NULL
+};
+
+PedFileSystemType _asfs_type = {
+ next: NULL,
+ ops: &_asfs_ops,
+ name: "asfs",
+ block_sizes: ((int[2]){512, 0})
+};
diff --git a/parted-1.8.7/libparted/fs/amiga/asfs.h b/parted-1.8.7/libparted/fs/amiga/asfs.h
new file mode 100644
index 0000000..959fc16
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/amiga/asfs.h
@@ -0,0 +1,19 @@
+
+/*
+ asfs.h -- parted asfs filesystem support header files
+ Copyright (C) 1998-2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
diff --git a/parted-1.8.7/libparted/fs/amiga/interface.c b/parted-1.8.7/libparted/fs/amiga/interface.c
new file mode 100644
index 0000000..32f48f4
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/amiga/interface.c
@@ -0,0 +1,88 @@
+/*
+ interface.c -- parted support amiga file systems
+ Copyright (C) 1998-2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+
+#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/parted-1.8.7/libparted/fs/ext2/Makefile.am b/parted-1.8.7/libparted/fs/ext2/Makefile.am
new file mode 100644
index 0000000..8ee3821
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/ext2/Makefile.am
@@ -0,0 +1,21 @@
+partedincludedir = -I$(top_srcdir)/include
+
+noinst_LTLIBRARIES = libext2.la
+libext2_la_SOURCES = ext2.c \
+ ext2.h \
+ ext2_fs.h \
+ ext2_block_relocator.c \
+ ext2_buffer.c \
+ ext2_inode_relocator.c \
+ ext2_meta.c \
+ ext2_mkfs.c \
+ ext2_resize.c \
+ interface.c \
+ parted_io.c \
+ parted_io.h \
+ tune.c \
+ tune.h
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/parted-1.8.7/libparted/fs/ext2/Makefile.in b/parted-1.8.7/libparted/fs/ext2/Makefile.in
new file mode 100644
index 0000000..994acde
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/ext2/Makefile.in
@@ -0,0 +1,649 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libext2_la_LIBADD =
+am_libext2_la_OBJECTS = ext2.lo ext2_block_relocator.lo ext2_buffer.lo \
+ ext2_inode_relocator.lo ext2_meta.lo ext2_mkfs.lo \
+ ext2_resize.lo interface.lo parted_io.lo tune.lo
+libext2_la_OBJECTS = $(am_libext2_la_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)/lib@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libext2_la_SOURCES)
+DIST_SOURCES = $(libext2_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+partedincludedir = -I$(top_srcdir)/include
+noinst_LTLIBRARIES = libext2.la
+libext2_la_SOURCES = ext2.c \
+ ext2.h \
+ ext2_fs.h \
+ ext2_block_relocator.c \
+ ext2_buffer.c \
+ ext2_inode_relocator.c \
+ ext2_meta.c \
+ ext2_mkfs.c \
+ ext2_resize.c \
+ interface.c \
+ parted_io.c \
+ parted_io.h \
+ tune.c \
+ tune.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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/ext2/Makefile'; \
+ 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
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libext2.la: $(libext2_la_OBJECTS) $(libext2_la_DEPENDENCIES)
+ $(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)/ext2.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ext2_block_relocator.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ext2_buffer.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ext2_inode_relocator.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ext2_meta.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ext2_mkfs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/ext2_resize.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/interface.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parted_io.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/tune.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+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
+
+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 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/parted-1.8.7/libparted/fs/ext2/ext2.c b/parted-1.8.7/libparted/fs/ext2/ext2.c
new file mode 100644
index 0000000..2a60215
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/ext2/ext2.c
@@ -0,0 +1,793 @@
+/*
+ ext2.c -- generic ext2 stuff
+ Copyright (C) 1998, 1999, 2000, 2001, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+#include <config.h>
+
+#ifndef DISCOVER_ONLY
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <time.h>
+#include <uuid/uuid.h>
+#include "ext2.h"
+
+/* ext2 stuff ****************************************************************/
+
+unsigned char _bitmap[8] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80};
+
+int ext2_copy_block(struct ext2_fs *fs, blk_t from, blk_t to)
+{
+ unsigned char* buf = ped_malloc (fs->blocksize);
+
+ if (!ext2_bcache_flush(fs, from)) return 0;
+ if (!ext2_bcache_flush(fs, to)) return 0;
+
+ if (!ext2_read_blocks(fs, buf, from, 1)) return 0;
+ if (!ext2_write_blocks(fs, buf, to, 1)) return 0;
+
+ return 1;
+}
+
+int ext2_get_block_state(struct ext2_fs *fs, blk_t block)
+{
+ struct ext2_buffer_head *bh;
+ int group;
+ int offset;
+ int state;
+
+ block -= EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb);
+ group = block / EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb);
+ offset = block % EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb);
+
+ bh = ext2_bread(fs, EXT2_GROUP_BLOCK_BITMAP(fs->gd[group]));
+ state = bh->data[offset>>3] & _bitmap[offset&7];
+ ext2_brelse(bh, 0);
+
+ return state;
+}
+
+blk_t ext2_find_free_block(struct ext2_fs *fs)
+{
+ int i;
+
+ for (i=0;i<fs->numgroups;i++)
+ if (EXT2_GROUP_FREE_BLOCKS_COUNT(fs->gd[i]))
+ {
+ blk_t j;
+ blk_t offset;
+
+ offset = i * EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb)
+ + EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb);
+ for (j=fs->adminblocks;
+ j<EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb);
+ j++)
+ if (ext2_is_data_block(fs, offset + j) &&
+ !ext2_get_block_state(fs, offset + j))
+ return offset + j;
+
+ ped_exception_throw (PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Inconsistent group descriptors!"));
+ }
+
+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+ _("File system full!"));
+ return 0;
+}
+
+ino_t ext2_find_free_inode(struct ext2_fs *fs)
+{
+ int i;
+
+ for (i=0;i<fs->numgroups;i++)
+ if (EXT2_GROUP_FREE_INODES_COUNT(fs->gd[i]))
+ {
+ ino_t j;
+ ino_t offset;
+
+ offset = i * EXT2_SUPER_INODES_PER_GROUP(fs->sb) + 1;
+ for (j=0;j<EXT2_SUPER_INODES_PER_GROUP(fs->sb);j++)
+ if (!ext2_get_inode_state(fs, offset + j))
+ return offset + j;
+
+ ped_exception_throw (PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Inconsistent group descriptors!"));
+ }
+
+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+ _("File system full!"));
+ return 0;
+}
+
+int ext2_move_blocks(struct ext2_fs *fs, blk_t src, blk_t num, blk_t dest)
+{
+ unsigned char *buf;
+ blk_t i;
+
+ ped_exception_fetch_all();
+ if ((buf = ped_malloc(num << fs->logsize)) != NULL)
+ {
+ ped_exception_leave_all();
+
+ if (!ext2_bcache_flush_range(fs, src, num)) return 0;
+ if (!ext2_bcache_flush_range(fs, dest, num)) return 0;
+
+ if (!ext2_read_blocks(fs, buf, src, num)) return 0;
+ if (!ext2_write_blocks(fs, buf, dest, num)) return 0;
+
+ ped_free(buf);
+ return 1;
+ }
+ ped_exception_catch();
+ ped_exception_leave_all();
+
+ if (src > dest)
+ {
+ for (i=0;i<num;i++)
+ if (!ext2_copy_block(fs, src+i, dest+i))
+ return 0;
+ }
+ else
+ {
+ for (i=num;i>0;i--)
+ if (!ext2_copy_block(fs, src+i, dest+i))
+ return 0;
+ }
+ return 1;
+}
+
+int ext2_read_blocks(struct ext2_fs *fs, void *ptr, blk_t block, blk_t num)
+{
+ return fs->devhandle->ops->read(fs->devhandle->cookie, ptr, block, num);
+}
+
+int ext2_set_block_state(struct ext2_fs *fs, blk_t block, int state, int updatemetadata)
+{
+ struct ext2_buffer_head *bh;
+ int group;
+ int offset;
+
+ block -= EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb);
+ group = block / EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb);
+ offset = block % EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb);
+
+ bh = ext2_bread(fs, EXT2_GROUP_BLOCK_BITMAP(fs->gd[group]));
+ bh->dirty = 1;
+ if (state)
+ bh->data[offset>>3] |= _bitmap[offset&7];
+ else
+ bh->data[offset>>3] &= ~_bitmap[offset&7];
+ ext2_brelse(bh, 0);
+
+ if (updatemetadata)
+ {
+ int diff;
+
+ diff = state ? -1 : 1;
+
+ fs->gd[group].bg_free_blocks_count = PED_CPU_TO_LE16
+ (EXT2_GROUP_FREE_BLOCKS_COUNT(fs->gd[group]) + diff);
+ fs->sb.s_free_blocks_count = PED_CPU_TO_LE32
+ (EXT2_SUPER_FREE_BLOCKS_COUNT(fs->sb) + diff);
+ fs->metadirty |= EXT2_META_SB | EXT2_META_GD;
+ }
+ return 1;
+}
+
+int ext2_write_blocks(struct ext2_fs *fs, void *ptr, blk_t block, blk_t num)
+{
+ return fs->devhandle->ops->write(fs->devhandle->cookie, ptr, block, num);
+}
+
+int ext2_zero_blocks(struct ext2_fs *fs, blk_t block, blk_t num)
+{
+ unsigned char *buf;
+ blk_t i;
+
+ ped_exception_fetch_all();
+ buf = ped_malloc (num << fs->logsize);
+ if (buf)
+ {
+ ped_exception_leave_all();
+
+ memset(buf, 0, num << fs->logsize);
+ if (!ext2_bcache_flush_range(fs, block, num))
+ goto error_free_buf;
+ if (!ext2_write_blocks(fs, buf, block, num))
+ goto error_free_buf;
+ ped_free(buf);
+ return 1;
+ }
+ ped_exception_catch();
+
+ buf = ped_malloc (fs->blocksize);
+ if (buf)
+ {
+ ped_exception_leave_all();
+
+ memset(buf, 0, fs->blocksize);
+
+ for (i=0;i<num;i++)
+ {
+ if (!ext2_bcache_flush(fs, block+i))
+ goto error_free_buf;
+ if (!ext2_write_blocks(fs, buf, block+i, 1))
+ goto error_free_buf;
+ }
+
+ ped_free(buf);
+ return 1;
+ }
+ ped_exception_catch();
+ ped_exception_leave_all();
+
+ for (i=0;i<num;i++)
+ {
+ struct ext2_buffer_head *bh;
+
+ bh = ext2_bcreate(fs, block+i);
+ if (!bh)
+ goto error;
+ bh->dirty = 1;
+ if (!ext2_brelse(bh, 1))
+ goto error;
+ }
+ return 1;
+
+error_free_buf:
+ ped_free(buf);
+error:
+ return 0;
+}
+
+off_t ext2_get_inode_offset(struct ext2_fs *fs, ino_t inode, blk_t *block)
+{
+ int group;
+ int offset;
+
+ inode--;
+
+ group = inode / EXT2_SUPER_INODES_PER_GROUP(fs->sb);
+ offset = (inode % EXT2_SUPER_INODES_PER_GROUP(fs->sb))
+ * sizeof(struct ext2_inode);
+
+ *block = EXT2_GROUP_INODE_TABLE(fs->gd[group])
+ + (offset >> fs->logsize);
+
+ return offset & (fs->blocksize - 1);
+}
+
+int ext2_get_inode_state(struct ext2_fs *fs, ino_t inode)
+{
+ struct ext2_buffer_head *bh;
+ int group;
+ int offset;
+ int ret;
+
+ inode--;
+ group = inode / EXT2_SUPER_INODES_PER_GROUP(fs->sb);
+ offset = inode % EXT2_SUPER_INODES_PER_GROUP(fs->sb);
+
+ bh = ext2_bread(fs, EXT2_GROUP_INODE_BITMAP(fs->gd[group]));
+ ret = bh->data[offset>>3] & _bitmap[offset&7];
+ ext2_brelse(bh, 0);
+
+ return ret;
+}
+
+int ext2_read_inode(struct ext2_fs *fs, ino_t inode, struct ext2_inode *data)
+{
+ struct ext2_buffer_head *bh;
+ blk_t blk;
+ off_t off;
+
+ off = ext2_get_inode_offset(fs, inode, &blk);
+
+ bh = ext2_bread(fs, blk);
+ if (!bh)
+ return 0;
+
+ memcpy(data, bh->data + off, sizeof(struct ext2_inode));
+ ext2_brelse(bh, 0);
+ return 1;
+}
+
+int ext2_set_inode_state(struct ext2_fs *fs, ino_t inode, int state, int updatemetadata)
+{
+ struct ext2_buffer_head *bh;
+ int group;
+ int offset;
+
+ inode--;
+ group = inode / EXT2_SUPER_INODES_PER_GROUP(fs->sb);
+ offset = inode % EXT2_SUPER_INODES_PER_GROUP(fs->sb);
+
+ bh = ext2_bread(fs, EXT2_GROUP_INODE_BITMAP(fs->gd[group]));
+ if (!bh)
+ return 0;
+ bh->dirty = 1;
+ if (state)
+ bh->data[offset>>3] |= _bitmap[offset&7];
+ else
+ bh->data[offset>>3] &= ~_bitmap[offset&7];
+ ext2_brelse(bh, 0);
+
+ if (updatemetadata)
+ {
+ int diff;
+
+ diff = state ? -1 : 1;
+
+ fs->gd[group].bg_free_inodes_count = PED_CPU_TO_LE16
+ (EXT2_GROUP_FREE_INODES_COUNT(fs->gd[group]) + diff);
+ fs->sb.s_free_inodes_count = PED_CPU_TO_LE32
+ (EXT2_SUPER_FREE_INODES_COUNT(fs->sb) + diff);
+ fs->metadirty = EXT2_META_SB | EXT2_META_GD;
+ }
+ return 1;
+}
+
+static void
+_inode_update_size(struct ext2_fs *fs, struct ext2_inode *inode, int delta)
+{
+ int i512perblock = 1 << (fs->logsize - 9);
+ uint64_t size;
+
+ /* i_blocks is in 512 byte blocks */
+ inode->i_blocks = PED_CPU_TO_LE32(EXT2_INODE_BLOCKS(*inode)
+ + delta * i512perblock);
+ size = EXT2_INODE_SIZE(*inode) + delta * fs->blocksize;
+ inode->i_size = PED_CPU_TO_LE32(size % (1LL << 32));
+ inode->i_size_high = PED_CPU_TO_LE32(size / (1LL << 32));
+ inode->i_mtime = PED_CPU_TO_LE32(time(NULL));
+}
+
+int ext2_do_inode(struct ext2_fs *fs, struct ext2_inode *inode, blk_t block,
+ int action)
+{
+ struct ext2_buffer_head *bh;
+ uint32_t *udata;
+ blk_t count = 0;
+ int i;
+ int u32perblock = fs->blocksize >> 2;
+ int i512perblock = 1 << (fs->logsize - 9);
+
+ if (block == 0 || EXT2_INODE_MODE(*inode) == 0)
+ return -1;
+
+ if (fs->opt_debug)
+ switch (action)
+ {
+ case EXT2_ACTION_ADD:
+ fprintf(stderr,"adding 0x%04x to inode\n",
+ block);
+ break;
+ case EXT2_ACTION_DELETE:
+ fprintf(stderr,"deleting 0x%04x from inode\n",
+ block);
+ break;
+ case EXT2_ACTION_FIND:
+ fprintf(stderr,"finding 0x%04x in inode\n",
+ block);
+ break;
+ }
+
+ /* Direct blocks for first 12 blocks */
+ for (i = 0; i < EXT2_NDIR_BLOCKS; i++)
+ {
+ if (action == EXT2_ACTION_ADD && !EXT2_INODE_BLOCK(*inode, i))
+ {
+ inode->i_block[i] = PED_CPU_TO_LE32(block);
+ _inode_update_size (fs, inode, 1);
+ ext2_set_block_state(fs, block, 1, 1);
+ return i;
+ }
+ if (EXT2_INODE_BLOCK(*inode, i) == block)
+ {
+ if (action == EXT2_ACTION_DELETE)
+ {
+ inode->i_block[i] = 0;
+ _inode_update_size (fs, inode, -1);
+ ext2_set_block_state(fs, block, 0, 1);
+ }
+ return i;
+ }
+ if (EXT2_INODE_BLOCK(*inode, i))
+ count += i512perblock;
+ }
+
+ count += EXT2_INODE_BLOCK(*inode, EXT2_IND_BLOCK) ? i512perblock : 0;
+ count += EXT2_INODE_BLOCK(*inode, EXT2_DIND_BLOCK) ? i512perblock : 0;
+ count += EXT2_INODE_BLOCK(*inode, EXT2_TIND_BLOCK) ? i512perblock : 0;
+
+ if (!EXT2_INODE_BLOCK(*inode, EXT2_IND_BLOCK) ||
+ (count >= EXT2_INODE_BLOCKS(*inode) && action != EXT2_ACTION_ADD))
+ return -1;
+
+ bh = ext2_bread(fs, EXT2_INODE_BLOCK(*inode, EXT2_IND_BLOCK));
+ udata = (uint32_t *)bh->data;
+
+ /* Indirect blocks for next 256/512/1024 blocks (for 1k/2k/4k blocks) */
+ for (i = 0; i < u32perblock; i++) {
+ if (action == EXT2_ACTION_ADD && !udata[i]) {
+ bh->dirty = 1;
+ udata[i] = PED_CPU_TO_LE32(block);
+ _inode_update_size (fs, inode, 1);
+ ext2_set_block_state(fs, block, 1, 1);
+ ext2_brelse(bh, 0);
+ return EXT2_NDIR_BLOCKS + i;
+ }
+ if (PED_LE32_TO_CPU(udata[i]) == block) {
+ if (action == EXT2_ACTION_DELETE) {
+ bh->dirty = 1;
+ udata[i] = 0;
+ _inode_update_size (fs, inode, -1);
+ ext2_set_block_state(fs, block, 0, 1);
+ }
+ ext2_brelse(bh, 0);
+ return EXT2_NDIR_BLOCKS + i;
+ }
+ if (udata[i])
+ {
+ count += i512perblock;
+ if (count >= EXT2_INODE_BLOCKS(*inode) &&
+ action != EXT2_ACTION_ADD)
+ return -1;
+ }
+ }
+
+ ext2_brelse(bh, 0);
+
+ if (!EXT2_INODE_BLOCK(*inode, EXT2_DIND_BLOCK) ||
+ (count >= EXT2_INODE_BLOCKS(*inode) && action != EXT2_ACTION_ADD))
+ return -1;
+ bh = ext2_bread(fs, EXT2_INODE_BLOCK(*inode, EXT2_DIND_BLOCK));
+ udata = (uint32_t *)bh->data;
+
+ /* Double indirect blocks for next 2^16/2^18/2^20 1k/2k/4k blocks */
+ for (i = 0; i < u32perblock; i++) {
+ struct ext2_buffer_head *bh2;
+ uint32_t *udata2;
+ int j;
+
+ if (!udata[i]) {
+ ext2_brelse(bh, 0);
+ return -1;
+ }
+ bh2 = ext2_bread(fs, PED_LE32_TO_CPU(udata[i]));
+ udata2 = (uint32_t *)bh2->data;
+ count += i512perblock;
+
+ for (j = 0; j < u32perblock; j++) {
+ if (action == EXT2_ACTION_ADD && !udata2[j]) {
+ bh2->dirty = 1;
+ udata2[j] = PED_CPU_TO_LE32(block);
+ _inode_update_size (fs, inode, 1);
+ ext2_set_block_state(fs, block, 1, 1);
+ ext2_brelse(bh, 0);
+ ext2_brelse(bh2, 0);
+ return EXT2_NDIR_BLOCKS + i * u32perblock + j;
+ }
+ if (PED_LE32_TO_CPU(udata2[j]) == block) {
+ if (action == EXT2_ACTION_DELETE) {
+ bh2->dirty = 1;
+ udata2[j] = 0;
+ _inode_update_size (fs, inode, -1);
+ ext2_set_block_state(fs, block, 0, 1);
+ }
+ ext2_brelse(bh, 0);
+ ext2_brelse(bh2, 0);
+ return EXT2_NDIR_BLOCKS + i * u32perblock + j;
+ }
+ if (udata2[j])
+ {
+ count += i512perblock;
+ if (count >= EXT2_INODE_BLOCKS(*inode) &&
+ action != EXT2_ACTION_ADD)
+ return -1;
+ }
+ }
+ ext2_brelse(bh2, 0);
+ }
+ ext2_brelse(bh, 0);
+
+ /* FIXME: we should check for triple-indirect blocks here, but it
+ * would be nice to have a better routine to traverse blocks, and
+ * file systems that need triple-indirect blocks for the resize
+ * inode are too big to worry about yet.
+ */
+
+ return -1;
+}
+
+int ext2_write_inode(struct ext2_fs *fs, ino_t inode, const struct ext2_inode *data)
+{
+ struct ext2_buffer_head *bh;
+ blk_t blk;
+ off_t off;
+
+ off = ext2_get_inode_offset(fs, inode, &blk);
+
+ bh = ext2_bread(fs, blk);
+ if (!bh)
+ return 0;
+ bh->dirty = 1;
+ memcpy(bh->data + off, data, sizeof(struct ext2_inode));
+ ext2_brelse(bh, 0);
+
+ return 1;
+}
+
+int ext2_zero_inode(struct ext2_fs *fs, ino_t inode)
+{
+ struct ext2_inode buf;
+
+ memset(&buf, 0, sizeof(struct ext2_inode));
+ return ext2_write_inode(fs, inode, &buf);
+}
+
+
+
+
+
+/* check whether y is root of x
+ * (formula grabbed from linux ext2 kernel source) */
+static int is_root(int x, int y)
+{
+ if (!x)
+ return 1;
+
+ while (1)
+ {
+ if (x == 1)
+ return 1;
+
+ if (x % y)
+ return 0;
+
+ x /= y;
+ }
+}
+
+/* check whether group contains a superblock copy on file systems
+ * where not all groups have one (sparse superblock feature) */
+int ext2_is_group_sparse(struct ext2_fs *fs, int group)
+{
+ if (!fs->sparse)
+ return 1;
+
+ if (is_root(group, 3) || is_root(group, 5) || is_root(group, 7))
+ return 1;
+
+ return 0;
+}
+
+void ext2_close(struct ext2_fs *fs)
+{
+ ext2_commit_metadata(fs, EXT2_META_PRIMARY | EXT2_META_BACKUP);
+ ext2_sync(fs);
+
+ ext2_bcache_deinit(fs);
+
+ fs->devhandle->ops->close(fs->devhandle->cookie);
+
+ ped_free(fs->gd);
+ ped_free(fs);
+}
+
+int ext2_commit_metadata(struct ext2_fs *fs, int copies)
+{
+ int i;
+ int num;
+ int wmeta = fs->metadirty & copies;
+ unsigned char* sb = ped_malloc(fs->blocksize);
+ struct ext2_super_block *sb_for_io;
+ int sb_block;
+
+ /* See if there is even anything to write... */
+ if (wmeta == EXT2_META_CLEAN)
+ return 1;
+
+ fs->sb.s_r_blocks_count = PED_CPU_TO_LE32 (
+ fs->r_frac * (loff_t)EXT2_SUPER_BLOCKS_COUNT(fs->sb)
+ / 100);
+
+ if (!ext2_read_blocks (fs, sb, 0, 1))
+ return 0;
+
+ if (EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb)) {
+ memcpy(sb, &fs->sb, 1024);
+ sb_for_io = (struct ext2_super_block *) sb;
+ } else {
+ memcpy(sb+1024, &fs->sb, 1024);
+ sb_for_io = (struct ext2_super_block *) (sb + 1024);
+ }
+
+ num = copies & EXT2_META_BACKUP ? fs->numgroups : 1;
+
+ for (i = 0, sb_block = EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb); i < num;
+ i++, sb_block += EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb))
+ {
+
+ if (!ext2_is_group_sparse(fs, i))
+ continue;
+
+ if (fs->dynamic_version)
+ sb_for_io->s_block_group_nr = PED_CPU_TO_LE16 (i);
+
+ if ((i == 0 && wmeta & EXT2_META_PRIMARY_SB) ||
+ (i != 0 && wmeta & EXT2_META_SB))
+ {
+ if (!ext2_bcache_flush_range(fs, sb_block, 1))
+ return 0;
+ if (!ext2_write_blocks(fs, sb, sb_block, 1))
+ return 0;
+ }
+ if ((i == 0 && wmeta & EXT2_META_PRIMARY_GD) ||
+ (i != 0 && wmeta & EXT2_META_GD))
+ {
+ if (!ext2_bcache_flush_range(fs, sb_block + 1,
+ fs->gdblocks))
+ return 0;
+ if (!ext2_write_blocks(fs, fs->gd, sb_block + 1,
+ fs->gdblocks))
+ return 0;
+ }
+ }
+
+ sb_for_io->s_block_group_nr = 0;
+
+ /* Clear the flags of the components we just finished writing. */
+ fs->metadirty &= ~copies;
+
+ return 1;
+}
+
+int ext2_sync(struct ext2_fs *fs)
+{
+ if (!ext2_commit_metadata(fs, EXT2_META_PRIMARY)) return 0;
+ if (!ext2_bcache_sync(fs)) return 0;
+ if (!fs->devhandle->ops->sync(fs->devhandle->cookie)) return 0;
+ return 1;
+}
+
+struct ext2_fs *ext2_open(struct ext2_dev_handle *handle, int state)
+{
+ struct ext2_fs *fs;
+
+ if ((fs = (struct ext2_fs *) ped_malloc(sizeof(struct ext2_fs)))
+ == NULL)
+ goto error;
+
+ handle->ops->set_blocksize(handle->cookie, 10);
+
+ if (!handle->ops->read(handle->cookie, &fs->sb, 1, 1)
+ || EXT2_SUPER_MAGIC(fs->sb) != EXT2_SUPER_MAGIC_CONST)
+ {
+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+ _("Invalid superblock. Are you sure this is an ext2 "
+ "file system?"));
+ goto error_free_fs;
+ }
+
+
+ fs->opt_debug = 1;
+ fs->opt_safe = 1;
+ fs->opt_verbose = 0;
+
+ if (EXT2_SUPER_STATE(fs->sb) & EXT2_ERROR_FS & ~(state & EXT2_ERROR_FS))
+ {
+ if (ped_exception_throw (
+ PED_EXCEPTION_WARNING, PED_EXCEPTION_IGNORE_CANCEL,
+ _("File system has errors! You should run e2fsck."))
+ == PED_EXCEPTION_CANCEL)
+ goto error_free_fs;
+ }
+
+ if (!((EXT2_SUPER_STATE(fs->sb) | state) & EXT2_VALID_FS)
+ || (EXT2_SUPER_FEATURE_INCOMPAT(fs->sb)
+ & EXT3_FEATURE_INCOMPAT_RECOVER))
+ {
+ if (ped_exception_throw (
+ PED_EXCEPTION_ERROR, PED_EXCEPTION_IGNORE_CANCEL,
+ _("File system was not cleanly unmounted! "
+ "You should run e2fsck. Modifying an unclean "
+ "file system could cause severe corruption."))
+ != PED_EXCEPTION_IGNORE)
+ goto error_free_fs;
+ }
+
+ fs->dynamic_version = EXT2_SUPER_REV_LEVEL (fs->sb) > 0;
+
+ if ((EXT2_SUPER_FEATURE_COMPAT(fs->sb)
+ & ~(EXT3_FEATURE_COMPAT_HAS_JOURNAL |
+ EXT2_FEATURE_COMPAT_HAS_DIR_INDEX)) ||
+ (EXT2_SUPER_FEATURE_INCOMPAT(fs->sb)
+ & ~(EXT2_FEATURE_INCOMPAT_FILETYPE |
+ EXT3_FEATURE_INCOMPAT_RECOVER)) ||
+ (EXT2_SUPER_FEATURE_RO_COMPAT(fs->sb)
+ & ~(EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER |
+ EXT2_FEATURE_RO_COMPAT_LARGE_FILE)))
+ {
+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+ _("File system has an incompatible feature enabled."));
+ goto error_free_fs;
+ }
+
+ fs->devhandle = handle;
+ fs->logsize = EXT2_SUPER_LOG_BLOCK_SIZE(fs->sb) + 10;
+ handle->ops->set_blocksize(handle->cookie, fs->logsize);
+
+ if (!ext2_bcache_init(fs))
+ {
+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+ _("Error allocating buffer cache."));
+ goto error_free_fs;
+ }
+
+ fs->blocksize = 1 << fs->logsize;
+
+ fs->numgroups = ped_div_round_up (EXT2_SUPER_BLOCKS_COUNT(fs->sb)
+ - EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb),
+ EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb));
+ fs->gdblocks = ped_div_round_up (fs->numgroups
+ * sizeof(struct ext2_group_desc),
+ fs->blocksize);
+ fs->inodeblocks = ped_div_round_up (EXT2_SUPER_INODES_PER_GROUP(fs->sb)
+ * sizeof(struct ext2_inode),
+ fs->blocksize);
+ fs->r_frac = ped_div_round_up (100 * (loff_t)EXT2_SUPER_R_BLOCKS_COUNT(fs->sb),
+ EXT2_SUPER_BLOCKS_COUNT(fs->sb));
+ fs->adminblocks = 3 + fs->gdblocks + fs->inodeblocks;
+
+ fs->sparse = 0;
+ if (EXT2_SUPER_FEATURE_RO_COMPAT(fs->sb)
+ & EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER)
+ fs->sparse = 1;
+
+ fs->has_journal = 0 < (EXT2_SUPER_FEATURE_COMPAT(fs->sb)
+ & EXT3_FEATURE_COMPAT_HAS_JOURNAL);
+ fs->has_internal_journal
+ = fs->has_journal
+ && uuid_is_null(EXT2_SUPER_JOURNAL_UUID(fs->sb))
+ && EXT2_SUPER_JOURNAL_INUM(fs->sb);
+
+ fs->gd = ped_malloc (fs->numgroups * sizeof (struct ext2_group_desc)
+ + fs->blocksize);
+ if (!fs->gd)
+ goto error_deinit_bcache;
+
+ ext2_read_blocks(fs, fs->gd, EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb) + 1,
+ fs->gdblocks);
+
+ fs->metadirty = 0;
+ return fs;
+
+ ped_free(fs->gd);
+error_deinit_bcache:
+ ext2_bcache_deinit(fs);
+error_free_fs:
+ ped_free(fs);
+error:
+ return NULL;
+}
+
+#endif /* !DISCOVER_ONLY */
diff --git a/parted-1.8.7/libparted/fs/ext2/ext2.h b/parted-1.8.7/libparted/fs/ext2/ext2.h
new file mode 100644
index 0000000..e6cbfc3
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/ext2/ext2.h
@@ -0,0 +1,247 @@
+/*
+ ext2.h -- ext2 header
+ Copyright (C) 1998-2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _EXT2_H
+#define _EXT2_H
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <sys/types.h>
+#include "tune.h"
+
+#if HAVE_INTTYPES_H
+# include <inttypes.h>
+#endif
+
+#if ENABLE_NLS
+# include <libintl.h>
+# define _(String) dgettext (PACKAGE, String)
+#else
+# define _(String) (String)
+#endif /* ENABLE_NLS */
+
+
+/* Ehrm.... sorry, pedanticists! :-) */
+#ifndef offsetof
+# define offsetof(type, field) ((size_t)(&(((type *)0)->field)))
+#endif
+
+#ifdef __BEOS__
+ typedef off_t loff_t;
+#endif
+
+typedef u_int32_t blk_t;
+
+#ifdef HAVE_LINUX_EXT2_FS_H
+#define _LINUX_TYPES_H
+#define i_version i_generation
+#include <linux/ext2_fs.h>
+#else
+#include "ext2_fs.h"
+#endif
+
+extern unsigned char _bitmap[8];
+
+struct ext2_buffer_cache
+{
+ struct ext2_buffer_head *cache;
+ struct ext2_buffer_head *heads;
+ struct ext2_buffer_head **hash;
+ struct ext2_fs *fs;
+
+ int size;
+ int numalloc;
+ unsigned char *buffermem;
+};
+
+struct ext2_buffer_head
+{
+ struct ext2_buffer_head *next;
+ struct ext2_buffer_head *prev;
+ unsigned char *data;
+ blk_t block;
+
+ int usecount;
+ int dirty;
+
+ struct ext2_buffer_cache *bc;
+ int alloc;
+};
+
+struct ext2_dev_ops
+{
+ int (*close)(void *cookie);
+ blk_t (*get_size)(void *cookie);
+ int (*read)(void *cookie, void *ptr, blk_t block, blk_t num);
+ int (*set_blocksize)(void *cookie, int logsize);
+ int (*sync)(void *cookie);
+ int (*write)(void *cookie, void *ptr, blk_t block, blk_t num);
+};
+
+struct ext2_dev_handle
+{
+ struct ext2_dev_ops *ops;
+ void *cookie;
+};
+
+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;
+};
+
+
+#define EXT2_ACTION_ADD 1
+#define EXT2_ACTION_DELETE 2
+#define EXT2_ACTION_FIND 3
+
+#define EXT2_META_CLEAN 0
+#define EXT2_META_PRIMARY_SB 1
+#define EXT2_META_BACKUP_SB 2
+#define EXT2_META_PRIMARY_GD 4
+#define EXT2_META_BACKUP_GD 8
+
+#define EXT2_META_PRIMARY (EXT2_META_PRIMARY_SB | EXT2_META_PRIMARY_GD)
+#define EXT2_META_BACKUP (EXT2_META_BACKUP_SB | EXT2_META_BACKUP_GD)
+#define EXT2_META_SB (EXT2_META_PRIMARY_SB | EXT2_META_BACKUP_SB)
+#define EXT2_META_GD (EXT2_META_PRIMARY_GD | EXT2_META_BACKUP_GD)
+
+/* generic stuff */
+int ext2_copy_block (struct ext2_fs *fs, blk_t from, blk_t to);
+void ext2_close (struct ext2_fs *fs);
+int ext2_commit_metadata (struct ext2_fs *fs, int copies);
+off_t ext2_get_inode_offset (struct ext2_fs *fs, ino_t inode, blk_t *block);
+blk_t ext2_find_free_block (struct ext2_fs *fs);
+ino_t ext2_find_free_inode (struct ext2_fs *fs);
+int ext2_get_inode_state (struct ext2_fs *fs, ino_t inode);
+int ext2_is_group_sparse (struct ext2_fs *fs, int group);
+int ext2_move_blocks (struct ext2_fs *fs, blk_t src, blk_t num, blk_t dest);
+struct ext2_fs *ext2_open (struct ext2_dev_handle *handle, int state);
+int ext2_read_blocks (struct ext2_fs *fs, void *ptr, blk_t block, blk_t numblocks);
+int ext2_read_inode (struct ext2_fs *fs, ino_t inode, struct ext2_inode *inodep);
+int ext2_set_inode_state (struct ext2_fs *fs, ino_t inode, int state, int updatemetadata);
+int ext2_do_inode (struct ext2_fs *fs, struct ext2_inode *inode, blk_t block, int action);
+int ext2_sync (struct ext2_fs *fs);
+int ext2_write_blocks (struct ext2_fs *fs, void *ptr, blk_t block, blk_t numblocks);
+int ext2_write_inode (struct ext2_fs *fs, ino_t inode, const struct ext2_inode *inodep);
+int ext2_zero_blocks (struct ext2_fs *fs, blk_t block, blk_t num);
+int ext2_zero_inode (struct ext2_fs *fs, ino_t inode);
+
+/* block related */
+void ext2_bgbitmap_cache_deinit (struct ext2_fs *fs);
+int ext2_bgbitmap_cache_flush (struct ext2_fs *fs);
+int ext2_bgbitmap_cache_init (struct ext2_fs *fs);
+int ext2_get_block_state (struct ext2_fs *, blk_t block);
+int ext2_set_block_state (struct ext2_fs *, blk_t block, int state, int updatemetadata);
+
+/* block relocator */
+int ext2_block_relocate (struct ext2_fs *fs, blk_t newsize);
+
+/* buffer */
+void ext2_bcache_deinit (struct ext2_fs *fs);
+void ext2_bcache_dump (struct ext2_fs *fs);
+int ext2_bcache_flush (struct ext2_fs *fs, blk_t block);
+int ext2_bcache_flush_range (struct ext2_fs *fs, blk_t first, blk_t last);
+int ext2_bcache_init (struct ext2_fs *fs);
+int ext2_bcache_sync (struct ext2_fs *fs);
+struct ext2_buffer_head *ext2_bcreate (struct ext2_fs *fs, blk_t block);
+struct ext2_buffer_head *ext2_bread (struct ext2_fs *fs, blk_t block);
+int ext2_brelse (struct ext2_buffer_head *bh, int forget);
+
+/* inode relocator */
+int ext2_inode_relocate (struct ext2_fs *fs, int newgroups);
+
+/* journalling */
+void ext2_journal_deinit (struct ext2_fs *fs);
+int ext2_journal_init (struct ext2_fs *fs);
+
+/* metadata mover */
+int ext2_metadata_push (struct ext2_fs *fs, blk_t newsize);
+
+/* fs creation */
+struct ext2_fs *ext2_mkfs (struct ext2_dev_handle *handle, blk_t numblocks, int log_block_size, blk_t blocks_per_group, int inodes_per_group, int sparse_sb, int reserved_block_percentage, PedTimer* timer);
+
+/* resize */
+int ext2_resize_fs (struct ext2_fs *fs, blk_t newsize, PedTimer* timer);
+
+/* unix I/O */
+struct ext2_dev_handle *ext2_make_dev_handle_from_file(char *dev);
+
+
+
+
+static __inline__ int ext2_is_data_block(struct ext2_fs *fs, blk_t block)
+{
+ blk_t blk;
+ int group;
+
+ PED_ASSERT (block >= EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb), return 0);
+ PED_ASSERT (block < EXT2_SUPER_BLOCKS_COUNT(fs->sb), return 0);
+
+ blk = block - EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb);
+
+ group = blk / EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb);
+ blk %= EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb);
+
+ if (ext2_is_group_sparse(fs, group) && blk <= fs->gdblocks)
+ return 0;
+
+ if (block == EXT2_GROUP_BLOCK_BITMAP(fs->gd[group]) ||
+ block == EXT2_GROUP_INODE_BITMAP(fs->gd[group]))
+ return 0;
+
+ if (block >= EXT2_GROUP_INODE_TABLE(fs->gd[group]) &&
+ block < EXT2_GROUP_INODE_TABLE(fs->gd[group]) + fs->inodeblocks)
+ return 0;
+
+ return 1;
+}
+
+#endif
diff --git a/parted-1.8.7/libparted/fs/ext2/ext2_block_relocator.c b/parted-1.8.7/libparted/fs/ext2/ext2_block_relocator.c
new file mode 100644
index 0000000..1f71d10
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/ext2/ext2_block_relocator.c
@@ -0,0 +1,924 @@
+/*
+ ext2_block_relocator.c -- ext2 block relocator
+ Copyright (C) 1998-2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+#include <config.h>
+
+#ifndef DISCOVER_ONLY
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "ext2.h"
+
+
+/* This struct describes a single block that will be relocated. The
+ * block's original location is "num", and its new location is "dest".
+ * The block is presumebly referred to by some other block in the file
+ * system, which is recorded as "refblock". (Only one reference to
+ * the block is allowed by the block relocator.) "refoffset" describes
+ * the location within the refblock in which the block is referenced.
+ * "isindirect" is 0 for direct, 1 for single-indirect, 2 for
+ * double-indirect, etc.
+ *
+ * The algorithms in the file fill the entries of this struct in this order:
+ * num, refblock/refoffset/isindirectblock, dest.
+ */
+struct ext2_block_entry
+{
+ blk_t num;
+ blk_t dest;
+ blk_t refblock;
+ unsigned refoffset:16;
+ unsigned isindirectblock:16;
+};
+
+/* This struct contains all data structures relevant to the block relocator.
+ * - newallocoffset is the distance between the start of a block group,
+ * and the first data block in the group. This can change when a
+ * filesystem is resized, because the size of the group descriptors is
+ * proportional to the size of the filesystem.
+ *
+ * - allocentries is the size of the "block" array. It is a tuneable
+ * parameter that determines how many blocks can be moved in each
+ * pass.
+ *
+ * - usedentries says how many entries of the "block" array have been
+ * used. That is, how many blocks have been scheduled so far to
+ * be moved.
+ *
+ * - resolvedentries is the number of blocks whose referencing block
+ * has been found and recorded in block[.]->refblock, etc.
+ *
+ * - block is an array that records which blocks need to be moved, and
+ * where they will be moved to, etc. At some point in the algorithm, this
+ * array gets sorted (grep for qsort!) by indirectness.
+ *
+ * - start: each entry in this array corresponds to a level of
+ * indirectness (0-3). Each level has two items: dst and num. "num"
+ * is the number of blocks inside "block" of that level of indirectness.
+ * After doscan() is finished, and the level of indirectness of each
+ * block is known, "block" is sorted (see above). The "dst" pointer
+ * is a pointer inside "block" that indicates the start of the portion
+ * of the array containg blocks of that level of indirectness.
+ */
+struct ext2_block_relocator_state
+{
+ blk_t newallocoffset;
+ blk_t allocentries;
+ blk_t usedentries;
+ blk_t resolvedentries;
+ struct ext2_block_entry *block;
+
+ struct {
+ struct ext2_block_entry *dst;
+ int num;
+ } start[4];
+};
+
+
+
+static int compare_block_entries(const void *x0, const void *x1)
+{
+ const struct ext2_block_entry *b0;
+ const struct ext2_block_entry *b1;
+
+ b0 = (const struct ext2_block_entry *)x0;
+ b1 = (const struct ext2_block_entry *)x1;
+
+ if (b0->num < b1->num)
+ return -1;
+
+ if (b0->num > b1->num)
+ return 1;
+
+ return 0;
+}
+
+static int compare_block_entries_ind(const void *x0, const void *x1)
+{
+ const struct ext2_block_entry *b0;
+ const struct ext2_block_entry *b1;
+
+ b0 = (const struct ext2_block_entry *)x0;
+ b1 = (const struct ext2_block_entry *)x1;
+
+ if (b0->isindirectblock > b1->isindirectblock)
+ return -1;
+
+ if (b0->isindirectblock < b1->isindirectblock)
+ return 1;
+
+ return 0;
+}
+
+static int compare_block_entries_ref(const void *x0, const void *x1)
+{
+ const struct ext2_block_entry *b0;
+ const struct ext2_block_entry *b1;
+
+ b0 = (const struct ext2_block_entry *)x0;
+ b1 = (const struct ext2_block_entry *)x1;
+
+ if (b0->refblock < b1->refblock)
+ return -1;
+
+ if (b0->refblock > b1->refblock)
+ return 1;
+
+ return 0;
+}
+
+struct ext2_block_entry *findit(struct ext2_block_relocator_state *state, blk_t block)
+{
+ int min;
+ int max;
+ struct ext2_block_entry *retv;
+ int t;
+ blk_t tval;
+
+ max = state->usedentries - 1;
+ min = 0;
+ retv = NULL;
+
+ repeat:
+ if (min > max)
+ goto out;
+
+ t = (min + max) >> 1;
+ tval = state->block[t].num;
+
+ if (tval > block)
+ max = t - 1;
+
+ if (tval < block)
+ min = t + 1;
+
+ if (tval != block)
+ goto repeat;
+
+ retv = &state->block[t];
+
+ out:
+ return retv;
+}
+
+/* This function adds records a reference to a block ("blk"), if that
+ * block is scheduled to be moved.
+ */
+static int doblock(struct ext2_fs *fs,
+ struct ext2_block_relocator_state *state,
+ blk_t blk,
+ blk_t refblock,
+ off_t refoffset,
+ int indirect)
+{
+ struct ext2_block_entry *ent;
+
+ if ((ent = findit(state, blk)) == NULL)
+ return 1;
+
+ if (ent->refblock)
+ {
+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+ _("Cross-linked blocks found! Better go run e2fsck "
+ "first!"));
+ return 0;
+ }
+
+ ent->refblock = refblock;
+ ent->refoffset = refoffset;
+ ent->isindirectblock = indirect;
+
+ state->resolvedentries++;
+ state->start[indirect].num++;
+
+ return 1;
+}
+
+static int doindblock(struct ext2_fs *fs,
+ struct ext2_block_relocator_state *state,
+ blk_t blk,
+ blk_t refblock,
+ off_t refoffset)
+{
+ struct ext2_buffer_head *bh;
+ int i;
+ uint32_t *uptr;
+
+ if (!doblock(fs, state, blk, refblock, refoffset, 1))
+ return 0;
+
+ bh = ext2_bread(fs, blk);
+ if (!bh)
+ return 0;
+ uptr = (uint32_t *)bh->data;
+
+ for (i=0;i<(fs->blocksize >> 2);i++)
+ if (uptr[i])
+ if (!doblock(fs, state, PED_LE32_TO_CPU(uptr[i]), blk,
+ i<<2, 0))
+ return 0;
+
+ if (!ext2_brelse(bh, 0))
+ return 0;
+
+ return 1;
+}
+
+static int dodindblock(struct ext2_fs *fs,
+ struct ext2_block_relocator_state *state,
+ blk_t blk,
+ blk_t refblock,
+ off_t refoffset)
+{
+ struct ext2_buffer_head *bh;
+ int i;
+ uint32_t *uptr;
+
+ if (!doblock(fs, state, blk, refblock, refoffset, 2))
+ return 0;
+
+ bh = ext2_bread(fs, blk);
+ if (!bh)
+ return 0;
+ uptr = (uint32_t *)bh->data;
+
+ for (i=0;i<(fs->blocksize >> 2);i++)
+ if (uptr[i])
+ if (!doindblock(fs, state, PED_LE32_TO_CPU(uptr[i]),
+ blk, i<<2))
+ return 0;
+
+ if (!ext2_brelse(bh, 0))
+ return 0;
+
+ return 1;
+}
+
+static int dotindblock(struct ext2_fs *fs,
+ struct ext2_block_relocator_state *state,
+ blk_t blk,
+ blk_t refblock,
+ off_t refoffset)
+{
+ struct ext2_buffer_head *bh;
+ int i;
+ uint32_t *uptr;
+
+ if (!doblock(fs, state, blk, refblock, refoffset, 3))
+ return 0;
+
+ bh = ext2_bread(fs, blk);
+ if (!bh)
+ return 0;
+ uptr = (uint32_t *)bh->data;
+
+ for (i=0;i<(fs->blocksize >> 2);i++)
+ if (uptr[i])
+ if (!dodindblock(fs, state, PED_LE32_TO_CPU(uptr[i]),
+ blk, i<<2))
+ return 0;
+
+ if (!ext2_brelse(bh, 0))
+ return 0;
+
+ return 1;
+}
+
+
+/* This function records any block references from an inode to blocks that are
+ * scheduled to be moved.
+ */
+static int doinode(struct ext2_fs *fs, struct ext2_block_relocator_state *state, int inode)
+{
+ struct ext2_inode buf;
+
+ if (!ext2_read_inode(fs, inode, &buf))
+ return 0;
+
+ if (EXT2_INODE_BLOCKS(buf))
+ {
+ blk_t blk;
+ int i;
+ off_t inodeoffset;
+ blk_t inodeblock;
+
+ inodeoffset = ext2_get_inode_offset(fs, inode, &inodeblock);
+
+ /* do Hurd block, if there is one... */
+ if (EXT2_SUPER_CREATOR_OS(fs->sb) == EXT2_OS_HURD
+ && EXT2_INODE_TRANSLATOR(buf)) {
+ if (!doblock(fs,
+ state,
+ EXT2_INODE_TRANSLATOR(buf),
+ inodeblock,
+ inodeoffset + offsetof(struct ext2_inode,
+ osd1.hurd1.h_i_translator),
+ 0))
+ return 0;
+ }
+
+ for (i=0;i<EXT2_NDIR_BLOCKS;i++)
+ if ((blk = EXT2_INODE_BLOCK(buf, i)) != 0)
+ if (!doblock(fs,
+ state,
+ blk,
+ inodeblock,
+ inodeoffset + offsetof(struct ext2_inode, i_block[i]),
+ 0))
+ return 0;
+
+ if ((blk = EXT2_INODE_BLOCK(buf, EXT2_IND_BLOCK)) != 0)
+ if (!doindblock(fs,
+ state,
+ blk,
+ inodeblock,
+ inodeoffset + offsetof(struct ext2_inode, i_block[EXT2_IND_BLOCK])))
+ return 0;
+
+ if ((blk = EXT2_INODE_BLOCK(buf, EXT2_DIND_BLOCK)) != 0)
+ if (!dodindblock(fs,
+ state,
+ blk,
+ inodeblock,
+ inodeoffset + offsetof(struct ext2_inode, i_block[EXT2_DIND_BLOCK])))
+ return 0;
+
+ if ((blk = EXT2_INODE_BLOCK(buf, EXT2_TIND_BLOCK)) != 0)
+ if (!dotindblock(fs,
+ state,
+ blk,
+ inodeblock,
+ inodeoffset + offsetof(struct ext2_inode, i_block[EXT2_TIND_BLOCK])))
+ return 0;
+
+ }
+
+ return 1;
+}
+
+/* This function scans the entire filesystem, to find all references to blocks
+ * that are scheduled to be moved.
+ */
+static int doscan(struct ext2_fs *fs, struct ext2_block_relocator_state *state)
+{
+ int i;
+
+ state->start[0].num = 0;
+ state->start[1].num = 0;
+ state->start[2].num = 0;
+ state->start[3].num = 0;
+
+ for (i=0;i<fs->numgroups;i++)
+ {
+ struct ext2_buffer_head *bh;
+ unsigned int j;
+ int offset;
+
+ if (fs->opt_verbose)
+ {
+ fprintf(stderr, " scanning group %i.... ", i);
+ fflush(stderr);
+ }
+
+ bh = ext2_bread(fs, EXT2_GROUP_INODE_BITMAP(fs->gd[i]));
+ if (!bh)
+ return 0;
+ offset = i * EXT2_SUPER_INODES_PER_GROUP(fs->sb) + 1;
+
+ for (j=0;j<EXT2_SUPER_INODES_PER_GROUP(fs->sb);j++)
+ if (bh->data[j>>3] & _bitmap[j&7])
+ {
+ if (!doinode(fs, state, offset + j))
+ {
+ ext2_brelse(bh, 0);
+ return 0;
+ }
+
+ if (state->resolvedentries == state->usedentries)
+ break;
+ }
+
+ ext2_brelse(bh, 0);
+
+ if (fs->opt_verbose)
+ {
+ fprintf(stderr, "%i/%i blocks resolved\r",
+ state->resolvedentries,
+ state->usedentries);
+ fflush(stderr);
+ }
+
+ if (state->resolvedentries == state->usedentries)
+ break;
+ }
+
+ if (fs->opt_verbose)
+ fputc('\n', stderr);
+
+ state->start[3].dst = state->block;
+ state->start[2].dst = state->start[3].dst + state->start[3].num;
+ state->start[1].dst = state->start[2].dst + state->start[2].num;
+ state->start[0].dst = state->start[1].dst + state->start[1].num;
+
+ return 1;
+}
+
+
+
+
+
+static int ext2_block_relocator_copy(struct ext2_fs *fs, struct ext2_block_relocator_state *state)
+{
+ unsigned char *buf;
+
+ ped_exception_fetch_all();
+ buf = (unsigned char *) ped_malloc(MAXCONT << fs->logsize);
+ if (buf)
+ {
+ int num;
+ int numleft;
+ struct ext2_block_entry *ptr;
+
+ ped_exception_leave_all();
+
+ numleft = state->usedentries;
+ ptr = state->block;
+ while (numleft)
+ {
+ num = PED_MIN(numleft, MAXCONT);
+ while (num != 1)
+ {
+ if (ptr[0].num + num-1 == ptr[num-1].num &&
+ ptr[0].dest + num-1 == ptr[num-1].dest)
+ break;
+
+ num >>= 1;
+ }
+
+ if (!ext2_bcache_flush_range(fs, ptr[0].num, num))
+ goto error_free_buf;
+ if (!ext2_bcache_flush_range(fs, ptr[0].dest, num))
+ goto error_free_buf;
+
+ if (!ext2_read_blocks(fs, buf, ptr[0].num, num))
+ goto error_free_buf;
+ if (!ext2_write_blocks(fs, buf, ptr[0].dest, num))
+ goto error_free_buf;
+
+ ptr += num;
+ numleft -= num;
+
+ if (fs->opt_verbose)
+ {
+ fprintf(stderr, "copied %i/%i blocks\r",
+ state->usedentries - numleft,
+ state->usedentries);
+ fflush(stderr);
+ }
+ }
+
+ ped_free(buf);
+
+ if (fs->opt_safe)
+ ext2_sync(fs);
+
+ if (fs->opt_verbose)
+ fputc('\n', stderr);
+ }
+ else
+ {
+ blk_t i;
+
+ ped_exception_catch();
+ ped_exception_leave_all();
+
+ for (i=0;i<state->usedentries;i++)
+ {
+ struct ext2_block_entry *block;
+
+ block = &state->block[i];
+ if (!ext2_copy_block(fs, block->num, block->dest))
+ goto error;
+ }
+ }
+
+ return 1;
+
+error_free_buf:
+ ped_free(buf);
+error:
+ return 0;
+}
+
+static int ext2_block_relocator_ref(struct ext2_fs *fs, struct ext2_block_relocator_state *state, struct ext2_block_entry *block)
+{
+ struct ext2_buffer_head *bh;
+ static int numerrors = 0;
+
+ if (!(block->refblock || block->refoffset))
+ {
+ ped_exception_throw (PED_EXCEPTION_BUG, PED_EXCEPTION_CANCEL,
+ _("Block %i has no reference? Weird."),
+ block->num);
+ return 0;
+ }
+
+ bh = ext2_bread(fs, block->refblock);
+ if (!bh)
+ return 0;
+
+ if (fs->opt_debug)
+ {
+ if (PED_LE32_TO_CPU(*((uint32_t *)(bh->data + block->refoffset)))
+ != block->num) {
+ fprintf(stderr,
+ "block %i ref error! (->%i {%i, %i})\n",
+ block->num,
+ block->dest,
+ block->refblock,
+ block->refoffset);
+ ext2_brelse(bh, 0);
+
+ if (numerrors++ < 4)
+ return 1;
+
+ fputs("all is not well!\n", stderr);
+ return 0;
+ }
+ }
+
+ *((uint32_t *)(bh->data + block->refoffset))
+ = PED_LE32_TO_CPU(block->dest);
+ bh->dirty = 1;
+ ext2_brelse(bh, 0);
+
+ ext2_set_block_state(fs, block->dest, 1, 1);
+ ext2_set_block_state(fs, block->num, 0, 1);
+
+ if (block->isindirectblock)
+ {
+ struct ext2_block_entry *dst;
+ int i;
+ int num;
+
+ dst = state->start[block->isindirectblock-1].dst;
+ num = state->start[block->isindirectblock-1].num;
+
+ for (i=0;i<num;i++)
+ if (dst[i].refblock == block->num)
+ dst[i].refblock = block->dest;
+ }
+
+ return 1;
+}
+
+/* This function allocates new locations for blocks that are scheduled to move
+ * (inside state->blocks).
+ *
+ * FIXME: doesn't seem to handle sparse block groups. That is, there might be
+ * some free space that could be exploited in resizing that currently isn't...
+ *
+ * FIXME: should throw an exception if it fails to allocate blocks.
+ */
+static int ext2_block_relocator_grab_blocks(struct ext2_fs *fs, struct ext2_block_relocator_state *state)
+{
+ int i;
+ blk_t ptr;
+
+ ptr = 0;
+
+ for (i=0;i<fs->numgroups;i++)
+ if (EXT2_GROUP_FREE_BLOCKS_COUNT(fs->gd[i]))
+ {
+ struct ext2_buffer_head *bh;
+ unsigned int j;
+ int offset;
+
+ bh = ext2_bread(fs, EXT2_GROUP_BLOCK_BITMAP(fs->gd[i]));
+ offset = i * EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb)
+ + EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb);
+
+ for (j=state->newallocoffset;
+ j<EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb);
+ j++)
+ if (!(bh->data[j>>3] & _bitmap[j&7]))
+ {
+ state->block[ptr++].dest = offset + j;
+
+ if (ptr == state->usedentries)
+ {
+ ext2_brelse(bh, 0);
+ return 1;
+ }
+ }
+
+ ext2_brelse(bh, 0);
+ }
+
+ return 0;
+}
+
+static int ext2_block_relocator_flush(struct ext2_fs *fs, struct ext2_block_relocator_state *state)
+{
+ int i;
+
+ if (!state->usedentries)
+ return 1;
+
+ if (fs->opt_verbose)
+ fputs("ext2_block_relocator_flush\n", stderr);
+
+ if (fs->opt_debug)
+ {
+ again:
+
+ for (i=0; (unsigned int) i < state->usedentries-1; i++)
+ if (state->block[i].num >= state->block[i+1].num)
+ {
+ fputs("ext2_block_relocator_flush: "
+ "blocks not in order!\n", stderr);
+
+ qsort(state->block,
+ state->usedentries,
+ sizeof(struct ext2_block_entry),
+ compare_block_entries);
+ goto again;
+ }
+ }
+
+ if (!doscan(fs, state))
+ return 0;
+
+ if (!ext2_block_relocator_grab_blocks(fs, state))
+ return 0;
+
+ if (!ext2_block_relocator_copy(fs, state))
+ return 0;
+
+ qsort(state->block,
+ state->usedentries,
+ sizeof(struct ext2_block_entry),
+ compare_block_entries_ind);
+
+ for (i=3;i>=0;i--)
+ {
+ struct ext2_block_entry *dst;
+ int j;
+ int num;
+
+ dst = state->start[i].dst;
+ num = state->start[i].num;
+
+ if (!num)
+ continue;
+
+ if (fs->opt_verbose)
+ {
+ /* FIXXXME gross hack */
+ fprintf(stderr, "relocating %s blocks",
+ ((char *[4]){"direct",
+ "singly indirect",
+ "doubly indirect",
+ "triply indirect"})[i]);
+ fflush(stderr);
+ }
+
+ qsort(dst,
+ num,
+ sizeof(struct ext2_block_entry),
+ compare_block_entries_ref);
+
+ for (j=0;j<num;j++)
+ if (!ext2_block_relocator_ref(fs, state, &dst[j]))
+ return 0;
+
+ if (fs->opt_safe) {
+ if (!ext2_sync(fs))
+ return 0;
+ }
+
+ if (fs->opt_verbose)
+ fputc('\n', stderr);
+ }
+
+ state->usedentries = 0;
+ state->resolvedentries = 0;
+
+ return 1;
+}
+
+static int ext2_block_relocator_mark(struct ext2_fs *fs, struct ext2_block_relocator_state *state, blk_t block)
+{
+ int i;
+
+ if (fs->opt_debug)
+ {
+ if (!ext2_get_block_state(fs, block) ||
+ !ext2_is_data_block(fs, block))
+ {
+ ped_exception_throw (PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_IGNORE,
+ _("Block %i shouldn't have been marked "
+ "(%d, %d)!"), block,
+ ext2_get_block_state(fs, block),
+ ext2_is_data_block(fs, block));
+ }
+ }
+
+ if (state->usedentries == state->allocentries - 1)
+ if (!ext2_block_relocator_flush(fs, state))
+ return 0;
+
+ i = state->usedentries;
+ state->block[i].num = block;
+ state->block[i].dest = 0;
+ state->block[i].refblock = 0;
+ state->block[i].refoffset = 0;
+
+ state->usedentries++;
+ return 1;
+}
+
+static int ext2_block_relocate_grow(struct ext2_fs *fs, struct ext2_block_relocator_state *state, blk_t newsize)
+{
+ blk_t newgdblocks;
+ blk_t newitoffset;
+ int i;
+
+ newgdblocks = ped_div_round_up (newsize
+ - EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb),
+ EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb));
+ newgdblocks = ped_div_round_up (newgdblocks
+ * sizeof(struct ext2_group_desc),
+ fs->blocksize);
+ if (newgdblocks == fs->gdblocks)
+ return 1;
+
+ newitoffset = newgdblocks + 3;
+ state->newallocoffset = newitoffset + fs->inodeblocks;
+
+ for (i=0;i<fs->numgroups;i++)
+ {
+ struct ext2_buffer_head *bh;
+ blk_t diff;
+ blk_t j;
+ blk_t start;
+ int sparse;
+
+ bh = ext2_bread(fs, EXT2_GROUP_BLOCK_BITMAP(fs->gd[i]));
+ start = (i * EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb))
+ + EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb);
+ sparse = ext2_is_group_sparse(fs, i);
+
+ if (EXT2_GROUP_INODE_TABLE(fs->gd[i]) < start + newitoffset
+ || (sparse && ((EXT2_GROUP_BLOCK_BITMAP(fs->gd[i])
+ < start + newitoffset - 2)
+ || (EXT2_GROUP_INODE_BITMAP(fs->gd[i])
+ < start + newitoffset - 1))))
+ {
+ diff = newitoffset - (EXT2_GROUP_INODE_TABLE(fs->gd[i])
+ - start);
+
+ for (j=0;j<diff;j++)
+ {
+ blk_t k;
+
+ k = EXT2_GROUP_INODE_TABLE(fs->gd[i])
+ + fs->inodeblocks + j;
+ if (bh->data[k>>3] & _bitmap[k&7])
+ if (!ext2_block_relocator_mark(fs,
+ state, start + k))
+ {
+ ext2_brelse(bh, 0);
+ return 0;
+ }
+ }
+ }
+
+ ext2_brelse(bh, 0);
+ }
+
+ if (!ext2_block_relocator_flush(fs, state))
+ return 0;
+
+ return 1;
+}
+
+static int ext2_block_relocate_shrink(struct ext2_fs *fs, struct ext2_block_relocator_state *state, blk_t newsize)
+{
+ int diff;
+ int i;
+
+ diff = ped_div_round_up (newsize - EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb),
+ EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb));
+ diff = ped_div_round_up (diff * sizeof(struct ext2_group_desc),
+ fs->blocksize);
+ diff = fs->gdblocks - diff;
+
+ state->newallocoffset = fs->itoffset + fs->inodeblocks;
+
+ for (i=0;i<fs->numgroups;i++)
+ {
+ struct ext2_buffer_head *bh;
+ blk_t groupsize;
+ blk_t j;
+ blk_t offset;
+ int sparse;
+ blk_t start;
+ int type;
+
+ offset = i * EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb)
+ + EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb);
+ sparse = ext2_is_group_sparse(fs, i);
+
+ if (newsize >= offset + EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb))
+ continue; /* group will survive */
+
+ bh = ext2_bread(fs, EXT2_GROUP_BLOCK_BITMAP(fs->gd[i]));
+
+ if (newsize <= offset)
+ type = 2; /* group is fully chopped off */
+ else
+ type = 1; /* group is partly chopped off */
+
+ if (!sparse && type == 2)
+ {
+ for (j=EXT2_GROUP_INODE_BITMAP(fs->gd[i])+1;
+ j<EXT2_GROUP_INODE_TABLE(fs->gd[i]);
+ j++)
+ {
+ blk_t k;
+
+ k = j - offset;
+ if (bh->data[k>>3] & _bitmap[k&7])
+ if (!ext2_block_relocator_mark(fs, state, j))
+ {
+ ext2_brelse(bh, 0);
+ return 0;
+ }
+ }
+ }
+
+ start = newsize;
+ if (type == 2)
+ start = EXT2_GROUP_INODE_TABLE(fs->gd[i])
+ + fs->inodeblocks;
+
+ start -= offset;
+
+ groupsize = EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb);
+ if (offset + groupsize > EXT2_SUPER_BLOCKS_COUNT(fs->sb))
+ groupsize = EXT2_SUPER_BLOCKS_COUNT(fs->sb) - offset;
+
+ for (j=start;j<groupsize;j++)
+ if (bh->data[j>>3] & _bitmap[j&7])
+ if (!ext2_block_relocator_mark(fs, state,
+ offset + j))
+ {
+ ext2_brelse(bh, 0);
+ return 0;
+ }
+
+ ext2_brelse(bh, 0);
+ }
+
+ return ext2_block_relocator_flush(fs, state);
+}
+
+int ext2_block_relocate(struct ext2_fs *fs, blk_t newsize)
+{
+ struct ext2_block_relocator_state state;
+
+ if (fs->opt_verbose)
+ fputs("relocating blocks....\n", stderr);
+
+ state.newallocoffset = 0;
+ state.allocentries = (ext2_relocator_pool_size << 10) /
+ sizeof(struct ext2_block_entry);
+ state.usedentries = 0;
+ state.resolvedentries = 0;
+ state.block = (struct ext2_block_entry *)fs->relocator_pool;
+
+ if (newsize < EXT2_SUPER_BLOCKS_COUNT(fs->sb))
+ return ext2_block_relocate_shrink(fs, &state, newsize);
+
+ return ext2_block_relocate_grow(fs, &state, newsize);
+}
+
+#endif /* !DISCOVER_ONLY */
diff --git a/parted-1.8.7/libparted/fs/ext2/ext2_buffer.c b/parted-1.8.7/libparted/fs/ext2/ext2_buffer.c
new file mode 100644
index 0000000..85da20a
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/ext2/ext2_buffer.c
@@ -0,0 +1,447 @@
+/*
+ ext2_buffer.c -- ext2 buffer cache
+ Copyright (C) 1998-2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+#include <config.h>
+
+#ifndef DISCOVER_ONLY
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include "ext2.h"
+
+/* pseudo-header */
+
+static __inline__ int ext2_block_hash(blk_t block)
+{
+ unsigned long x;
+
+ x = block ^ (block >> 8) ^ (block >> 16) ^ (block >> 24);
+ return x & ((1 << ext2_hash_bits) - 1);
+}
+
+static struct ext2_buffer_head *ext2_bh_alloc (struct ext2_buffer_cache *, blk_t);
+static void ext2_bh_dealloc (struct ext2_buffer_head *);
+static struct ext2_buffer_head *ext2_bh_find (struct ext2_buffer_cache *, blk_t);
+static int ext2_bh_do_read (struct ext2_buffer_head *);
+static int ext2_bh_do_write(struct ext2_buffer_head *);
+static void ext2_bh_hash (struct ext2_buffer_head *);
+static void ext2_bh_unhash (struct ext2_buffer_head *);
+
+
+
+static int try_to_flush(struct ext2_buffer_cache *bc)
+{
+ int i;
+
+ for (i=0;i<bc->size;i++)
+ {
+ struct ext2_buffer_head *bh;
+
+ bh = &bc->heads[i];
+
+ if (bh->alloc && !bh->usecount && !bh->dirty)
+ {
+ ext2_bh_dealloc(bh);
+ return 1;
+ }
+ }
+
+ for (i=0;i<bc->size;i++)
+ {
+ struct ext2_buffer_head *bh;
+
+ bh = &bc->heads[i];
+
+ if (bh->alloc && !bh->usecount && bh->dirty)
+ {
+ ext2_bh_do_write(bh);
+ ext2_bh_dealloc(bh);
+ return 1;
+ }
+ }
+
+ if (ped_exception_throw (PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_IGNORE_CANCEL,
+ _("Couldn't flush buffer cache!"))
+ != PED_EXCEPTION_IGNORE)
+ return 0;
+ return 1;
+}
+
+
+
+
+
+static struct ext2_buffer_head *ext2_bh_alloc(struct ext2_buffer_cache *bc, blk_t block)
+{
+ struct ext2_buffer_head *bh;
+ int i;
+
+ bh = NULL;
+
+ tryagain:
+ for (i=0;i<bc->size;i++)
+ {
+ bh = &bc->heads[i];
+
+ if (!bh->alloc)
+ break;
+ }
+
+ if (i == bc->size)
+ {
+ try_to_flush(bc);
+ goto tryagain;
+ }
+
+ bh = &bc->heads[i];
+
+ bh->next = NULL;
+ bh->prev = NULL;
+ bh->block = block;
+ bh->usecount = 0;
+ bh->dirty = 0;
+ bh->alloc = 1;
+ bc->numalloc++;
+
+ ext2_bh_hash(bh);
+
+ return bh;
+}
+
+static void ext2_bh_dealloc(struct ext2_buffer_head *bh)
+{
+ if (bh->dirty)
+ ped_exception_throw (PED_EXCEPTION_BUG, PED_EXCEPTION_IGNORE,
+ "deallocing() a dirty buffer! %i\n", bh->block);
+
+ ext2_bh_unhash(bh);
+ bh->alloc = 0;
+ bh->bc->numalloc--;
+}
+
+static struct ext2_buffer_head *ext2_bh_find(struct ext2_buffer_cache *bc, blk_t block)
+{
+ struct ext2_buffer_head *a;
+ struct ext2_buffer_head *b;
+ int hash;
+
+ hash = ext2_block_hash(block);
+ a = bc->hash[hash];
+
+ if (a != NULL)
+ {
+ b = a;
+ do
+ {
+ if (a->block == block)
+ return a;
+
+ a = a->next;
+ } while (a != b);
+ }
+
+ return NULL;
+}
+
+static int ext2_bh_do_read(struct ext2_buffer_head *bh)
+{
+ return ext2_read_blocks(bh->bc->fs, bh->data, bh->block, 1);
+}
+
+static int ext2_bh_do_write(struct ext2_buffer_head *bh)
+{
+ if (!bh->alloc) {
+ ped_exception_throw (PED_EXCEPTION_BUG, PED_EXCEPTION_CANCEL,
+ "Attempt to write unallocated buffer.");
+ return 0;
+ }
+
+ ext2_write_blocks(bh->bc->fs, bh->data, bh->block, 1);
+ bh->dirty = 0;
+ return 1;
+}
+
+static void ext2_bh_hash(struct ext2_buffer_head *bh)
+{
+ int hash;
+
+ hash = ext2_block_hash(bh->block);
+ if (bh->bc->hash[hash] != NULL)
+ {
+ bh->next = bh->bc->hash[hash];
+ bh->prev = bh->next->prev;
+ bh->next->prev = bh;
+ bh->prev->next = bh;
+ return;
+ }
+
+ bh->bc->hash[hash] = bh;
+ bh->next = bh->prev = bh;
+}
+
+static void ext2_bh_unhash(struct ext2_buffer_head *bh)
+{
+ int hash;
+
+ hash = ext2_block_hash(bh->block);
+
+ bh->prev->next = bh->next;
+ bh->next->prev = bh->prev;
+
+ if (bh->bc->hash[hash] == bh)
+ {
+ if (bh->next != bh)
+ bh->bc->hash[hash] = bh->next;
+ else
+ bh->bc->hash[hash] = NULL;
+ }
+
+ bh->next = NULL;
+ bh->prev = NULL;
+}
+
+
+
+
+
+
+
+static int breadimmhits = 0;
+static int breadindhits = 0;
+static int breadmisses = 0;
+
+void ext2_bcache_deinit(struct ext2_fs *fs)
+{
+ ext2_bcache_sync(fs);
+ ped_free(fs->bc->buffermem);
+ ped_free(fs->bc->hash);
+ ped_free(fs->bc->heads);
+ ped_free(fs->bc);
+
+ if (fs->opt_verbose)
+ fprintf(stderr,
+ "direct hits: %i, indirect hits: %i, misses: %i\n",
+ breadimmhits,
+ breadindhits,
+ breadmisses);
+}
+
+void ext2_bcache_dump(struct ext2_fs *fs)
+{
+ int i;
+
+ fputs ("buffer cache dump:\n", stderr);
+
+ for (i=0;i<(1<<ext2_hash_bits);i++)
+ if (fs->bc->hash[i] != NULL)
+ {
+ struct ext2_buffer_head *a;
+ struct ext2_buffer_head *b;
+
+ fprintf(stderr, "%i: ", i);
+
+ a = b = fs->bc->hash[i];
+ do
+ {
+ fprintf(stderr, "%i ", a->block);
+ a = a->next;
+ } while (a != b);
+
+ fputc ('\n', stderr);
+ }
+}
+
+int ext2_bcache_flush(struct ext2_fs *fs, blk_t block)
+{
+ struct ext2_buffer_head *bh;
+
+ if ((bh = ext2_bh_find(fs->bc, block)) == NULL)
+ return 1;
+
+ if (bh->usecount) {
+ ped_exception_throw (PED_EXCEPTION_BUG, PED_EXCEPTION_CANCEL,
+ "Attempt to flush a buffer that's in use! [%i,%i]",
+ bh->block, bh->usecount);
+ return 0;
+ }
+
+ if (bh->dirty) {
+ if (!ext2_bh_do_write(bh))
+ return 0;
+ }
+
+ ext2_bh_dealloc(bh);
+ return 1;
+}
+
+int ext2_bcache_flush_range(struct ext2_fs *fs, blk_t block, blk_t num)
+{
+ blk_t end = block + num;
+
+ for (; block < end; block++) {
+ if (!ext2_bcache_flush(fs, block))
+ return 0;
+ }
+ return 1;
+}
+
+int ext2_bcache_init(struct ext2_fs *fs)
+{
+ struct ext2_buffer_cache *bc;
+ int i;
+ int size;
+
+ size = ext2_buffer_cache_pool_size >> (fs->logsize - 10);
+
+ if ((bc = (struct ext2_buffer_cache *) ped_malloc(sizeof(struct ext2_buffer_cache))) == NULL)
+ return 0;
+
+ if ((bc->heads = (struct ext2_buffer_head *) ped_malloc(size * sizeof(struct ext2_buffer_head))) == NULL)
+ return 0;
+
+ if ((bc->hash = (struct ext2_buffer_head **) ped_malloc(sizeof(struct ext2_buffer_head *) << ext2_hash_bits)) == NULL)
+ {
+ ped_free(bc->heads);
+ ped_free(bc);
+ return 0;
+ }
+
+ if ((bc->buffermem = (unsigned char *) ped_malloc(ext2_buffer_cache_pool_size << 10)) == NULL)
+ {
+ ped_free(bc->hash);
+ ped_free(bc->heads);
+ ped_free(bc);
+ return 0;
+ }
+
+ bc->cache = &bc->heads[0];
+ bc->fs = fs;
+ bc->size = size;
+ bc->numalloc = 0;
+
+ for (i=0;i<size;i++)
+ {
+ bc->heads[i].data = bc->buffermem + (i << fs->logsize);
+ bc->heads[i].bc = bc;
+ bc->heads[i].alloc = 0;
+ }
+
+ for (i=0;i<(1<<ext2_hash_bits);i++)
+ bc->hash[i] = NULL;
+
+ fs->bc = bc;
+
+ return 1;
+}
+
+int ext2_bcache_sync(struct ext2_fs *fs)
+{
+ int i;
+
+ for (i=0;i<fs->bc->size;i++)
+ {
+ struct ext2_buffer_head *bh;
+
+ bh = &fs->bc->heads[i];
+
+ if (bh->alloc && bh->dirty) {
+ if (!ext2_bh_do_write(bh))
+ return 0;
+ }
+ }
+ return 1;
+}
+
+
+
+
+
+
+
+
+struct ext2_buffer_head *ext2_bcreate(struct ext2_fs *fs, blk_t block)
+{
+ struct ext2_buffer_head *bh;
+
+ if ((bh = ext2_bh_find(fs->bc, block)) != NULL)
+ {
+ bh->usecount++;
+ }
+ else
+ {
+ bh = ext2_bh_alloc(fs->bc, block);
+ bh->usecount = 1;
+ }
+
+ memset(bh->data, 0, fs->blocksize);
+ bh->dirty = 1;
+
+ return bh;
+}
+
+struct ext2_buffer_head *ext2_bread(struct ext2_fs *fs, blk_t block)
+{
+ struct ext2_buffer_head *bh;
+
+ if ((bh = fs->bc->cache)->block == block)
+ {
+ breadimmhits++;
+ bh->usecount++;
+ return bh;
+ }
+
+ if ((bh = ext2_bh_find(fs->bc, block)) != NULL)
+ {
+ fs->bc->cache = bh;
+ breadindhits++;
+ bh->usecount++;
+ return bh;
+ }
+
+ breadmisses++;
+
+ bh = ext2_bh_alloc(fs->bc, block);
+ fs->bc->cache = bh;
+ bh->usecount = 1;
+ if (!ext2_bh_do_read(bh)) {
+ ext2_bh_dealloc(bh);
+ return NULL;
+ }
+
+ return bh;
+}
+
+int ext2_brelse(struct ext2_buffer_head *bh, int forget)
+{
+ if (bh->usecount-- == 1 && forget)
+ {
+ if (bh->dirty) {
+ if (!ext2_bh_do_write(bh))
+ return 0;
+ }
+
+ ext2_bh_dealloc(bh);
+ }
+ return 1;
+}
+
+#endif /* !DISCOVER_ONLY */
+
diff --git a/parted-1.8.7/libparted/fs/ext2/ext2_fs.h b/parted-1.8.7/libparted/fs/ext2/ext2_fs.h
new file mode 100644
index 0000000..713cc21
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/ext2/ext2_fs.h
@@ -0,0 +1,323 @@
+/*
+ * 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 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 EXT2_FEATURE_INCOMPAT_FILETYPE 0x0002
+#define EXT3_FEATURE_INCOMPAT_RECOVER 0x0004
+
+/*
+ * 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/parted-1.8.7/libparted/fs/ext2/ext2_inode_relocator.c b/parted-1.8.7/libparted/fs/ext2/ext2_inode_relocator.c
new file mode 100644
index 0000000..d8e7e03
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/ext2/ext2_inode_relocator.c
@@ -0,0 +1,600 @@
+/*
+ ext2_inode_relocator.c -- ext2 inode relocator
+ Copyright (C) 1998-2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+#include <config.h>
+
+#ifndef DISCOVER_ONLY
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/stat.h> /* for S_ISDIR */
+#include "ext2.h"
+
+
+
+
+
+
+struct ext2_reference
+{
+ blk_t block;
+ off_t offset;
+};
+
+struct ext2_inode_entry
+{
+ ino_t num;
+ ino_t dest;
+ unsigned numreferences:16;
+ unsigned isdir:1;
+ struct ext2_reference *ref;
+};
+
+struct ext2_inode_relocator_state
+{
+ int usedentries;
+ int resolvedentries;
+ struct ext2_inode_entry *inode;
+ struct ext2_reference *last;
+};
+
+
+
+
+
+static struct ext2_inode_entry *findit(struct ext2_inode_relocator_state *state, ino_t inode)
+{
+ int min;
+ int max;
+ struct ext2_inode_entry *retv;
+ int t;
+ blk_t tval;
+
+ max = state->usedentries - 1;
+ min = 0;
+ retv = NULL;
+
+ repeat:
+ if (min > max)
+ goto out;
+
+ t = (min + max) >> 1;
+ tval = state->inode[t].num;
+
+ t--;
+ if (tval > inode)
+ max = t;
+
+ t += 2;
+ if (tval < inode)
+ min = t;
+
+ t--;
+
+ if (tval != inode)
+ goto repeat;
+
+ retv = &state->inode[t];
+
+ out:
+ return retv;
+}
+
+static int addref(struct ext2_fs *fs, struct ext2_inode_relocator_state *state, ino_t inode, blk_t block, off_t offset)
+{
+ struct ext2_inode_entry *ent;
+ int i;
+
+ if ((ent = findit(state, inode)) == NULL)
+ return 1;
+
+ for (i=0;i<ent->numreferences;i++)
+ if (!ent->ref[i].block)
+ break;
+
+ if (i == ent->numreferences)
+ {
+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+ _("Found an inode with a incorrect link count. "
+ "Better go run e2fsck first!"));
+ return 0;
+ }
+
+ if (i == ent->numreferences - 1)
+ state->resolvedentries++;
+
+ ent->ref[i].block = block;
+ ent->ref[i].offset = offset;
+
+ return 1;
+}
+
+static int doblock(struct ext2_fs *fs, struct ext2_inode_relocator_state *state, blk_t blockno)
+{
+ struct ext2_buffer_head *bh;
+ off_t offset;
+
+ bh = ext2_bread(fs, blockno);
+ if (!bh)
+ return 0;
+
+ offset = 0;
+ do
+ {
+ struct ext2_dir_entry_2 *ptr;
+
+ ptr = (struct ext2_dir_entry_2 *)(bh->data + offset);
+
+ if (ptr->name_len)
+ if (!addref(fs, state, EXT2_DIRENT_INODE(*ptr), blockno,
+ offset))
+ return 0;
+
+ PED_ASSERT (ptr->rec_len > 0, return 0);
+ offset += EXT2_DIRENT_REC_LEN (*ptr);
+ } while (offset < fs->blocksize);
+
+ ext2_brelse(bh, 0);
+ return 1;
+}
+
+static int doindblock(struct ext2_fs *fs, struct ext2_inode_relocator_state *state, blk_t blockno)
+{
+ struct ext2_buffer_head *bh;
+ blk_t blk;
+ int i;
+
+ bh = ext2_bread(fs, blockno);
+
+ for (i=0;i<(fs->blocksize>>2);i++)
+ if ((blk = PED_LE32_TO_CPU(((uint32_t *)bh->data)[i])) != 0)
+ if (!doblock(fs, state, blk))
+ return 0;
+
+ ext2_brelse(bh, 0);
+ return 1;
+}
+
+static int dodindblock(struct ext2_fs *fs, struct ext2_inode_relocator_state *state, blk_t blockno)
+{
+ struct ext2_buffer_head *bh;
+ blk_t blk;
+ int i;
+
+ bh = ext2_bread(fs, blockno);
+ if (!bh)
+ return 0;
+
+ for (i=0;i<(fs->blocksize>>2);i++)
+ if ((blk = PED_LE32_TO_CPU(((uint32_t *)bh->data)[i])) != 0)
+ if (!doindblock(fs, state, blk))
+ return 0;
+
+ ext2_brelse(bh, 0);
+ return 1;
+}
+
+static int dotindblock(struct ext2_fs *fs, struct ext2_inode_relocator_state *state, blk_t blockno)
+{
+ struct ext2_buffer_head *bh;
+ blk_t blk;
+ int i;
+
+ bh = ext2_bread(fs, blockno);
+ if (!bh)
+ return 0;
+
+ for (i=0;i<(fs->blocksize>>2);i++)
+ if ((blk = PED_LE32_TO_CPU(((uint32_t *)bh->data)[i])) != 0)
+ if (!dodindblock(fs, state, blk))
+ return 0;
+
+ ext2_brelse(bh, 0);
+ return 1;
+}
+
+static int doinode(struct ext2_fs *fs, struct ext2_inode_relocator_state *state, ino_t inode)
+{
+ struct ext2_inode buf;
+ int i;
+
+ if (!ext2_read_inode(fs, inode, &buf))
+ return 0;
+ if (S_ISDIR(EXT2_INODE_MODE(buf)))
+ {
+ blk_t blk;
+
+ for (i=0;i<EXT2_NDIR_BLOCKS;i++)
+ if ((blk = EXT2_INODE_BLOCK(buf, i)) != 0)
+ if (!doblock(fs, state, blk))
+ return 0;
+
+ if ((blk = EXT2_INODE_BLOCK(buf, EXT2_IND_BLOCK)) != 0)
+ if (!doindblock(fs, state, blk))
+ return 0;
+
+ if ((blk = EXT2_INODE_BLOCK(buf, EXT2_DIND_BLOCK)) != 0)
+ if (!dodindblock(fs, state, blk))
+ return 0;
+
+ if ((blk = EXT2_INODE_BLOCK(buf, EXT2_TIND_BLOCK)) != 0)
+ if (!dotindblock(fs, state, blk))
+ return 0;
+ }
+
+ return 1;
+}
+
+static int doscangroup(struct ext2_fs *fs, struct ext2_inode_relocator_state *state, int group)
+{
+ struct ext2_buffer_head *bh;
+ unsigned int i;
+ int offset;
+
+ if (fs->opt_verbose)
+ fprintf(stderr, " scanning group %i.... ", group);
+
+ bh = ext2_bread(fs, EXT2_GROUP_INODE_BITMAP(fs->gd[group]));
+ offset = group * EXT2_SUPER_INODES_PER_GROUP(fs->sb) + 1;
+
+ for (i=0;i<EXT2_SUPER_INODES_PER_GROUP(fs->sb);i++)
+ if (bh->data[i>>3] & _bitmap[i&7])
+ {
+ if (!doinode(fs, state, offset + i))
+ {
+ ext2_brelse(bh, 0);
+ return 0;
+ }
+
+ if (state->resolvedentries == state->usedentries)
+ break;
+ }
+
+ ext2_brelse(bh, 0);
+
+ if (fs->opt_verbose)
+ fprintf(stderr,
+ "%i/%i inodes resolved\r",
+ state->resolvedentries,
+ state->usedentries);
+
+ return 1;
+}
+
+/* basically: this builds a dependency graph of the inodes in the entire file
+ * system. inodes are only referenced by the directory tree (or the magic
+ * ones implicitly, like the bad blocks inode), so we just walk the directory
+ * tree adding references.
+ */
+static int doscan(struct ext2_fs *fs, struct ext2_inode_relocator_state *state)
+{
+ int i;
+
+ /* while the journal will usually be inode 8 (and therefore will never
+ * need to be moved), we don't have any guarantee (grrr). So, we
+ * need to be prepared to move it... (and update the reference in the
+ * super block)
+ */
+ if (fs->has_internal_journal)
+ addref(fs, state, EXT2_SUPER_JOURNAL_INUM(fs->sb),
+ 1, offsetof(struct ext2_super_block, s_journal_inum));
+
+ if (!doscangroup(fs, state, 0))
+ return 0;
+
+ if (state->resolvedentries != state->usedentries)
+ for (i=fs->numgroups-1;i>0;i--)
+ {
+ if (!doscangroup(fs, state, i))
+ return 0;
+
+ if (state->resolvedentries == state->usedentries)
+ break;
+ }
+
+ if (fs->opt_verbose)
+ fputc ('\n', stderr);
+
+ return 1;
+}
+
+
+
+
+
+
+
+static int ext2_inode_relocator_copy(struct ext2_fs *fs, struct ext2_inode_relocator_state *state)
+{
+ int i;
+
+ for (i=0;i<state->usedentries;i++)
+ {
+ struct ext2_inode buf;
+ struct ext2_inode_entry *entry;
+
+ entry = &state->inode[i];
+
+ if (fs->opt_debug)
+ if (!ext2_get_inode_state(fs, entry->num) ||
+ ext2_get_inode_state(fs, entry->dest))
+ fputs ("inodebitmaperror\n", stderr);
+
+ if (!ext2_read_inode(fs, entry->num, &buf))
+ return 0;
+ if (!ext2_write_inode(fs, entry->dest, &buf))
+ return 0;
+
+ entry->isdir = S_ISDIR(EXT2_INODE_MODE(buf))?1:0;
+ }
+
+ if (fs->opt_safe)
+ if (!ext2_sync(fs))
+ return 0;
+ return 1;
+}
+
+static int ext2_inode_relocator_finish(struct ext2_fs *fs, struct ext2_inode_relocator_state *state)
+{
+ int i;
+
+ for (i=0;i<state->usedentries;i++)
+ {
+ struct ext2_inode_entry *entry;
+
+ entry = &state->inode[i];
+ ext2_set_inode_state(fs, entry->dest, 1, 1);
+ ext2_set_inode_state(fs, entry->num, 0, 1);
+ ext2_zero_inode(fs, entry->num);
+ }
+
+ if (fs->opt_safe)
+ if (!ext2_sync(fs))
+ return 0;
+ return 1;
+}
+
+static int ext2_inode_relocator_ref(struct ext2_fs *fs, struct ext2_inode_relocator_state *state)
+{
+ int i;
+ static int numerrors = 0;
+
+ for (i=0;i<state->usedentries;i++)
+ {
+ struct ext2_inode_entry *entry;
+ int j;
+ uint32_t t;
+
+ entry = &state->inode[i];
+ t = entry->dest;
+
+ for (j=0;j<entry->numreferences;j++)
+ {
+ struct ext2_buffer_head *bh;
+
+ bh = ext2_bread(fs, entry->ref[j].block);
+ if (!bh)
+ return 0;
+
+ if (fs->opt_debug)
+ {
+ if (PED_LE32_TO_CPU((*((uint32_t *)(bh->data + entry->ref[j].offset)))) != entry->num)
+ {
+ fprintf(stderr,
+ "inode %li ref error! (->%li, [%i]={%i, %i})\n",
+ (long) entry->num,
+ (long) entry->dest,
+ j,
+ entry->ref[j].block,
+ (int) entry->ref[j].offset);
+ ext2_brelse(bh, 0);
+
+ if (numerrors++ < 4)
+ continue;
+
+ fputs ("all is not well!\n", stderr);
+ return 0;
+ }
+ }
+
+ *((uint32_t *)(bh->data + entry->ref[j].offset))
+ = PED_CPU_TO_LE32(t);
+ bh->dirty = 1;
+
+ ext2_brelse(bh, 0);
+ }
+
+ if (entry->isdir)
+ {
+ int oldgroup;
+ int newgroup;
+
+ oldgroup = (entry->num - 1)
+ / EXT2_SUPER_INODES_PER_GROUP(fs->sb);
+ newgroup = (entry->dest - 1)
+ / EXT2_SUPER_INODES_PER_GROUP(fs->sb);
+
+ fs->gd[oldgroup].bg_used_dirs_count = PED_CPU_TO_LE16 (
+ EXT2_GROUP_USED_DIRS_COUNT(fs->gd[oldgroup])
+ - 1);
+ fs->gd[newgroup].bg_used_dirs_count = PED_CPU_TO_LE16 (
+ EXT2_GROUP_USED_DIRS_COUNT(fs->gd[newgroup])
+ + 1);
+
+ fs->metadirty = EXT2_META_GD;
+ }
+ }
+
+ if (fs->opt_safe)
+ if (!ext2_sync(fs))
+ return 0;
+
+ return 1;
+}
+
+static int ext2_inode_relocator_grab_inodes(struct ext2_fs *fs, struct ext2_inode_relocator_state *state)
+{
+ int i;
+ int ptr;
+
+ ptr = 0;
+
+ for (i=0;i<fs->numgroups;i++)
+ if (EXT2_GROUP_FREE_INODES_COUNT(fs->gd[i]))
+ {
+ struct ext2_buffer_head *bh;
+ unsigned int j;
+ int offset;
+
+ bh = ext2_bread(fs, EXT2_GROUP_INODE_BITMAP(fs->gd[i]));
+ if (!bh)
+ return 0;
+ offset = i * EXT2_SUPER_INODES_PER_GROUP(fs->sb) + 1;
+
+ j = i ? 0 : 13;
+ for (;j<EXT2_SUPER_INODES_PER_GROUP(fs->sb);j++)
+ if (!(bh->data[j>>3] & _bitmap[j&7]))
+ {
+ state->inode[ptr++].dest = offset + j;
+
+ if (ptr == state->usedentries)
+ {
+ ext2_brelse(bh, 0);
+ return 1;
+ }
+ }
+
+ ext2_brelse(bh, 0);
+ }
+
+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+ _("Not enough free inodes!"));
+ return 0;
+}
+
+static int ext2_inode_relocator_flush(struct ext2_fs *fs, struct ext2_inode_relocator_state *state)
+{
+ if (!state->usedentries)
+ return 1;
+
+ if (!doscan(fs, state))
+ return 0;
+
+ if (!ext2_inode_relocator_grab_inodes(fs, state))
+ return 0;
+
+ if (!ext2_inode_relocator_copy(fs, state))
+ return 0;
+
+ if (!ext2_inode_relocator_ref(fs, state))
+ return 0;
+
+ if (!ext2_inode_relocator_finish(fs, state))
+ return 0;
+
+ state->usedentries = 0;
+ state->resolvedentries = 0;
+ state->last = (struct ext2_reference *)fs->relocator_pool_end;
+
+ if (fs->opt_safe)
+ if (!ext2_sync(fs))
+ return 0;
+
+ return 1;
+}
+
+static int ext2_inode_relocator_mark(struct ext2_fs *fs, struct ext2_inode_relocator_state *state, ino_t inode)
+{
+ struct ext2_inode buf;
+ struct ext2_inode_entry *ent;
+ int i;
+
+ if (!ext2_read_inode(fs, inode, &buf))
+ return 0;
+
+ {
+ register void *adv;
+ register void *rec;
+
+ adv = state->inode + state->usedentries + 1;
+ rec = state->last - EXT2_INODE_LINKS_COUNT(buf);
+
+ if (adv >= rec)
+ ext2_inode_relocator_flush(fs, state);
+ }
+
+ state->last -= EXT2_INODE_LINKS_COUNT(buf);
+
+ ent = &state->inode[state->usedentries];
+ ent->num = inode;
+ ent->dest = 0;
+ ent->numreferences = EXT2_INODE_LINKS_COUNT(buf);
+ ent->ref = state->last;
+
+ for (i=0;i<ent->numreferences;i++)
+ {
+ ent->ref[i].block = 0;
+ ent->ref[i].offset = 0;
+ }
+
+ state->usedentries++;
+
+ return 1;
+}
+
+
+int ext2_inode_relocate(struct ext2_fs *fs, int newgroups)
+{
+ int i;
+ struct ext2_inode_relocator_state state;
+
+ if (fs->opt_verbose)
+ fputs ("ext2_inode_relocate\n", stderr);
+
+ state.usedentries = 0;
+ state.resolvedentries = 0;
+ state.inode = (struct ext2_inode_entry *)fs->relocator_pool;
+ state.last = (struct ext2_reference *)fs->relocator_pool_end;
+
+ for (i=newgroups;i<fs->numgroups;i++)
+ {
+ struct ext2_buffer_head *bh;
+ unsigned int j;
+ int offset;
+
+ bh = ext2_bread(fs, EXT2_GROUP_INODE_BITMAP(fs->gd[i]));
+ if (!bh)
+ return 0;
+ offset = i * EXT2_SUPER_INODES_PER_GROUP(fs->sb) + 1;
+
+ for (j=0;j<EXT2_SUPER_INODES_PER_GROUP(fs->sb);j++)
+ if (bh->data[j>>3] & _bitmap[j&7])
+ ext2_inode_relocator_mark(fs, &state,
+ offset + j);
+
+ ext2_brelse(bh, 0);
+ }
+
+ if (!ext2_inode_relocator_flush(fs, &state))
+ return 0;
+
+ return 1;
+}
+#endif /* !DISCOVER_ONLY */
+
diff --git a/parted-1.8.7/libparted/fs/ext2/ext2_meta.c b/parted-1.8.7/libparted/fs/ext2/ext2_meta.c
new file mode 100644
index 0000000..d48097c
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/ext2/ext2_meta.c
@@ -0,0 +1,146 @@
+/*
+ ext2_meta.c -- ext2 metadata mover
+ Copyright (C) 1998-2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+#include <config.h>
+
+#ifndef DISCOVER_ONLY
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "ext2.h"
+
+int ext2_metadata_push(struct ext2_fs *fs, blk_t newsize)
+{
+ int i;
+ int newgdblocks;
+ blk_t newitoffset;
+
+ newgdblocks = ped_div_round_up (newsize
+ - EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb),
+ EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb));
+ newgdblocks = ped_div_round_up (newgdblocks
+ * sizeof(struct ext2_group_desc),
+ fs->blocksize);
+ newitoffset = newgdblocks + 3;
+
+ if (newitoffset <= fs->itoffset)
+ return 1;
+
+ for (i=0;i<fs->numgroups;i++)
+ {
+ blk_t diff;
+ blk_t j;
+ blk_t fromblock;
+ blk_t start;
+
+ start = (i * EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb))
+ + EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb);
+
+ if (EXT2_GROUP_INODE_TABLE(fs->gd[i]) >= start + newitoffset
+ && EXT2_GROUP_BLOCK_BITMAP(fs->gd[i]) >= start + newitoffset - 2
+ && EXT2_GROUP_INODE_BITMAP(fs->gd[i]) >= start + newitoffset - 1)
+ continue;
+
+ diff = newitoffset - (EXT2_GROUP_INODE_TABLE(fs->gd[i]) - start);
+
+ /* inode table */
+ fromblock = EXT2_GROUP_INODE_TABLE(fs->gd[i]) + fs->inodeblocks;
+
+ if (fs->opt_debug)
+ {
+ for (j=0;j<diff;j++)
+ if (ext2_get_block_state(fs, fromblock+j))
+ {
+ fprintf(stderr,
+ "error: block relocator "
+ "should have relocated "
+ "%i\n",
+ fromblock);
+
+ return 0;
+ }
+ }
+
+ for (j=0;j<diff;j++)
+ if (!ext2_set_block_state(fs, fromblock+j, 1, 0))
+ return 0;
+
+ if (!ext2_move_blocks(fs,
+ EXT2_GROUP_INODE_TABLE(fs->gd[i]),
+ fs->inodeblocks,
+ EXT2_GROUP_INODE_TABLE(fs->gd[i]) + diff))
+ return 0;
+ fs->gd[i].bg_inode_table = PED_CPU_TO_LE32 (
+ EXT2_GROUP_INODE_TABLE(fs->gd[i]) + diff);
+ fs->metadirty |= EXT2_META_GD;
+
+ if (fs->opt_safe)
+ if (!ext2_sync(fs))
+ return 0;
+
+ /* block bitmap and inode bitmap */
+ fromblock = EXT2_GROUP_INODE_TABLE(fs->gd[i]);
+ if (ext2_is_group_sparse(fs, i))
+ {
+ if (!ext2_copy_block(fs,
+ EXT2_GROUP_INODE_BITMAP(fs->gd[i]),
+ EXT2_GROUP_INODE_BITMAP(fs->gd[i]) + diff))
+ return 0;
+ fs->gd[i].bg_inode_bitmap = PED_CPU_TO_LE32 (
+ EXT2_GROUP_INODE_BITMAP(fs->gd[i]) + diff);
+ fs->metadirty |= EXT2_META_GD;
+
+ if (fs->opt_safe)
+ if (!ext2_sync(fs))
+ return 0;
+
+ if (!ext2_copy_block(fs,
+ EXT2_GROUP_BLOCK_BITMAP(fs->gd[i]),
+ EXT2_GROUP_BLOCK_BITMAP(fs->gd[i])+diff))
+ return 0;
+ fs->gd[i].bg_block_bitmap = PED_CPU_TO_LE32 (
+ EXT2_GROUP_BLOCK_BITMAP(fs->gd[i]) + diff);
+ fs->metadirty |= EXT2_META_GD;
+
+ if (fs->opt_safe)
+ if (!ext2_sync(fs))
+ return 0;
+
+ fromblock = EXT2_GROUP_BLOCK_BITMAP(fs->gd[i]);
+ }
+
+ ext2_zero_blocks(fs, fromblock-diff, diff);
+ for (j=0;j<diff;j++)
+ if (!ext2_set_block_state(fs, fromblock+j-diff, 0, 0))
+ return 0;
+
+ if (fs->opt_verbose)
+ fprintf(stderr,
+ "ext2_metadata_push: group %i/%i\r",
+ i+1, fs->numgroups);
+ }
+
+ fs->itoffset = newitoffset;
+
+ if (fs->opt_verbose)
+ fputc ('\n', stderr);
+
+ return 1;
+}
+#endif /* !DISCOVER_ONLY */
diff --git a/parted-1.8.7/libparted/fs/ext2/ext2_mkfs.c b/parted-1.8.7/libparted/fs/ext2/ext2_mkfs.c
new file mode 100644
index 0000000..86175a8
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/ext2/ext2_mkfs.c
@@ -0,0 +1,600 @@
+/*
+ ext2_mkfs.c -- ext2 fs creator
+ Copyright (C) 1999, 2000, 2001, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+#include <config.h>
+
+#ifndef DISCOVER_ONLY
+
+#define USE_EXT2_IS_DATA_BLOCK
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <time.h>
+#include <unistd.h>
+#include <uuid/uuid.h>
+#include "ext2.h"
+
+/* formula grabbed from linux ext2 kernel source
+ *
+ * returns 1 iff:
+ * x == y^N, N is some natural number
+ * OR x == 0
+ */
+static __inline__ int is_root(int x, int y)
+{
+ if (!x) return 1;
+
+ while (1)
+ {
+ if (x == 1) return 1;
+
+ if (x % y) return 0;
+
+ x /= y;
+ }
+}
+
+static __inline__ int is_group_sparse(int sparsesbfs, int group)
+{
+ if (!sparsesbfs)
+ return 1;
+
+ if (is_root(group, 3) || is_root(group, 5) || is_root(group, 7))
+ return 1;
+
+ return 0;
+}
+
+/* has implicit parameter 'sb' !! */
+#define is_sparse(group) is_group_sparse(EXT2_SUPER_FEATURE_RO_COMPAT(*sb) \
+ & EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER, (group))
+
+static int ext2_mkfs_write_main(struct ext2_dev_handle *handle,
+ struct ext2_super_block *sb,
+ struct ext2_group_desc *gd)
+{
+ int freeit;
+ int i;
+ int numgroups;
+ int gdblocks;
+ unsigned char *sbbuf;
+ struct ext2_super_block *sb_for_io;
+
+ freeit = 0;
+ sbbuf = (unsigned char *)sb;
+ sb_for_io = sb;
+ if (EXT2_SUPER_LOG_BLOCK_SIZE(*sb))
+ {
+ sbbuf = ped_malloc(1024 << EXT2_SUPER_LOG_BLOCK_SIZE(*sb));
+ if (!(handle->ops->read)(handle->cookie, sbbuf, 0, 1))
+ return 0;
+ memcpy (sbbuf+1024, sb, 1024);
+ freeit = 1;
+ sb_for_io = (struct ext2_super_block*) (sbbuf + 1024);
+ }
+
+ numgroups = ped_div_round_up (EXT2_SUPER_BLOCKS_COUNT(*sb)
+ - EXT2_SUPER_FIRST_DATA_BLOCK(*sb),
+ EXT2_SUPER_BLOCKS_PER_GROUP(*sb));
+ gdblocks = ped_div_round_up (numgroups * sizeof(struct ext2_group_desc),
+ 1024 << EXT2_SUPER_LOG_BLOCK_SIZE(*sb));
+
+ for (i=0;i<numgroups;i++)
+ {
+ if (is_sparse(i))
+ {
+ int offset;
+
+ offset = EXT2_SUPER_FIRST_DATA_BLOCK(*sb)
+ + i * EXT2_SUPER_BLOCKS_PER_GROUP(*sb);
+
+ sb_for_io->s_block_group_nr = PED_CPU_TO_LE16 (i);
+
+ if (!handle->ops->write(handle->cookie, sbbuf,
+ offset, 1))
+ return 0;
+ if (!handle->ops->write(handle->cookie, gd, offset+1,
+ gdblocks))
+ return 0;
+ }
+ }
+
+ sb_for_io->s_block_group_nr = 0;
+
+ if (freeit)
+ ped_free(sbbuf);
+ return 1;
+}
+
+static int ext2_mkfs_write_meta(struct ext2_dev_handle *handle,
+ struct ext2_super_block *sb,
+ struct ext2_group_desc *gd,
+ PedTimer* timer)
+{
+ int blocksize;
+ int gdtsize;
+ int i;
+ int itsize;
+ int numgroups;
+ unsigned char *bb;
+ unsigned char *ib;
+ unsigned char *zero;
+
+ blocksize = 1 << (EXT2_SUPER_LOG_BLOCK_SIZE(*sb) + 13);
+
+ numgroups = ped_div_round_up (EXT2_SUPER_BLOCKS_COUNT(*sb)
+ - EXT2_SUPER_FIRST_DATA_BLOCK(*sb),
+ EXT2_SUPER_BLOCKS_PER_GROUP(*sb));
+ itsize = ped_div_round_up (sizeof(struct ext2_inode)
+ * EXT2_SUPER_INODES_PER_GROUP(*sb),
+ (1024 << EXT2_SUPER_LOG_BLOCK_SIZE(*sb)));
+ gdtsize = ped_div_round_up (sizeof(struct ext2_group_desc) * numgroups,
+ (1024 << EXT2_SUPER_LOG_BLOCK_SIZE(*sb)));
+
+ bb = ped_malloc(1024 << EXT2_SUPER_LOG_BLOCK_SIZE(*sb));
+ if (!bb) goto error;
+ ib = ped_malloc(1024 << EXT2_SUPER_LOG_BLOCK_SIZE(*sb));
+ if (!ib) goto error_free_bb;
+ zero = ped_malloc((1024 << EXT2_SUPER_LOG_BLOCK_SIZE(*sb)) * itsize);
+ if (!zero) goto error_free_zero;
+
+ memset(zero, 0, (1024 << EXT2_SUPER_LOG_BLOCK_SIZE(*sb)) * itsize);
+
+ ped_timer_reset (timer);
+ ped_timer_set_state_name (timer, _("writing per-group metadata"));
+
+ for (i=0;i<numgroups;i++)
+ {
+ int admin;
+ blk_t bbblock;
+ int groupsize;
+ int groupoffset;
+ blk_t ibblock;
+ int j;
+
+ ped_timer_update (timer, 1.0 * i / numgroups);
+
+ groupoffset = i*EXT2_SUPER_BLOCKS_PER_GROUP(*sb)
+ + EXT2_SUPER_FIRST_DATA_BLOCK(*sb);
+ groupsize = PED_MIN(EXT2_SUPER_BLOCKS_COUNT(*sb) - groupoffset,
+ EXT2_SUPER_BLOCKS_PER_GROUP(*sb));
+
+ admin = itsize + 2;
+ bbblock = groupoffset;
+ ibblock = groupoffset + 1;
+ if (is_sparse(i))
+ {
+ admin += gdtsize + 1;
+ bbblock = groupoffset + gdtsize + 1;
+ ibblock = groupoffset + gdtsize + 2;
+ }
+
+ {
+ memset(bb, 0, 1024 << EXT2_SUPER_LOG_BLOCK_SIZE(*sb));
+ if (is_sparse(i))
+ for (j=0;j<gdtsize+1;j++)
+ bb[j>>3] |= _bitmap[j&7];
+
+ j = bbblock - groupoffset;
+ bb[j>>3] |= _bitmap[j&7];
+
+ j = ibblock - groupoffset;
+ bb[j>>3] |= _bitmap[j&7];
+
+ for (j=0;j<itsize;j++)
+ {
+ int k = j + gdtsize + 3;
+
+ bb[k>>3] |= _bitmap[k&7];
+ }
+
+ for (j=groupsize;j<blocksize;j++)
+ bb[j>>3] |= _bitmap[j&7];
+
+ if (!handle->ops->write(handle->cookie, bb, bbblock, 1))
+ goto error_free_zero;
+ }
+
+ {
+ memset(ib, 0, 1024 << EXT2_SUPER_LOG_BLOCK_SIZE(*sb));
+
+ for (j=EXT2_SUPER_INODES_PER_GROUP(*sb);j<blocksize;j++)
+ bb[j>>3] |= _bitmap[j&7];
+
+ if (!handle->ops->write(handle->cookie, ib, ibblock, 1))
+ goto error_free_zero;
+ }
+
+ if (!handle->ops->write(handle->cookie, zero,
+ groupoffset + gdtsize + 3, itsize))
+ goto error_free_zero;
+
+ gd[i].bg_block_bitmap = PED_CPU_TO_LE32(bbblock);
+ gd[i].bg_inode_bitmap = PED_CPU_TO_LE32(ibblock);
+ gd[i].bg_inode_table = PED_CPU_TO_LE32(groupoffset + gdtsize
+ + 3);
+ gd[i].bg_free_blocks_count = PED_CPU_TO_LE16(groupsize - admin);
+ gd[i].bg_free_inodes_count = PED_CPU_TO_LE16(
+ EXT2_SUPER_INODES_PER_GROUP(*sb));
+ gd[i].bg_used_dirs_count = 0;
+ gd[i].bg_used_dirs_count = 0;
+ gd[i].bg_pad = 0;
+ gd[i].bg_reserved[0] = 0;
+ gd[i].bg_reserved[1] = 0;
+ gd[i].bg_reserved[2] = 0;
+
+ sb->s_free_blocks_count = PED_CPU_TO_LE32 (
+ EXT2_SUPER_FREE_BLOCKS_COUNT(*sb)
+ + EXT2_GROUP_FREE_BLOCKS_COUNT(gd[i]));
+ }
+
+ ped_timer_update (timer, 1.0);
+
+ ped_free(zero);
+ ped_free(ib);
+ ped_free(bb);
+ return 1;
+
+error_free_zero:
+ ped_free(zero);
+ ped_free(ib);
+error_free_bb:
+ ped_free(bb);
+error:
+ return 0;
+}
+
+/* returns the offset into the buffer of the start of the next dir entry */
+static int _set_dirent(void* buf, int offset, int block_size, int is_last,
+ uint32_t inode, char* name, int file_type)
+{
+ struct ext2_dir_entry_2 *dirent = (void*) (((char*)buf) + offset);
+ int name_len = strlen(name);
+ int rec_len;
+
+ if (is_last)
+ rec_len = block_size - offset;
+ else
+ rec_len = ped_round_up_to(name_len + 1 + 8, 4);
+
+ memset (dirent, 0, rec_len);
+
+ dirent->inode = PED_CPU_TO_LE32(inode);
+ dirent->name_len = name_len;
+ dirent->rec_len = PED_CPU_TO_LE16(rec_len);
+ dirent->file_type = file_type;
+ strcpy(dirent->name, name);
+
+ return offset + rec_len;
+}
+
+static int ext2_mkfs_create_lost_and_found_inode(struct ext2_fs *fs)
+{
+ struct ext2_buffer_head *bh;
+ blk_t blocks[12];
+ uint32_t* data = ped_malloc ((fs->blocksize / 4) * sizeof(uint32_t));
+ int i;
+ struct ext2_inode inode;
+ int offset;
+
+ for (i=0;i<12;i++)
+ {
+ if (!(blocks[i] = ext2_find_free_block(fs)))
+ return 0;
+
+ if (!ext2_set_block_state(fs, blocks[i], 1, 1))
+ return 0;
+ }
+
+ /* create the directory entries, preallocating lots of blocks */
+ /* first block contains . and .. */
+ bh = ext2_bcreate(fs, blocks[0]);
+ if (!bh)
+ return 0;
+ memset(bh->data, 0, fs->blocksize);
+ offset = _set_dirent(bh->data, 0, fs->blocksize, 0,
+ 11, ".", EXT2_FT_DIR);
+ offset = _set_dirent(bh->data, offset, fs->blocksize, 1,
+ EXT2_ROOT_INO, "..", EXT2_FT_DIR);
+ bh->dirty = 1;
+ ext2_brelse(bh, 1);
+
+ /* subsequent blocks are empty */
+ memset(data, 0, fs->blocksize);
+ data[0] = 0;
+ data[1] = PED_CPU_TO_LE32(fs->blocksize);
+ for (i=1;i<12;i++)
+ {
+ bh = ext2_bcreate(fs, blocks[i]);
+ memcpy(bh->data, data, fs->blocksize);
+ bh->dirty = 1;
+ ext2_brelse(bh, 1);
+ }
+
+ /* create inode */
+ memset(&inode, 0, sizeof(struct ext2_inode));
+ inode.i_mode = PED_CPU_TO_LE16(S_IFDIR | 0755);
+ inode.i_uid = 0;
+ inode.i_size = PED_CPU_TO_LE32(12 * fs->blocksize);
+ inode.i_atime = PED_CPU_TO_LE32(time(NULL));
+ inode.i_ctime = PED_CPU_TO_LE32(time(NULL));
+ inode.i_mtime = PED_CPU_TO_LE32(time(NULL));
+ inode.i_dtime = 0;
+ inode.i_gid = 0;
+ inode.i_links_count = PED_CPU_TO_LE16(2);
+ inode.i_blocks = PED_CPU_TO_LE32((12 * fs->blocksize) >> 9);
+ inode.i_flags = 0;
+ for (i=0;i<12;i++)
+ inode.i_block[i] = PED_CPU_TO_LE32(blocks[i]);
+
+ if (!ext2_write_inode(fs, 11, &inode))
+ return 0;
+ fs->gd[0].bg_used_dirs_count = PED_CPU_TO_LE16(
+ EXT2_GROUP_USED_DIRS_COUNT(fs->gd[0]) + 1);
+ fs->metadirty |= EXT2_META_GD;
+
+ return 1;
+}
+
+static int ext2_mkfs_create_root_inode(struct ext2_fs *fs)
+{
+ struct ext2_buffer_head *bh;
+ blk_t block;
+ struct ext2_inode inode;
+ int offset;
+
+ if (!(block = ext2_find_free_block(fs)))
+ return 0;
+ if (!ext2_set_block_state(fs, block, 1, 1))
+ return 0;
+
+ /* create directory entries */
+ bh = ext2_bcreate(fs, block);
+ memset(bh->data, 0, fs->blocksize);
+ offset = _set_dirent(bh->data, 0, fs->blocksize, 0,
+ EXT2_ROOT_INO, ".", EXT2_FT_DIR);
+ offset = _set_dirent(bh->data, offset, fs->blocksize, 0,
+ EXT2_ROOT_INO, "..", EXT2_FT_DIR);
+ offset = _set_dirent(bh->data, offset, fs->blocksize, 1,
+ 11, "lost+found", EXT2_FT_DIR);
+ bh->dirty = 1;
+ if (!ext2_brelse(bh, 1))
+ return 0;
+
+ /* create inode */
+ memset(&inode, 0, sizeof(struct ext2_inode));
+ inode.i_mode = PED_CPU_TO_LE16(S_IFDIR | 0755);
+ inode.i_uid = 0;
+ inode.i_size = PED_CPU_TO_LE32(fs->blocksize);
+ inode.i_atime = PED_CPU_TO_LE32(time(NULL));
+ inode.i_ctime = PED_CPU_TO_LE32(time(NULL));
+ inode.i_mtime = PED_CPU_TO_LE32(time(NULL));
+ inode.i_dtime = 0;
+ inode.i_gid = 0;
+ inode.i_links_count = PED_CPU_TO_LE16(3);
+ inode.i_blocks = PED_CPU_TO_LE32(fs->blocksize >> 9);
+ inode.i_flags = 0;
+ inode.i_block[0] = PED_CPU_TO_LE32(block);
+
+ if (!ext2_write_inode(fs, 2, &inode))
+ return 0;
+ fs->gd[0].bg_used_dirs_count = PED_CPU_TO_LE16 (
+ EXT2_GROUP_USED_DIRS_COUNT(fs->gd[0]) + 1);
+ fs->metadirty |= EXT2_META_GD;
+
+ return 1;
+}
+
+static int ext2_reserve_inodes(struct ext2_fs *fs)
+{
+ int i;
+
+ for (i=1;i<12;i++)
+ if (!ext2_set_inode_state(fs, i, 1, 1))
+ return 0;
+ return 1;
+}
+
+static int ext2_mkfs_init_sb (struct ext2_super_block *sb, blk_t numblocks,
+ int numgroups, int first_block,
+ int log_block_size, blk_t blocks_per_group,
+ int inodes_per_group, int sparse_sb,
+ int reserved_block_percentage)
+{
+ /* catch a bug in gcc 2.95.2 */
+ PED_ASSERT(numgroups != 0, return 0);
+
+ memset(sb, 0, 1024);
+
+ sb->s_inodes_count = PED_CPU_TO_LE32(numgroups * inodes_per_group);
+ sb->s_blocks_count = PED_CPU_TO_LE32(numblocks);
+ sb->s_r_blocks_count = PED_CPU_TO_LE32(((uint64_t)numblocks
+ * reserved_block_percentage) / 100);
+
+ /* hack: this get's inc'd as we go through each group in
+ * ext2_mkfs_write_meta()
+ */
+ sb->s_free_blocks_count = 0;
+ sb->s_free_inodes_count = PED_CPU_TO_LE32 (numgroups
+ * inodes_per_group);
+ sb->s_first_data_block = PED_CPU_TO_LE32(first_block);
+ sb->s_log_block_size = PED_CPU_TO_LE32(log_block_size - 10);
+ sb->s_log_frag_size = sb->s_log_block_size;
+ sb->s_blocks_per_group = PED_CPU_TO_LE32(blocks_per_group);
+ sb->s_frags_per_group = PED_CPU_TO_LE32(blocks_per_group);
+ sb->s_inodes_per_group = PED_CPU_TO_LE32(inodes_per_group);
+ sb->s_mtime = 0;
+ sb->s_wtime = 0;
+ sb->s_mnt_count = 0;
+ sb->s_max_mnt_count = PED_CPU_TO_LE16(30);
+ sb->s_magic = PED_CPU_TO_LE16(0xEF53);
+ sb->s_state = PED_CPU_TO_LE16(EXT2_VALID_FS);
+ sb->s_errors = PED_CPU_TO_LE16(EXT2_ERRORS_DEFAULT);
+ sb->s_minor_rev_level = 0;
+ sb->s_lastcheck = 0;
+ sb->s_checkinterval = 0;
+ sb->s_creator_os = 0;
+ sb->s_rev_level = PED_CPU_TO_LE32(1);
+ sb->s_def_resuid = 0;
+ sb->s_def_resgid = 0;
+ sb->s_first_ino = PED_CPU_TO_LE32(11);
+ sb->s_inode_size = PED_CPU_TO_LE16(128);
+ sb->s_block_group_nr = 0;
+ sb->s_feature_compat = 0;
+ sb->s_feature_incompat = 0;
+ sb->s_feature_ro_compat = 0;
+ if (sparse_sb)
+ sb->s_feature_ro_compat
+ |= PED_CPU_TO_LE32(EXT2_FEATURE_RO_COMPAT_SPARSE_SUPER);
+
+/* FIXME: let the user decide? _set_dirent() assumes FILETYPE */
+ sb->s_feature_incompat
+ |= PED_CPU_TO_LE32(EXT2_FEATURE_INCOMPAT_FILETYPE);
+
+ uuid_generate(sb->s_uuid);
+ memset(sb->s_volume_name, 0, 16);
+ memset(sb->s_last_mounted, 0, 64);
+ sb->s_algorithm_usage_bitmap = 0;
+ sb->s_prealloc_blocks = 0;
+ sb->s_prealloc_dir_blocks = 0;
+ sb->s_padding1 = 0;
+
+ return 1;
+}
+
+struct ext2_fs *ext2_mkfs(struct ext2_dev_handle *handle,
+ blk_t numblocks,
+ int log_block_size,
+ blk_t blocks_per_group,
+ int inodes_per_group,
+ int sparse_sb,
+ int reserved_block_percentage,
+ PedTimer* timer)
+{
+ struct ext2_fs *fs;
+ struct ext2_super_block sb;
+ struct ext2_group_desc *gd;
+ int numgroups;
+ int first_block;
+ int non_sparse_admin;
+ int sparse_admin;
+ int last_group_blocks;
+ int last_group_admin;
+
+ /* if the FS is > 512Mb, use 4k blocks, otherwise 1k blocks */
+ if (log_block_size == 0) {
+ handle->ops->set_blocksize(handle->cookie, 12);
+ if (handle->ops->get_size(handle->cookie) > (512 * 1024))
+ log_block_size = 12;
+ else
+ log_block_size = 10;
+ }
+
+ /* FIXME: block size must be > MAX(logicalbs, physicalbs)
+ * to avoid modify-on-write.
+ * -- Leslie
+ */
+
+
+ handle->ops->set_blocksize(handle->cookie, log_block_size);
+
+ if (numblocks == 0)
+ numblocks = handle->ops->get_size(handle->cookie);
+
+ if (blocks_per_group == (unsigned int) 0)
+ blocks_per_group = 8 << log_block_size;
+
+ first_block = (log_block_size == 10) ? 1 : 0;
+
+ numgroups = ped_div_round_up (numblocks
+ - first_block, blocks_per_group);
+
+ if (inodes_per_group == 0)
+ inodes_per_group = ped_round_up_to (
+ numblocks / numgroups / 2,
+ (1 << log_block_size) / sizeof(struct ext2_inode));
+
+ if (sparse_sb == -1)
+ sparse_sb = 1;
+
+ /* FIXME: 5% not appropriate for modern drive sizes */
+ if (reserved_block_percentage == -1)
+ reserved_block_percentage = 5;
+
+ last_group_blocks = (numblocks - first_block) % blocks_per_group;
+ if (!last_group_blocks) last_group_blocks = blocks_per_group;
+ non_sparse_admin = 2
+ + inodes_per_group * sizeof(struct ext2_inode)
+ / (1 << log_block_size);
+ sparse_admin = non_sparse_admin
+ + ped_div_round_up (numgroups
+ * sizeof(struct ext2_group_desc),
+ 1 << log_block_size);
+ last_group_admin = is_group_sparse(sparse_sb, numgroups - 1)
+ ? sparse_admin : non_sparse_admin;
+ if (last_group_admin >= last_group_blocks) {
+ numgroups--;
+ numblocks -= last_group_blocks;
+ }
+ if (!numgroups
+ || (numgroups == 1
+ && (last_group_blocks - last_group_admin < 8
+ || inodes_per_group < 16))) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("File system too small for ext2."));
+ goto error;
+ }
+
+ gd = ped_malloc(numgroups * sizeof(struct ext2_group_desc)
+ + (1 << log_block_size));
+ if (!gd)
+ goto error;
+
+ if (!ext2_mkfs_init_sb(&sb, numblocks, numgroups, first_block,
+ log_block_size, blocks_per_group,
+ inodes_per_group, sparse_sb,
+ reserved_block_percentage))
+ goto error_free_gd;
+ if (!ext2_mkfs_write_meta(handle, &sb, gd, timer))
+ goto error_free_gd;
+ if (!ext2_mkfs_write_main(handle, &sb, gd))
+ goto error_free_gd;
+
+ fs = ext2_open(handle, 0);
+ if (!fs) goto error_close_fs;
+ if (!ext2_reserve_inodes(fs)) goto error_close_fs;
+ if (!ext2_mkfs_create_root_inode(fs)) goto error_close_fs;
+ if (!ext2_mkfs_create_lost_and_found_inode(fs))
+ goto error_close_fs;
+ if (!ext2_sync(fs)) goto error_close_fs;
+ ped_free(gd);
+ return fs;
+
+error_close_fs:
+ ext2_close(fs);
+error_free_gd:
+ ped_free (gd);
+error:
+ return NULL;
+}
+#endif /* !DISCOVER_ONLY */
diff --git a/parted-1.8.7/libparted/fs/ext2/ext2_resize.c b/parted-1.8.7/libparted/fs/ext2/ext2_resize.c
new file mode 100644
index 0000000..d6b3b14
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/ext2/ext2_resize.c
@@ -0,0 +1,731 @@
+/*
+ ext2_resize.c -- ext2 resizer
+ Copyright (C) 1998-2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+#include <config.h>
+
+#ifndef DISCOVER_ONLY
+
+#include <stdio.h>
+#include <stdlib.h>
+#include "ext2.h"
+
+static int ext2_add_group(struct ext2_fs *fs, blk_t groupsize)
+{
+ blk_t admin;
+ int group;
+ blk_t groupstart;
+ blk_t newgdblocks;
+ int sparse;
+
+ if (fs->opt_verbose)
+ fputs ("ext2_add_group\n", stderr);
+
+ if (!ped_realloc ((void*) &fs->gd,
+ (fs->numgroups+1) * sizeof(struct ext2_group_desc)
+ + fs->blocksize))
+ return 0;
+
+ if (fs->opt_debug)
+ {
+ if (EXT2_SUPER_BLOCKS_COUNT(fs->sb) !=
+ EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb)
+ + fs->numgroups * EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb))
+ {
+ fputs ("ext2_add_group: last (existing) group "
+ "isn't complete!\n", stderr);
+
+ return 0;
+ }
+ }
+
+ group = fs->numgroups;
+ sparse = ext2_is_group_sparse(fs, group);
+ groupstart = EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb)
+ + group * EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb);
+
+ admin = fs->adminblocks;
+ if (!sparse)
+ admin -= fs->gdblocks + 1;
+
+ if (fs->opt_debug)
+ {
+ if (groupsize < fs->adminblocks ||
+ groupsize > EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb))
+ {
+ fprintf(stderr,
+ "ext2_add_group: groups of %i blocks are "
+ "impossible!\n", groupsize);
+
+ return 0;
+ }
+ }
+
+ newgdblocks = ped_div_round_up((fs->numgroups + 1)
+ * sizeof(struct ext2_group_desc),
+ fs->blocksize);
+ if (newgdblocks != fs->gdblocks)
+ {
+ int i;
+
+ for (i=0;i<fs->numgroups;i++)
+ if (ext2_is_group_sparse(fs, i))
+ {
+ blk_t start;
+
+ start = EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb)
+ + i * EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb);
+ ext2_set_block_state(fs,
+ start + fs->gdblocks + 1, 1, 1);
+ }
+
+ fs->gdblocks++;
+ fs->adminblocks++;
+ if (sparse)
+ admin++;
+ }
+
+ fs->numgroups++;
+
+ fs->sb.s_inodes_count = PED_CPU_TO_LE32(
+ EXT2_SUPER_INODES_COUNT(fs->sb)
+ + EXT2_SUPER_INODES_PER_GROUP(fs->sb));
+ fs->sb.s_blocks_count = PED_CPU_TO_LE32(
+ EXT2_SUPER_BLOCKS_COUNT(fs->sb) + groupsize);
+ fs->sb.s_free_blocks_count = PED_CPU_TO_LE32(
+ EXT2_SUPER_FREE_BLOCKS_COUNT(fs->sb) + groupsize - admin);
+ fs->sb.s_free_inodes_count = PED_CPU_TO_LE32(
+ EXT2_SUPER_FREE_INODES_COUNT(fs->sb)
+ + EXT2_SUPER_INODES_PER_GROUP(fs->sb));
+ fs->metadirty |= EXT2_META_SB;
+
+ {
+ blk_t off;
+ blk_t sparseoff;
+
+ off = groupstart;
+ sparseoff = off + fs->itoffset - 2;
+
+ if (sparse)
+ {
+ fs->gd[group].bg_block_bitmap
+ = PED_CPU_TO_LE32(sparseoff);
+ fs->gd[group].bg_inode_bitmap
+ = PED_CPU_TO_LE32(sparseoff + 1);
+ }
+ else
+ {
+ fs->gd[group].bg_block_bitmap
+ = PED_CPU_TO_LE32(off);
+ fs->gd[group].bg_inode_bitmap
+ = PED_CPU_TO_LE32(off + 1);
+ }
+
+ /* Hey, I don't know _why_ either */
+ fs->gd[group].bg_inode_table = PED_CPU_TO_LE32(sparseoff + 2);
+ }
+
+ fs->gd[group].bg_free_blocks_count = PED_CPU_TO_LE16(groupsize - admin);
+ fs->gd[group].bg_free_inodes_count = PED_CPU_TO_LE16(
+ EXT2_SUPER_INODES_PER_GROUP(fs->sb));
+ fs->gd[group].bg_used_dirs_count = 0;
+ fs->metadirty |= EXT2_META_SB | EXT2_META_GD;
+
+ {
+ struct ext2_buffer_head *bh;
+ blk_t i;
+
+ bh = ext2_bcreate(fs, EXT2_GROUP_BLOCK_BITMAP(fs->gd[group]));
+ if (!bh)
+ return 0;
+
+ if (sparse)
+ {
+ bh->data[0] |= _bitmap[0];
+ for (i=1;i<=fs->gdblocks;i++)
+ bh->data[i>>3] |= _bitmap[i&7];
+ }
+
+ i = EXT2_GROUP_BLOCK_BITMAP(fs->gd[group]) - groupstart;
+ bh->data[i>>3] |= _bitmap[i&7];
+
+ i = EXT2_GROUP_INODE_BITMAP(fs->gd[group]) - groupstart;
+ bh->data[i>>3] |= _bitmap[i&7];
+
+ for (i=0;i<fs->inodeblocks;i++)
+ {
+ blk_t j;
+
+ j = EXT2_GROUP_INODE_TABLE(fs->gd[group])
+ - groupstart + i;
+ bh->data[j>>3] |= _bitmap[j&7];
+ }
+
+ for (i=groupsize;i<EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb);i++)
+ bh->data[i>>3] |= _bitmap[i&7];
+
+ ext2_brelse(bh, 0); /* this is a block bitmap */
+ }
+
+ if (!ext2_zero_blocks(fs, EXT2_GROUP_INODE_BITMAP(fs->gd[group]), 1))
+ return 0;
+ if (!ext2_zero_blocks(fs, EXT2_GROUP_INODE_TABLE(fs->gd[group]),
+ fs->inodeblocks))
+ return 0;
+
+ if (fs->opt_safe)
+ if (!ext2_sync(fs))
+ return 0;
+
+ return 1;
+}
+
+static int ext2_del_group(struct ext2_fs *fs)
+{
+ blk_t admin;
+ int group;
+ blk_t groupsize;
+ blk_t newgdblocks;
+ int sparse;
+
+ if (fs->opt_verbose)
+ fputs ("ext2_del_group\n", stderr);
+
+ group = fs->numgroups - 1;
+ sparse = ext2_is_group_sparse(fs, group);
+
+ admin = fs->adminblocks;
+ if (!sparse)
+ admin -= fs->gdblocks + 1;
+
+ groupsize = EXT2_SUPER_BLOCKS_COUNT(fs->sb)
+ - EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb)
+ - group * EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb);
+
+ if (EXT2_SUPER_FREE_BLOCKS_COUNT(fs->sb) < groupsize - admin)
+ {
+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+ _("File system is too full to remove a group!"));
+
+ return 0;
+ }
+
+ if (EXT2_SUPER_FREE_INODES_COUNT(fs->sb)
+ < EXT2_SUPER_INODES_PER_GROUP(fs->sb))
+ {
+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+ _("File system has too many allocated inodes to "
+ "remove a group!"));
+ return 0;
+ }
+
+ if (fs->opt_debug)
+ {
+ if (EXT2_GROUP_FREE_INODES_COUNT(fs->gd[group]) !=
+ EXT2_SUPER_INODES_PER_GROUP(fs->sb))
+ {
+ fputs ("ext2_del_group: this should not "
+ "happen anymore!\n", stderr);
+
+ return 0;
+ }
+ }
+
+ newgdblocks = ped_div_round_up((fs->numgroups - 1) *
+ sizeof(struct ext2_group_desc), fs->blocksize);
+
+ if (newgdblocks != fs->gdblocks)
+ {
+ int i;
+
+ for (i=0;i<fs->numgroups;i++)
+ if (ext2_is_group_sparse(fs, i))
+ {
+ blk_t start;
+
+ start = EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb) +
+ i * EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb);
+ ext2_set_block_state(fs,
+ start + fs->gdblocks,
+ 0, 1);
+ }
+
+ fs->gdblocks--;
+ fs->adminblocks--;
+ if (sparse)
+ admin--;
+ }
+
+ if (fs->opt_debug)
+ {
+ if (EXT2_GROUP_FREE_BLOCKS_COUNT(fs->gd[group])
+ != groupsize - admin)
+ {
+ blk_t i;
+ blk_t num;
+ blk_t offset;
+
+ offset = EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb) +
+ group * EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb);
+ num = EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb);
+
+ for (i=0;i<num;i++)
+ if (ext2_is_data_block(fs, offset+i) &&
+ ext2_get_block_state(fs, offset+i))
+ {
+ fprintf(stderr,
+ "error: block relocator "
+ "should have relocated "
+ "%i\n",
+ offset+i);
+
+ return 0;
+ }
+ }
+ }
+
+ fs->numgroups--;
+
+ fs->sb.s_inodes_count = PED_CPU_TO_LE32(
+ EXT2_SUPER_INODES_COUNT(fs->sb)
+ - EXT2_SUPER_INODES_PER_GROUP(fs->sb));
+ fs->sb.s_blocks_count = PED_CPU_TO_LE32(
+ EXT2_SUPER_BLOCKS_COUNT(fs->sb) - groupsize);
+ fs->sb.s_free_blocks_count = PED_CPU_TO_LE32(
+ EXT2_SUPER_FREE_BLOCKS_COUNT(fs->sb) - (groupsize - admin));
+ fs->sb.s_free_inodes_count = PED_CPU_TO_LE32(
+ EXT2_SUPER_FREE_INODES_COUNT(fs->sb)
+ - EXT2_SUPER_INODES_PER_GROUP(fs->sb));
+ fs->metadirty |= EXT2_META_SB;
+
+ if (fs->opt_safe)
+ ext2_sync(fs);
+
+ ped_realloc ((void*) &fs->gd,
+ fs->numgroups * sizeof(struct ext2_group_desc)
+ + fs->blocksize);
+
+ return 1;
+}
+
+static int ext2_grow_group(struct ext2_fs *fs, blk_t newsize)
+{
+ int group;
+ blk_t groupoff;
+ blk_t gblocks;
+ blk_t i;
+
+ if (fs->opt_verbose)
+ fputs ("ext2_grow_group\n", stderr);
+
+ group = fs->numgroups - 1;
+ groupoff = group * EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb)
+ + EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb);
+ gblocks = EXT2_SUPER_BLOCKS_COUNT(fs->sb) - groupoff;
+
+ if (fs->opt_debug)
+ {
+ if (newsize < gblocks)
+ {
+ fputs ("ext2_grow_group: called to shrink group!\n",
+ stderr);
+
+ return 0;
+ }
+
+ if (gblocks == newsize)
+ {
+ fputs ("ext2_grow_group: nothing to do!\n", stderr);
+ return 0;
+ }
+ }
+
+ for (i=gblocks;i<newsize;i++)
+ ext2_set_block_state(fs, groupoff + i, 0, 1);
+
+ fs->sb.s_blocks_count = PED_CPU_TO_LE32(
+ EXT2_SUPER_BLOCKS_COUNT(fs->sb) + newsize - gblocks);
+ fs->metadirty |= EXT2_META_SB;
+
+ if (fs->opt_safe)
+ ext2_sync(fs);
+
+ return 1;
+}
+
+static int ext2_shrink_group(struct ext2_fs *fs, blk_t newsize)
+{
+ blk_t admin;
+ int group;
+ blk_t groupoff;
+ blk_t gblocks;
+ blk_t i;
+
+ if (fs->opt_verbose)
+ fputs ("ext2_shrink_group\n", stderr);
+
+ group = fs->numgroups - 1;
+
+ admin = fs->adminblocks;
+ if (!ext2_is_group_sparse(fs, group))
+ admin -= fs->gdblocks + 1;
+
+ groupoff = group * EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb)
+ + EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb);
+ gblocks = EXT2_SUPER_BLOCKS_COUNT(fs->sb) - groupoff;
+
+ if (fs->opt_debug)
+ {
+ if (newsize < admin)
+ {
+ fprintf(stderr,
+ "ext2_shrink_group: cant shrink a group "
+ "to %i blocks\n", newsize);
+
+ return 0;
+ }
+
+ if (newsize > gblocks)
+ {
+ fputs ("ext2_shrink_group: called to grow group!\n",
+ stderr);
+
+ return 0;
+ }
+
+ if (gblocks == newsize)
+ {
+ fputs ("ext2_shrink_group: nothing to do!\n",
+ stderr);
+
+ return 0;
+ }
+ }
+
+ for (i=newsize;i<gblocks;i++)
+ {
+ if (fs->opt_debug && ext2_get_block_state(fs, groupoff + i))
+ {
+ fprintf(stderr,
+ "error: block relocator should have relocated "
+ "%i\n",
+ groupoff + i);
+
+ return 0;
+ }
+
+ ext2_set_block_state(fs, groupoff + i, 1, 0);
+ }
+
+ i = gblocks - newsize;
+ fs->sb.s_blocks_count = PED_CPU_TO_LE32(
+ EXT2_SUPER_BLOCKS_COUNT(fs->sb) - i);
+ fs->sb.s_free_blocks_count = PED_CPU_TO_LE32(
+ EXT2_SUPER_FREE_BLOCKS_COUNT(fs->sb) - i);
+ fs->gd[group].bg_free_blocks_count = PED_CPU_TO_LE16(
+ EXT2_GROUP_FREE_BLOCKS_COUNT(fs->gd[group]) - i);
+
+ fs->metadirty |= EXT2_META_SB | EXT2_META_GD;
+
+ if (fs->opt_safe)
+ ext2_sync(fs);
+
+ return 1;
+}
+
+
+
+
+
+
+static int ext2_grow_fs(struct ext2_fs *fs, blk_t newsize, PedTimer* timer)
+{
+ blk_t diff;
+ blk_t sizelast;
+ blk_t origsize = EXT2_SUPER_BLOCKS_COUNT(fs->sb);
+
+ if (fs->opt_verbose)
+ fputs ("ext2_grow_fs\n", stderr);
+
+ if (!ext2_block_relocate(fs, newsize))
+ return 0;
+
+ if (!ext2_metadata_push(fs, newsize))
+ return 0;
+
+ diff = newsize - EXT2_SUPER_BLOCKS_COUNT(fs->sb);
+ sizelast = EXT2_SUPER_BLOCKS_COUNT(fs->sb)
+ - EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb)
+ - (fs->numgroups-1) * EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb);
+
+ if (sizelast != EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb))
+ {
+ blk_t growto;
+
+ growto = sizelast + diff;
+ if (growto > EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb))
+ growto = EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb);
+
+ if (!ext2_grow_group(fs, growto))
+ return 0;
+
+ diff -= growto - sizelast;
+ }
+
+ ped_timer_reset (timer);
+ ped_timer_set_state_name (timer, _("adding groups"));
+
+ while (diff)
+ {
+ ped_timer_update (timer,
+ 1.0 - 1.0 * diff / (newsize - origsize));
+
+ sizelast = PED_MIN(diff, EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb));
+ if (!ext2_add_group(fs, sizelast))
+ return 0;
+
+ diff -= sizelast;
+ }
+
+ ped_timer_update (timer, 1.0);
+
+ return 1;
+}
+
+static int ext2_shrink_fs(struct ext2_fs *fs, blk_t newsize,
+ PedTimer* timer)
+{
+ blk_t origsize = EXT2_SUPER_BLOCKS_COUNT (fs->sb);
+ blk_t diff;
+ int newgroups;
+ blk_t sizelast;
+
+ if (fs->opt_verbose)
+ fputs ("ext2_shrink_fs\n", stderr);
+
+ newgroups = ped_div_round_up (newsize
+ - EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb),
+ EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb));
+ if (EXT2_SUPER_BLOCKS_COUNT(fs->sb)
+ - EXT2_SUPER_FREE_BLOCKS_COUNT(fs->sb) > newsize)
+ {
+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+ _("Your file system is too full to resize it to %i "
+ "blocks. Sorry."), newsize);
+ return 0;
+ }
+
+ if (EXT2_SUPER_INODES_COUNT(fs->sb)
+ - EXT2_SUPER_FREE_INODES_COUNT(fs->sb)
+ > newgroups * EXT2_SUPER_INODES_PER_GROUP(fs->sb))
+ {
+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+ _("Your file system has too many occupied inodes to "
+ "resize it to %i blocks. Sorry."), newsize);
+ return 0;
+ }
+
+ if (!ext2_inode_relocate(fs, newgroups))
+ return 0;
+
+ if (!ext2_block_relocate(fs, newsize))
+ return 0;
+
+ diff = EXT2_SUPER_BLOCKS_COUNT(fs->sb) - newsize;
+
+ ped_timer_reset (timer);
+ ped_timer_set_state_name (timer, _("shrinking"));
+
+ while (diff > 0)
+ {
+ ped_timer_update (timer,
+ 1.0 - 1.0 * diff / (origsize - newsize));
+
+ sizelast = EXT2_SUPER_BLOCKS_COUNT(fs->sb)
+ - EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb) -
+ (fs->numgroups - 1)
+ * EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb);
+
+ if (diff < sizelast)
+ {
+ if (!ext2_shrink_group(fs, sizelast - diff))
+ return 0;
+
+ diff = 0;
+ }
+ else
+ {
+ if (!ext2_del_group(fs))
+ return 0;
+
+ diff -= sizelast;
+ }
+ }
+
+ ped_timer_update (timer, 1.0);
+
+ return 1;
+}
+
+int ext2_determine_itoffset(struct ext2_fs *fs)
+{
+ int i;
+
+ fs->itoffset = EXT2_GROUP_INODE_TABLE(fs->gd[0])
+ - EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb);
+
+ /*PED_DEBUG (0x20, "itoffset is %d", fs->itoffset);
+
+ PED_DEBUG (0x20, "walking %d groups", fs->numgroups);*/
+
+ for (i=0;i<fs->numgroups;i++)
+ {
+ blk_t start;
+ blk_t bb;
+ blk_t ib;
+ blk_t it;
+
+ start = EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb)
+ + (i * EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb));
+ it = start + fs->itoffset;
+
+ /*PED_DEBUG (0x21, "start = %d, it = %d", start, it);*/
+
+ if (ext2_is_group_sparse(fs, i))
+ {
+ /*PED_DEBUG (0x21, "%d has a superblock copy", i);*/
+ bb = it - 2;
+ ib = it - 1;
+ }
+ else
+ {
+ /*PED_DEBUG (0x21, "%d doesn't have a superblock copy",
+ i);*/
+ bb = start;
+ ib = start + 1;
+ }
+
+ if (EXT2_GROUP_BLOCK_BITMAP(fs->gd[i]) != bb ||
+ EXT2_GROUP_INODE_BITMAP(fs->gd[i]) != ib ||
+ EXT2_GROUP_INODE_TABLE(fs->gd[i]) != it)
+ {
+ /* ped_exception_throw (PED_EXCEPTION_NO_FEATURE,
+ PED_EXCEPTION_CANCEL,
+ _("This ext2 file system has a rather strange layout! "
+ "Parted can't resize this (yet)."));*/
+
+ /* PED_DEBUG (0x21, "calculated block bitmap to be %d, "
+ "but fs says %d.", bb,
+ EXT2_GROUP_BLOCK_BITMAP(fs->gd[i]));
+ PED_DEBUG (0x21, "calculated inode bitmap to be %d, "
+ "but fs says %d.", ib,
+ EXT2_GROUP_INODE_BITMAP(fs->gd[i]));
+ PED_DEBUG (0x21, "calculated inode table to be %d, "
+ "but fs says %d.", it,
+ EXT2_GROUP_INODE_TABLE(fs->gd[i]));*/
+
+ return 0;
+ }
+ }
+
+ return 1;
+}
+
+int ext2_resize_fs(struct ext2_fs *fs, blk_t newsize, PedTimer* timer)
+{
+ blk_t residue;
+ int status;
+
+ if (EXT2_SUPER_STATE(fs->sb) & EXT2_ERROR_FS)
+ {
+ ped_exception_throw (
+ PED_EXCEPTION_WARNING, PED_EXCEPTION_CANCEL,
+ _("File system has errors! You should run e2fsck."));
+ return 0;
+ }
+
+ if (!(EXT2_SUPER_STATE(fs->sb) & EXT2_VALID_FS))
+ {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+ _("File system was not cleanly unmounted! "
+ "You should run e2fsck."));
+ return 0;
+ }
+
+ if (EXT2_SUPER_FEATURE_COMPAT(fs->sb)
+ & EXT2_FEATURE_COMPAT_HAS_DIR_INDEX) {
+ if (ped_exception_throw (
+ PED_EXCEPTION_WARNING, PED_EXCEPTION_IGNORE_CANCEL,
+ _("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'."))
+ != PED_EXCEPTION_IGNORE)
+ return 0;
+ fs->sb.s_feature_compat
+ = PED_CPU_TO_LE32(EXT2_SUPER_FEATURE_COMPAT(fs->sb)
+ & ~EXT2_FEATURE_COMPAT_HAS_DIR_INDEX);
+ fs->metadirty |= EXT2_META_SB;
+ }
+
+ if (!ext2_determine_itoffset(fs) && ped_exception_throw (
+ PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_OK_CANCEL,
+ _("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."))
+ == PED_EXCEPTION_CANCEL)
+ {
+ return 0;
+ }
+
+ if (fs->opt_verbose)
+ fputs ("ext2_resize_fs\n", stderr);
+
+ residue = (newsize - EXT2_SUPER_FIRST_DATA_BLOCK(fs->sb))
+ % EXT2_SUPER_BLOCKS_PER_GROUP(fs->sb);
+ if (residue && residue <= fs->adminblocks)
+ newsize -= residue;
+
+ if (newsize == EXT2_SUPER_BLOCKS_COUNT(fs->sb))
+ return 1;
+
+ fs->relocator_pool
+ = (unsigned char *)ped_malloc(ext2_relocator_pool_size << 10);
+ if (!fs->relocator_pool)
+ return 0;
+ fs->relocator_pool_end
+ = fs->relocator_pool + (ext2_relocator_pool_size << 10);
+
+ if (newsize < EXT2_SUPER_BLOCKS_COUNT(fs->sb))
+ status = ext2_shrink_fs(fs, newsize, timer);
+ else
+ status = ext2_grow_fs(fs, newsize, timer);
+
+ ped_free(fs->relocator_pool);
+ fs->relocator_pool = NULL;
+ fs->relocator_pool_end = NULL;
+
+ return status;
+}
+#endif /* !DISCOVER_ONLY */
diff --git a/parted-1.8.7/libparted/fs/ext2/interface.c b/parted-1.8.7/libparted/fs/ext2/interface.c
new file mode 100644
index 0000000..a56229f
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/ext2/interface.c
@@ -0,0 +1,353 @@
+/*
+ interface.c -- parted binding glue to libext2resize
+ Copyright (C) 1998-2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+/* VERSION: libext2resize 1.1.6 (by Lennert)
+ * merged 1.1.11 changes (by Andrew)
+ */
+
+#include <config.h>
+
+#include <parted/parted.h>
+#include "ext2.h"
+#include "parted_io.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_ext3)
+{
+ struct ext2_super_block sb;
+
+ if (!ped_geometry_read(geom, &sb, 2, 2))
+ return NULL;
+
+ 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 = (EXT2_SUPER_FEATURE_COMPAT(sb)
+ & EXT3_FEATURE_COMPAT_HAS_JOURNAL) != 0;
+
+ if (expect_ext3 != is_ext3)
+ 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_ext3);
+ } else {
+ return ped_geometry_new (geom->dev, geom->start,
+ block_count * block_size);
+ }
+ }
+ return NULL;
+}
+
+static PedGeometry*
+_ext2_probe (PedGeometry* geom)
+{
+ return _ext2_generic_probe (geom, 0);
+}
+
+static PedGeometry*
+_ext3_probe (PedGeometry* geom)
+{
+ return _ext2_generic_probe (geom, 1);
+}
+
+#ifndef DISCOVER_ONLY
+static int
+_ext2_clobber (PedGeometry* geom)
+{
+ struct ext2_super_block sb;
+
+ if (!ped_geometry_read(geom, &sb, 2, 2))
+ return 0;
+ if (EXT2_SUPER_MAGIC(sb) != EXT2_SUPER_MAGIC_CONST)
+ return 1;
+
+ sb.s_magic = 0;
+ return ped_geometry_write(geom, &sb, 2, 2);
+}
+
+static PedFileSystem*
+_ext2_open (PedGeometry* geom)
+{
+ PedFileSystem* fs;
+ struct ext2_fs* fs_info;
+ struct ext2_dev_handle* handle;
+
+ fs = (PedFileSystem*) ped_malloc (sizeof (PedFileSystem));
+ if (!fs) goto error;
+
+ fs->type = &_ext2_type;
+ fs->geom = ped_geometry_duplicate (geom);
+ fs->checked = 1;
+
+ handle = ext2_make_dev_handle_from_parted_geometry(fs->geom);
+ if (!handle) goto error_free_fs;
+
+ fs_info = (struct ext2_fs*) ext2_open(handle, 0);
+ if (!fs_info) goto error_free_handle;
+
+ fs->type_specific = (void*) fs_info;
+ fs_info->opt_verbose = 0;
+
+ return fs;
+
+error_free_handle:
+ ext2_destroy_dev_handle(handle);
+error_free_fs:
+ ped_free(fs);
+error:
+ return NULL;
+}
+
+static PedFileSystem*
+_ext2_create (PedGeometry* geom, PedTimer* timer)
+{
+ PedFileSystem* fs;
+ struct ext2_fs* fs_info;
+ struct ext2_dev_handle* handle;
+
+ fs = (PedFileSystem*) ped_malloc (sizeof (PedFileSystem));
+ if (!fs) goto error;
+
+ fs->type = &_ext2_type;
+ fs->geom = ped_geometry_duplicate (geom);
+
+ handle = ext2_make_dev_handle_from_parted_geometry(fs->geom);
+ if (!handle) goto error_free_fs;
+
+ fs_info = ext2_mkfs (handle, 0, 0, 0, 0, -1, -1, timer);
+ if (!fs_info) goto error_free_handle;
+
+ fs->type_specific = (void*) fs_info;
+ fs_info->opt_verbose = 0;
+
+ return fs;
+
+error_free_handle:
+ ext2_destroy_dev_handle(handle);
+error_free_fs:
+ ped_free(fs);
+error:
+ return NULL;
+}
+
+static int
+_ext2_close (PedFileSystem *fs)
+{
+ struct ext2_dev_handle* handle;
+
+ handle = ((struct ext2_fs*)fs->type_specific)->devhandle;
+ ext2_close(fs->type_specific);
+ ext2_destroy_dev_handle(handle);
+
+ ped_free(fs);
+ return 1;
+}
+
+static int
+_ext2_check (PedFileSystem *fs, PedTimer* timer)
+{
+ ped_exception_throw (PED_EXCEPTION_INFORMATION, PED_EXCEPTION_OK,
+ _("The ext2 file system passed a basic check. For a more "
+ "comprehensive check, use the e2fsck program."));
+ return 1;
+}
+
+static int
+_ext2_resize (PedFileSystem* fs, PedGeometry* geom, PedTimer* timer)
+{
+ struct ext2_fs* f;
+ PedSector old_length = fs->geom->length;
+
+ PED_ASSERT (fs->geom->dev == geom->dev, return 0);
+
+ if (fs->geom->start != geom->start)
+ {
+ ped_exception_throw (PED_EXCEPTION_NO_FEATURE,
+ PED_EXCEPTION_CANCEL,
+ _("Sorry, can't move the start of ext2 partitions yet!"));
+ return 0;
+ }
+
+ geom->dev->boot_dirty = 1;
+
+ f = (struct ext2_fs *) fs->type_specific;
+
+/* ensure that the geometry contains the new and old geometry */
+ if (old_length > geom->length) {
+ if (!ext2_resize_fs(f, geom->length >> (f->logsize - 9),
+ timer))
+ goto error;
+
+ fs->geom->length = geom->length;
+ fs->geom->end = fs->geom->start + geom->length - 1;
+ } else {
+ fs->geom->length = geom->length;
+ fs->geom->end = fs->geom->start + geom->length - 1;
+
+ if (!ext2_resize_fs(f, geom->length >> (f->logsize - 9),
+ timer))
+ goto error;
+ }
+ return 1;
+
+error:
+ return 0;
+}
+
+static PedConstraint*
+_ext2_get_create_constraint (const PedDevice* dev)
+{
+ PedGeometry full_dev;
+
+ if (!ped_geometry_init (&full_dev, dev, 0, dev->length - 1))
+ return NULL;
+
+ return ped_constraint_new (
+ ped_alignment_any, ped_alignment_any,
+ &full_dev, &full_dev,
+ 64, dev->length);
+}
+
+static PedConstraint*
+_ext2_get_resize_constraint (const PedFileSystem* fs)
+{
+ struct ext2_fs* f = (struct ext2_fs *) fs->type_specific;
+ PedDevice* dev = fs->geom->dev;
+ PedAlignment start_align;
+ PedGeometry start_sector;
+ PedGeometry full_dev;
+ PedSector min_size;
+
+ if (!ped_alignment_init (&start_align, fs->geom->start, 0))
+ return NULL;
+ if (!ped_geometry_init (&full_dev, dev, 0, dev->length - 1))
+ return NULL;
+ if (!ped_geometry_init (&start_sector, dev, fs->geom->start, 1))
+ return NULL;
+ min_size = (EXT2_SUPER_BLOCKS_COUNT(f->sb)
+ - EXT2_SUPER_FREE_BLOCKS_COUNT(f->sb))
+ * (f->blocksize / dev->sector_size);
+
+ return ped_constraint_new (&start_align, ped_alignment_any,
+ &start_sector, &full_dev, min_size,
+ dev->length);
+}
+#endif /* !DISCOVER_ONLY */
+
+static PedFileSystemOps _ext2_ops = {
+ probe: _ext2_probe,
+#ifndef DISCOVER_ONLY
+ clobber: _ext2_clobber,
+ open: _ext2_open,
+ create: _ext2_create,
+ close: _ext2_close,
+ check: _ext2_check,
+ resize: _ext2_resize,
+ copy: NULL,
+ get_create_constraint: _ext2_get_create_constraint,
+ get_copy_constraint: NULL,
+ get_resize_constraint: _ext2_get_resize_constraint
+#else /* !DISCOVER_ONLY */
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ resize: NULL,
+ copy: NULL,
+ get_create_constraint: NULL,
+ get_copy_constraint: NULL,
+ get_resize_constraint: NULL
+#endif /* !DISCOVER_ONLY */
+};
+
+static PedFileSystemOps _ext3_ops = {
+ probe: _ext3_probe,
+#ifndef DISCOVER_ONLY
+ clobber: _ext2_clobber,
+ open: _ext2_open,
+ create: NULL,
+ close: _ext2_close,
+ check: _ext2_check,
+ resize: _ext2_resize,
+ copy: NULL,
+ get_create_constraint: _ext2_get_create_constraint,
+ get_copy_constraint: NULL,
+ get_resize_constraint: _ext2_get_resize_constraint
+#else /* !DISCOVER_ONLY */
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ resize: NULL,
+ copy: NULL,
+ get_create_constraint: NULL,
+ get_copy_constraint: NULL,
+ get_resize_constraint: NULL
+#endif /* !DISCOVER_ONLY */
+};
+
+#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
+};
+
+void ped_file_system_ext2_init ()
+{
+ ped_file_system_type_register (&_ext2_type);
+ ped_file_system_type_register (&_ext3_type);
+}
+
+void ped_file_system_ext2_done ()
+{
+ ped_file_system_type_unregister (&_ext2_type);
+ ped_file_system_type_unregister (&_ext3_type);
+}
diff --git a/parted-1.8.7/libparted/fs/ext2/parted_io.c b/parted-1.8.7/libparted/fs/ext2/parted_io.c
new file mode 100644
index 0000000..1603b22
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/ext2/parted_io.c
@@ -0,0 +1,136 @@
+/*
+ parted_io.c -- parted I/O code interface for libext2resize
+ Copyright (C) 1998-2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+#include <config.h>
+
+#ifndef DISCOVER_ONLY
+
+#include <parted/parted.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include "ext2.h"
+
+/* pseudo-header.... */
+
+loff_t llseek(unsigned int fd, loff_t offset, unsigned int whence);
+
+struct my_cookie
+{
+ int logsize;
+ PedGeometry* geom;
+};
+
+/* ...then this must be pseudo-code :-) */
+
+static int do_close (void *cookie);
+static int do_sync (void *cookie);
+static blk_t do_get_size (void *cookie);
+static int do_read (void *cookie, void *ptr, blk_t block, blk_t numblocks);
+static int do_set_blocksize(void *cookie, int logsize);
+static int do_write (void *cookie, void *ptr, blk_t block, blk_t numblocks);
+
+struct ext2_dev_ops ops =
+{
+ close: do_close,
+ get_size: do_get_size,
+ read: do_read,
+ set_blocksize: do_set_blocksize,
+ sync: do_sync,
+ write: do_write
+};
+
+
+
+static int do_close(void *cookie)
+{
+ struct my_cookie *monster = cookie;
+
+ return ped_geometry_sync(monster->geom);
+}
+
+static int do_sync(void *cookie)
+{
+ struct my_cookie *monster = cookie;
+
+ return ped_geometry_sync(monster->geom);
+}
+
+static blk_t do_get_size(void *cookie)
+{
+ struct my_cookie *monster = cookie;
+
+ return monster->geom->length >> (monster->logsize - 9);
+}
+
+static int do_read(void *cookie, void *ptr, blk_t block, blk_t num)
+{
+ struct my_cookie *monster = cookie;
+
+ return ped_geometry_read(monster->geom, ptr, block << (monster->logsize - 9), num << (monster->logsize - 9));
+}
+
+static int do_set_blocksize(void *cookie, int logsize)
+{
+ struct my_cookie *monster = cookie;
+
+ monster->logsize = logsize;
+ return 1;
+}
+
+static int do_write(void *cookie, void *ptr, blk_t block, blk_t num)
+{
+ struct my_cookie *monster = cookie;
+
+ return ped_geometry_write(monster->geom, ptr,
+ block << (monster->logsize - 9),
+ num << (monster->logsize - 9));
+}
+
+
+struct ext2_dev_handle *ext2_make_dev_handle_from_parted_geometry(PedGeometry* geom)
+{
+ struct ext2_dev_handle *dh;
+ struct my_cookie *monster;
+
+ if ((dh = ped_malloc(sizeof(struct ext2_dev_handle))) == NULL)
+ goto error;
+
+ if ((monster = ped_malloc(sizeof(struct my_cookie))) == NULL)
+ goto error_free_dh;
+
+ dh->ops = &ops;
+ dh->cookie = monster;
+ monster->logsize = 9;
+ monster->geom = geom;
+
+ return dh;
+
+error_free_dh:
+ ped_free(dh);
+error:
+ return NULL;
+}
+
+void ext2_destroy_dev_handle(struct ext2_dev_handle *handle)
+{
+ ped_geometry_destroy(((struct my_cookie *)handle->cookie)->geom);
+ ped_free(handle->cookie);
+ ped_free(handle);
+}
+#endif /* !DISCOVER_ONLY */
diff --git a/parted-1.8.7/libparted/fs/ext2/parted_io.h b/parted-1.8.7/libparted/fs/ext2/parted_io.h
new file mode 100644
index 0000000..f796138
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/ext2/parted_io.h
@@ -0,0 +1,28 @@
+/*
+ parted_io.h
+ Copyright (C) 1998-2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _PARTED_IO_H
+#define _PARTED_IO_H
+
+#include "ext2.h"
+
+void ext2_destroy_dev_handle(struct ext2_dev_handle *handle);
+
+#endif
+
diff --git a/parted-1.8.7/libparted/fs/ext2/tune.c b/parted-1.8.7/libparted/fs/ext2/tune.c
new file mode 100644
index 0000000..ebadb48
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/ext2/tune.c
@@ -0,0 +1,40 @@
+/*
+ tune.c -- tuneable stuff
+ Copyright (C) 1998-2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+#include <config.h>
+
+#ifndef DISCOVER_ONLY
+
+/*
+ * maybe i'll make this all command-line configurable one day
+ */
+
+/* The size of the buffer cache in kilobytes. Note that this is only
+ the actual buffer memory. On top of this amount additional memory
+ will be allocated for buffer cache bookkeeping. */
+int ext2_buffer_cache_pool_size = 512;
+
+/* The size of the buffer cache hash table (log2 of # of buckets). */
+int ext2_hash_bits = 8;
+
+/* The block/inode relocator pool size in kilobytes. Make this as big
+ as you can. The smaller this is, the more disk I/O is required for
+ doing relocations. */
+int ext2_relocator_pool_size = 4096;
+#endif /* !DISCOVER_ONLY */
diff --git a/parted-1.8.7/libparted/fs/ext2/tune.h b/parted-1.8.7/libparted/fs/ext2/tune.h
new file mode 100644
index 0000000..f6adece
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/ext2/tune.h
@@ -0,0 +1,30 @@
+/*
+ tune.h -- ext2 tunables header
+ Copyright (C) 1998-2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA.
+*/
+
+#ifndef _TUNE_H
+#define _TUNE_H
+
+#define MAXCONT 256
+
+extern int ext2_buffer_cache_pool_size;
+extern int ext2_hash_bits;
+extern int ext2_max_groups;
+extern int ext2_relocator_pool_size;
+
+#endif
diff --git a/parted-1.8.7/libparted/fs/fat/Makefile.am b/parted-1.8.7/libparted/fs/fat/Makefile.am
new file mode 100644
index 0000000..f07fa74
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/fat/Makefile.am
@@ -0,0 +1,26 @@
+partedincludedir = -I$(top_srcdir)/include
+
+noinst_LTLIBRARIES = libfat.la
+libfat_la_SOURCES = bootsector.c \
+ bootsector.h \
+ calc.c \
+ calc.h \
+ clstdup.c \
+ clstdup.h \
+ context.c \
+ context.h \
+ count.c \
+ count.h \
+ fat.c \
+ fat.h \
+ fatio.c \
+ fatio.h \
+ table.c \
+ table.h \
+ traverse.c \
+ traverse.h \
+ resize.c
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/parted-1.8.7/libparted/fs/fat/Makefile.in b/parted-1.8.7/libparted/fs/fat/Makefile.in
new file mode 100644
index 0000000..a22b68b
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/fat/Makefile.in
@@ -0,0 +1,653 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libfat_la_LIBADD =
+am_libfat_la_OBJECTS = bootsector.lo calc.lo clstdup.lo context.lo \
+ count.lo fat.lo fatio.lo table.lo traverse.lo resize.lo
+libfat_la_OBJECTS = $(am_libfat_la_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)/lib@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libfat_la_SOURCES)
+DIST_SOURCES = $(libfat_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+partedincludedir = -I$(top_srcdir)/include
+noinst_LTLIBRARIES = libfat.la
+libfat_la_SOURCES = bootsector.c \
+ bootsector.h \
+ calc.c \
+ calc.h \
+ clstdup.c \
+ clstdup.h \
+ context.c \
+ context.h \
+ count.c \
+ count.h \
+ fat.c \
+ fat.h \
+ fatio.c \
+ fatio.h \
+ table.c \
+ table.h \
+ traverse.c \
+ traverse.h \
+ resize.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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/fat/Makefile'; \
+ 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
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libfat.la: $(libfat_la_OBJECTS) $(libfat_la_DEPENDENCIES)
+ $(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)/calc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/clstdup.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/context.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/count.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fat.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fatio.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/resize.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/table.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/traverse.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+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
+
+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 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/parted-1.8.7/libparted/fs/fat/bootsector.c b/parted-1.8.7/libparted/fs/fat/bootsector.c
new file mode 100644
index 0000000..23b34dc
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/fat/bootsector.c
@@ -0,0 +1,453 @@
+/*
+ libparted
+ Copyright (C) 1998, 1999, 2000, 2002, 2004, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#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, return 0);
+ PED_ASSERT (geom != NULL, return 0);
+
+ 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;
+}
+
+/* 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, return 0);
+
+ 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, return 0);
+
+ 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, return 0);
+
+ 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, return 0);
+
+ 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, return 0);
+
+ 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_generate (FatInfoSector* is, const PedFileSystem* fs)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+
+ PED_ASSERT (is != NULL, return 0);
+
+ fat_table_count_stats (fs_info->fat);
+
+ memset (is, 0, 512);
+
+ is->signature_1 = PED_CPU_TO_LE32 (FAT32_INFO_MAGIC1);
+ is->signature_2 = PED_CPU_TO_LE32 (FAT32_INFO_MAGIC2);
+ is->free_clusters = PED_CPU_TO_LE32 (fs_info->fat->free_cluster_count);
+ is->next_cluster = PED_CPU_TO_LE32 (fs_info->fat->last_alloc);
+ is->signature_3 = PED_CPU_TO_LE16 (FAT32_INFO_MAGIC3);
+
+ return 1;
+}
+
+int
+fat_info_sector_write (const FatInfoSector* is, PedFileSystem *fs)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+
+ PED_ASSERT (is != NULL, return 0);
+
+ 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/parted-1.8.7/libparted/fs/fat/bootsector.h b/parted-1.8.7/libparted/fs/fat/bootsector.h
new file mode 100644
index 0000000..e800c59
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/fat/bootsector.h
@@ -0,0 +1,133 @@
+/*
+ libparted
+ Copyright (C) 1998, 1999, 2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#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_generate (FatInfoSector* is, const PedFileSystem* fs);
+int fat_info_sector_write (const FatInfoSector* is, PedFileSystem* fs);
+
+#endif /* PED_FAT_BOOTSECTOR_H */
+
diff --git a/parted-1.8.7/libparted/fs/fat/calc.c b/parted-1.8.7/libparted/fs/fat/calc.c
new file mode 100644
index 0000000..5f8a898
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/fat/calc.c
@@ -0,0 +1,436 @@
+/*
+ libparted
+ Copyright (C) 1998, 1999, 2000, 2002, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#include <config.h>
+#include "fat.h"
+
+#ifndef DISCOVER_ONLY
+
+/* returns the minimum size of clusters for a given file system type */
+PedSector
+fat_min_cluster_size (FatType fat_type) {
+ switch (fat_type) {
+ case FAT_TYPE_FAT12: return 1;
+ case FAT_TYPE_FAT16: return 1024/512;
+ case FAT_TYPE_FAT32: return 4096/512;
+ }
+ return 0;
+}
+
+static PedSector
+_smallest_power2_over (PedSector ceiling)
+{
+ PedSector result = 1;
+
+ while (result < ceiling)
+ result *= 2;
+
+ return result;
+}
+
+/* returns the minimum size of clusters for a given file system type */
+PedSector
+fat_recommend_min_cluster_size (FatType fat_type, PedSector size) {
+ switch (fat_type) {
+ case FAT_TYPE_FAT12: return 1;
+ case FAT_TYPE_FAT16: return fat_min_cluster_size(fat_type);
+ case FAT_TYPE_FAT32:
+ return PED_MAX(_smallest_power2_over(size
+ / MAX_FAT32_CLUSTERS),
+ fat_min_cluster_size (fat_type));
+ }
+ return 0;
+}
+
+/* returns the maxmimum size of clusters for a given file system type */
+PedSector
+fat_max_cluster_size (FatType fat_type) {
+ switch (fat_type) {
+ case FAT_TYPE_FAT12: return 1; /* dunno... who cares? */
+ case FAT_TYPE_FAT16: return 32768/512;
+ case FAT_TYPE_FAT32: return 65536/512;
+ }
+ return 0;
+}
+
+/* returns the minimum number of clusters for a given file system type */
+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;
+}
+
+/* returns the maximum number of clusters for a given file system type */
+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;
+}
+
+/* what is this supposed to be? What drugs are M$ on? (Can I have some? :-) */
+PedSector
+fat_min_reserved_sector_count (FatType fat_type)
+{
+ return (fat_type == FAT_TYPE_FAT32) ? 32 : 1;
+}
+
+int
+fat_check_resize_geometry (const PedFileSystem* fs,
+ const PedGeometry* geom,
+ PedSector new_cluster_sectors,
+ FatCluster new_cluster_count)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ PedSector free_space;
+ PedSector min_free_space;
+ PedSector total_space;
+ PedSector new_total_space;
+ PedSector dir_space;
+
+ PED_ASSERT (geom != NULL, return 0);
+
+ dir_space = fs_info->total_dir_clusters * fs_info->cluster_sectors;
+ free_space = fs_info->fat->free_cluster_count
+ * fs_info->cluster_sectors;
+ total_space = fs_info->fat->cluster_count * fs_info->cluster_sectors;
+ new_total_space = new_cluster_count * new_cluster_sectors;
+ min_free_space = total_space - new_total_space + dir_space;
+
+ PED_ASSERT (new_cluster_count
+ <= fat_max_cluster_count (FAT_TYPE_FAT32),
+ return 0);
+
+ if (free_space < min_free_space) {
+ char* needed = ped_unit_format (geom->dev, min_free_space);
+ char* have = ped_unit_format (geom->dev, free_space);
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("You need %s of free disk space to shrink this "
+ "partition to this size. Currently, only %s is "
+ "free."),
+ needed, have);
+ ped_free (needed);
+ ped_free (have);
+ return 0;
+ }
+
+ return 1;
+}
+
+
+/******************************************************************************/
+
+/* DO NOT EDIT THIS ALGORITHM!
+ * As far as I can tell, this is the same algorithm used by Microsoft to
+ * calculate the size of the file allocaion tables, and the number of clusters.
+ * I have not verified this by dissassembling Microsoft code - I came to this
+ * conclusion by empirical analysis (i.e. trial and error - this was HORRIBLE).
+ *
+ * If you think this code makes no sense, then you are right. I will restrain
+ * the urge to inflict serious bodily harm on Microsoft people.
+ */
+
+static int
+entries_per_sector (FatType fat_type)
+{
+ switch (fat_type) {
+ case FAT_TYPE_FAT12:
+ return 512 * 3 / 2;
+ case FAT_TYPE_FAT16:
+ return 512 / 2;
+ case FAT_TYPE_FAT32:
+ return 512 / 4;
+ }
+ return 0;
+}
+
+static int
+calc_sizes (PedSector size, PedSector align, FatType fat_type,
+ PedSector root_dir_sectors, PedSector cluster_sectors,
+ FatCluster* out_cluster_count, PedSector* out_fat_size)
+{
+ PedSector data_fat_space; /* space available to clusters + FAT */
+ PedSector fat_space; /* space taken by each FAT */
+ PedSector cluster_space; /* space taken by clusters */
+ FatCluster cluster_count;
+ int i;
+
+ PED_ASSERT (out_cluster_count != NULL, return 0);
+ PED_ASSERT (out_fat_size != NULL, return 0);
+
+ data_fat_space = size - fat_min_reserved_sector_count (fat_type)
+ - align;
+ if (fat_type == FAT_TYPE_FAT16)
+ data_fat_space -= root_dir_sectors;
+
+ fat_space = 0;
+ for (i = 0; i < 2; i++) {
+ if (fat_type == FAT_TYPE_FAT32)
+ cluster_space = data_fat_space - fat_space;
+ else
+ cluster_space = data_fat_space - 2 * fat_space;
+
+ cluster_count = cluster_space / cluster_sectors;
+ fat_space = ped_div_round_up (cluster_count + 2,
+ entries_per_sector (fat_type));
+ }
+
+ cluster_space = data_fat_space - 2 * fat_space;
+ cluster_count = cluster_space / cluster_sectors;
+
+ /* looks like this should be part of the loop condition?
+ * Need to build the Big Table TM again to check
+ */
+ if (fat_space < ped_div_round_up (cluster_count + 2,
+ entries_per_sector (fat_type))) {
+ fat_space = ped_div_round_up (cluster_count + 2,
+ entries_per_sector (fat_type));
+ }
+
+ 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_space;
+
+ return 1;
+}
+
+/****************************************************************************/
+
+int
+fat_calc_sizes (PedSector size, PedSector align, FatType fat_type,
+ PedSector root_dir_sectors,
+ PedSector* out_cluster_sectors, FatCluster* out_cluster_count,
+ PedSector* out_fat_size)
+{
+ PedSector cluster_sectors;
+
+ PED_ASSERT (out_cluster_sectors != NULL, return 0);
+ PED_ASSERT (out_cluster_count != NULL, return 0);
+ PED_ASSERT (out_fat_size != NULL, return 0);
+
+ for (cluster_sectors = fat_recommend_min_cluster_size (fat_type, size);
+ cluster_sectors <= fat_max_cluster_size (fat_type);
+ cluster_sectors *= 2) {
+ if (calc_sizes (size, align, fat_type, root_dir_sectors,
+ cluster_sectors,
+ out_cluster_count, out_fat_size)) {
+ *out_cluster_sectors = cluster_sectors;
+ return 1;
+ }
+ }
+
+ for (cluster_sectors = fat_recommend_min_cluster_size (fat_type, size);
+ cluster_sectors >= fat_min_cluster_size (fat_type);
+ cluster_sectors /= 2) {
+ if (calc_sizes (size, align, fat_type, root_dir_sectors,
+ cluster_sectors,
+ out_cluster_count, out_fat_size)) {
+ *out_cluster_sectors = cluster_sectors;
+ return 1;
+ }
+ }
+
+ /* only make the cluster size really small (<4k) if a bigger one is
+ * isn't possible. Windows never makes FS's like this, but it
+ * seems to work... (do more tests!)
+ */
+ for (cluster_sectors = 4; cluster_sectors > 0; cluster_sectors /= 2) {
+ if (calc_sizes (size, align, fat_type, root_dir_sectors,
+ cluster_sectors,
+ out_cluster_count, out_fat_size)) {
+ *out_cluster_sectors = cluster_sectors;
+ return 1;
+ }
+ }
+
+ return 0;
+}
+
+/* Same as fat_calc_sizes, except it only attempts to match a particular
+ * cluster size. This is useful, because the FAT resizer can only shrink the
+ * cluster size.
+ */
+int
+fat_calc_resize_sizes (
+ const PedGeometry* geom,
+ PedSector align,
+ FatType fat_type,
+ PedSector root_dir_sectors,
+ PedSector cluster_sectors,
+ PedSector* out_cluster_sectors,
+ FatCluster* out_cluster_count,
+ PedSector* out_fat_size)
+{
+ PED_ASSERT (geom != NULL, return 0);
+ PED_ASSERT (out_cluster_sectors != NULL, return 0);
+ PED_ASSERT (out_cluster_count != NULL, return 0);
+ PED_ASSERT (out_fat_size != NULL, return 0);
+
+/* libparted can only reduce the cluster size at this point */
+ for (*out_cluster_sectors = cluster_sectors;
+ *out_cluster_sectors >= fat_min_cluster_size (fat_type);
+ *out_cluster_sectors /= 2) {
+ if (calc_sizes (geom->length, align, fat_type, root_dir_sectors,
+ *out_cluster_sectors,
+ out_cluster_count, out_fat_size))
+ return 1;
+ }
+ return 0;
+}
+
+/* Calculates the number of sectors needed to be added to cluster_offset,
+ to make the cluster on the new file system match up with the ones
+ on the old file system.
+ However, some space is reserved by fat_calc_resize_sizes() and
+ friends, to allow room for this space. If too much of this space is left
+ over, everyone will complain, so we have to be greedy, and use it all up...
+ */
+PedSector
+fat_calc_align_sectors (const PedFileSystem* new_fs,
+ const PedFileSystem* old_fs)
+{
+ FatSpecific* old_fs_info = FAT_SPECIFIC (old_fs);
+ FatSpecific* new_fs_info = FAT_SPECIFIC (new_fs);
+ PedSector raw_old_meta_data_end;
+ PedSector new_meta_data_size;
+ PedSector min_new_meta_data_end;
+ PedSector new_data_size;
+ PedSector new_clusters_size;
+ PedSector align;
+
+ new_meta_data_size
+ = fat_min_reserved_sector_count (new_fs_info->fat_type)
+ + new_fs_info->fat_sectors * 2;
+
+ if (new_fs_info->fat_type == FAT_TYPE_FAT16)
+ new_meta_data_size += new_fs_info->root_dir_sector_count;
+
+ raw_old_meta_data_end = old_fs->geom->start
+ + old_fs_info->cluster_offset;
+
+ min_new_meta_data_end = new_fs->geom->start + new_meta_data_size;
+
+ if (raw_old_meta_data_end > min_new_meta_data_end)
+ align = (raw_old_meta_data_end - min_new_meta_data_end)
+ % new_fs_info->cluster_sectors;
+ else
+ align = (new_fs_info->cluster_sectors
+ - ( (min_new_meta_data_end - raw_old_meta_data_end)
+ % new_fs_info->cluster_sectors ))
+ % new_fs_info->cluster_sectors;
+
+ new_data_size = new_fs->geom->length - new_meta_data_size;
+ new_clusters_size = new_fs_info->cluster_count
+ * new_fs_info->cluster_sectors;
+
+ while (new_clusters_size + align + new_fs_info->cluster_sectors
+ <= new_data_size)
+ align += new_fs_info->cluster_sectors;
+
+ return align;
+}
+
+int
+fat_is_sector_in_clusters (const PedFileSystem* fs, PedSector sector)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+
+ return sector >= fs_info->cluster_offset
+ && sector < fs_info->cluster_offset
+ + fs_info->cluster_sectors * fs_info->cluster_count;
+}
+
+FatFragment
+fat_cluster_to_frag (const PedFileSystem* fs, FatCluster cluster)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+
+ PED_ASSERT (cluster >= 2 && cluster < fs_info->cluster_count + 2,
+ return 0);
+
+ return (cluster - 2) * fs_info->cluster_frags;
+}
+
+FatCluster
+fat_frag_to_cluster (const PedFileSystem* fs, FatFragment frag)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+
+ PED_ASSERT (frag >= 0 && frag < fs_info->frag_count, return 0);
+
+ return frag / fs_info->cluster_frags + 2;
+}
+
+PedSector
+fat_frag_to_sector (const PedFileSystem* fs, FatFragment frag)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+
+ PED_ASSERT (frag >= 0 && frag < fs_info->frag_count, return 0);
+
+ return frag * fs_info->frag_sectors + fs_info->cluster_offset;
+}
+
+FatFragment
+fat_sector_to_frag (const PedFileSystem* fs, PedSector sector)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+
+ PED_ASSERT (sector >= fs_info->cluster_offset, return 0);
+
+ return (sector - fs_info->cluster_offset) / fs_info->frag_sectors;
+}
+
+PedSector
+fat_cluster_to_sector (const PedFileSystem* fs, FatCluster cluster)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+
+ PED_ASSERT (cluster >= 2 && cluster < fs_info->cluster_count + 2,
+ return 0);
+
+ return (cluster - 2) * fs_info->cluster_sectors
+ + fs_info->cluster_offset;
+}
+
+FatCluster
+fat_sector_to_cluster (const PedFileSystem* fs, PedSector sector)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+
+ PED_ASSERT (sector >= fs_info->cluster_offset, return 0);
+
+ return (sector - fs_info->cluster_offset) / fs_info->cluster_sectors
+ + 2;
+}
+#endif /* !DISCOVER_ONLY */
diff --git a/parted-1.8.7/libparted/fs/fat/calc.h b/parted-1.8.7/libparted/fs/fat/calc.h
new file mode 100644
index 0000000..cd126e5
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/fat/calc.h
@@ -0,0 +1,78 @@
+/*
+ libparted
+ Copyright (C) 1998, 1999, 2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef PED_FAT_CALC_H
+#define PED_FAT_CALC_H
+
+extern PedSector fat_min_cluster_size (FatType fat_type);
+extern PedSector fat_max_cluster_size (FatType fat_type);
+extern FatCluster fat_min_cluster_count (FatType fat_type);
+extern FatCluster fat_max_cluster_count (FatType fat_type);
+
+extern PedSector fat_min_reserved_sector_count (FatType fat_type);
+
+extern int fat_check_resize_geometry (const PedFileSystem* fs,
+ const PedGeometry* geom,
+ PedSector new_cluster_sectors,
+ FatCluster new_cluster_count);
+
+extern int fat_calc_sizes (PedSector size,
+ PedSector align,
+ FatType fat_type,
+ PedSector root_dir_sectors,
+ PedSector* out_cluster_sectors,
+ FatCluster* out_cluster_count,
+ PedSector* out_fat_size);
+
+extern int fat_calc_resize_sizes (const PedGeometry* geom,
+ PedSector align,
+ FatType fat_type,
+ PedSector root_dir_sectors,
+ PedSector cluster_sectors,
+ PedSector* out_cluster_sectors,
+ FatCluster* out_cluster_count,
+ PedSector* out_fat_size);
+
+extern PedSector
+fat_calc_align_sectors (const PedFileSystem* new_fs,
+ const PedFileSystem* old_fs);
+
+extern int
+fat_is_sector_in_clusters (const PedFileSystem* fs, PedSector sector);
+
+extern FatFragment
+fat_cluster_to_frag (const PedFileSystem* fs, FatCluster cluster);
+
+extern FatCluster
+fat_frag_to_cluster (const PedFileSystem* fs, FatFragment frag);
+
+extern PedSector
+fat_frag_to_sector (const PedFileSystem* fs, FatFragment frag);
+
+extern FatFragment
+fat_sector_to_frag (const PedFileSystem* fs, PedSector sector);
+
+extern PedSector
+fat_cluster_to_sector (const PedFileSystem* fs, FatCluster cluster);
+
+extern FatCluster
+fat_sector_to_cluster (const PedFileSystem* fs, PedSector sector);
+
+#endif /* PED_FAT_CALC_H */
+
diff --git a/parted-1.8.7/libparted/fs/fat/clstdup.c b/parted-1.8.7/libparted/fs/fat/clstdup.c
new file mode 100644
index 0000000..a4795b3
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/fat/clstdup.c
@@ -0,0 +1,425 @@
+/*
+ libparted
+ Copyright (C) 1998, 1999, 2000, 2001, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#include <config.h>
+#include <string.h>
+
+#include "fat.h"
+
+#ifndef DISCOVER_ONLY
+
+static int
+needs_duplicating (const FatOpContext* ctx, FatFragment frag)
+{
+ FatSpecific* old_fs_info = FAT_SPECIFIC (ctx->old_fs);
+ FatCluster cluster = fat_frag_to_cluster (ctx->old_fs, frag);
+ FatClusterFlag flag;
+
+ PED_ASSERT (cluster >= 2 && cluster < old_fs_info->cluster_count + 2,
+ return 0);
+
+ flag = fat_get_fragment_flag (ctx->old_fs, frag);
+ switch (flag) {
+ case FAT_FLAG_FREE:
+ return 0;
+
+ case FAT_FLAG_DIRECTORY:
+ return 1;
+
+ case FAT_FLAG_FILE:
+ return fat_op_context_map_static_fragment (ctx, frag) == -1;
+
+ case FAT_FLAG_BAD:
+ return 0;
+ }
+
+ return 0;
+}
+
+static int
+search_next_fragment (FatOpContext* ctx)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (ctx->old_fs);
+
+ for (; ctx->buffer_offset < fs_info->frag_count; ctx->buffer_offset++) {
+ if (needs_duplicating (ctx, ctx->buffer_offset))
+ return 1;
+ }
+ return 0; /* all done! */
+}
+
+static int
+read_marked_fragments (FatOpContext* ctx, FatFragment length)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (ctx->old_fs);
+ int status;
+ FatFragment i;
+
+ ped_exception_fetch_all ();
+ status = fat_read_fragments (ctx->old_fs, fs_info->buffer,
+ ctx->buffer_offset, length);
+ ped_exception_leave_all ();
+ if (status)
+ return 1;
+
+ ped_exception_catch ();
+
+/* something bad happened, so read fragments one by one. (The error may
+ have occurred on an unused fragment: who cares) */
+ for (i = 0; i < length; i++) {
+ if (ctx->buffer_map [i]) {
+ if (!fat_read_fragment (ctx->old_fs,
+ fs_info->buffer + i * fs_info->frag_size,
+ ctx->buffer_offset + i))
+ return 0;
+ }
+ }
+
+ return 1;
+}
+
+static int
+fetch_fragments (FatOpContext* ctx)
+{
+ FatSpecific* old_fs_info = FAT_SPECIFIC (ctx->old_fs);
+ FatFragment fetch_length = 0;
+ FatFragment frag;
+
+ for (frag = 0; frag < ctx->buffer_frags; frag++)
+ ctx->buffer_map [frag] = -1;
+
+ for (frag = 0;
+ frag < ctx->buffer_frags
+ && ctx->buffer_offset + frag < old_fs_info->frag_count;
+ frag++) {
+ if (needs_duplicating (ctx, ctx->buffer_offset + frag)) {
+ ctx->buffer_map [frag] = 1;
+ fetch_length = frag + 1;
+ }
+ }
+
+ if (!read_marked_fragments (ctx, fetch_length))
+ return 0;
+
+ return 1;
+}
+
+/*****************************************************************************
+ * here starts the write code. All assumes that ctx->buffer_map [first] and
+ * ctx->buffer_map [last] are occupied by fragments that need to be duplicated.
+ *****************************************************************************/
+
+/* finds the first fragment that is not going to get overwritten (that needs to
+ get read in) */
+static FatFragment
+get_first_underlay (const FatOpContext* ctx, int first, int last)
+{
+ int old;
+ FatFragment new;
+
+ PED_ASSERT (first <= last, return 0);
+
+ new = ctx->buffer_map [first];
+ for (old = first + 1; old <= last; old++) {
+ if (ctx->buffer_map [old] == -1)
+ continue;
+ new++;
+ if (ctx->buffer_map [old] != new)
+ return new;
+ }
+ return -1;
+}
+
+/* finds the last fragment that is not going to get overwritten (that needs to
+ get read in) */
+static FatFragment
+get_last_underlay (const FatOpContext* ctx, int first, int last)
+{
+ int old;
+ FatFragment new;
+
+ PED_ASSERT (first <= last, return 0);
+
+ new = ctx->buffer_map [last];
+ for (old = last - 1; old >= first; old--) {
+ if (ctx->buffer_map [old] == -1)
+ continue;
+ new--;
+ if (ctx->buffer_map [old] != new)
+ return new;
+ }
+ return -1;
+}
+
+/* "underlay" refers to the "static" fragments, that remain unchanged.
+ * when writing large chunks at a time, we don't want to clobber these,
+ * so we read them in, and write them back again. MUCH quicker that way.
+ */
+static int
+quick_group_write_read_underlay (FatOpContext* ctx, int first, int last)
+{
+ FatSpecific* new_fs_info = FAT_SPECIFIC (ctx->new_fs);
+ FatFragment first_underlay;
+ FatFragment last_underlay;
+ FatFragment underlay_length;
+
+ PED_ASSERT (first <= last, return 0);
+
+ first_underlay = get_first_underlay (ctx, first, last);
+ if (first_underlay == -1)
+ return 1;
+ last_underlay = get_last_underlay (ctx, first, last);
+
+ PED_ASSERT (first_underlay <= last_underlay, return 0);
+
+ underlay_length = last_underlay - first_underlay + 1;
+ if (!fat_read_fragments (ctx->new_fs,
+ new_fs_info->buffer
+ + (first_underlay - ctx->buffer_map [first])
+ * new_fs_info->frag_size,
+ first_underlay,
+ underlay_length))
+ return 0;
+ return 1;
+}
+
+/* quick_group_write() makes no attempt to recover from errors - just
+ * does things fast. If there is an error, slow_group_write() is
+ * called.
+ * Note: we do syncing writes, to make sure there isn't any
+ * error writing out. It's rather difficult recovering from errors
+ * further on.
+ */
+static int
+quick_group_write (FatOpContext* ctx, int first, int last)
+{
+ FatSpecific* old_fs_info = FAT_SPECIFIC (ctx->old_fs);
+ FatSpecific* new_fs_info = FAT_SPECIFIC (ctx->new_fs);
+ int active_length;
+ int i;
+ int offset;
+
+ PED_ASSERT (first <= last, return 0);
+
+ ped_exception_fetch_all ();
+ if (!quick_group_write_read_underlay (ctx, first, last))
+ goto error;
+
+ for (i = first; i <= last; i++) {
+ if (ctx->buffer_map [i] == -1)
+ continue;
+
+ offset = ctx->buffer_map [i] - ctx->buffer_map [first];
+ memcpy (new_fs_info->buffer + offset * new_fs_info->frag_size,
+ old_fs_info->buffer + i * new_fs_info->frag_size,
+ new_fs_info->frag_size);
+ }
+
+ active_length = ctx->buffer_map [last] - ctx->buffer_map [first] + 1;
+ if (!fat_write_sync_fragments (ctx->new_fs, new_fs_info->buffer,
+ ctx->buffer_map [first], active_length))
+ goto error;
+
+ ped_exception_leave_all ();
+ return 1;
+
+error:
+ ped_exception_catch ();
+ ped_exception_leave_all ();
+ return 0;
+}
+
+/* Writes fragments out, one at a time, avoiding errors on redundant writes
+ * on damaged parts of the disk we already know about. If there's an error
+ * on one of the required fragments, it gets marked as bad, and a replacement
+ * is found.
+ */
+static int
+slow_group_write (FatOpContext* ctx, int first, int last)
+{
+ FatSpecific* old_fs_info = FAT_SPECIFIC (ctx->old_fs);
+ FatSpecific* new_fs_info = FAT_SPECIFIC (ctx->new_fs);
+ int i;
+
+ PED_ASSERT (first <= last, return 0);
+
+ for (i = first; i <= last; i++) {
+ if (ctx->buffer_map [i] == -1)
+ continue;
+
+ while (!fat_write_sync_fragment (ctx->new_fs,
+ old_fs_info->buffer + i * old_fs_info->frag_size,
+ ctx->buffer_map [i])) {
+ fat_table_set_bad (new_fs_info->fat,
+ ctx->buffer_map [i]);
+ ctx->buffer_map [i] = fat_table_alloc_cluster
+ (new_fs_info->fat);
+ if (ctx->buffer_map [i] == 0)
+ return 0;
+ }
+ }
+ return 1;
+}
+
+static int
+update_remap (FatOpContext* ctx, int first, int last)
+{
+ int i;
+
+ PED_ASSERT (first <= last, return 0);
+
+ for (i = first; i <= last; i++) {
+ if (ctx->buffer_map [i] == -1)
+ continue;
+ ctx->remap [ctx->buffer_offset + i] = ctx->buffer_map [i];
+ }
+
+ return 1;
+}
+
+static int
+group_write (FatOpContext* ctx, int first, int last)
+{
+ PED_ASSERT (first <= last, return 0);
+
+ if (!quick_group_write (ctx, first, last)) {
+ if (!slow_group_write (ctx, first, last))
+ return 0;
+ }
+ if (!update_remap (ctx, first, last))
+ return 0;
+ return 1;
+}
+
+/* assumes fragment size and new_fs's cluster size are equal */
+static int
+write_fragments (FatOpContext* ctx)
+{
+ FatSpecific* old_fs_info = FAT_SPECIFIC (ctx->old_fs);
+ FatSpecific* new_fs_info = FAT_SPECIFIC (ctx->new_fs);
+ int group_start;
+ int group_end = -1; /* shut gcc up! */
+ FatFragment mapped_length;
+ FatFragment i;
+ FatCluster new_cluster;
+
+ PED_ASSERT (ctx->buffer_offset < old_fs_info->frag_count, return 0);
+
+ group_start = -1;
+ for (i = 0; i < ctx->buffer_frags; i++) {
+ if (ctx->buffer_map [i] == -1)
+ continue;
+
+ ctx->frags_duped++;
+
+ new_cluster = fat_table_alloc_cluster (new_fs_info->fat);
+ if (!new_cluster)
+ return 0;
+ fat_table_set_eof (new_fs_info->fat, new_cluster);
+ ctx->buffer_map [i] = fat_cluster_to_frag (ctx->new_fs,
+ new_cluster);
+
+ if (group_start == -1)
+ group_start = group_end = i;
+
+ PED_ASSERT (ctx->buffer_map [i]
+ >= ctx->buffer_map [group_start],
+ return 0);
+
+ mapped_length = ctx->buffer_map [i]
+ - ctx->buffer_map [group_start] + 1;
+ if (mapped_length <= ctx->buffer_frags) {
+ group_end = i;
+ } else {
+ /* ran out of room in the buffer, so write this group,
+ * and start a new one...
+ */
+ if (!group_write (ctx, group_start, group_end))
+ return 0;
+ group_start = group_end = i;
+ }
+ }
+
+ PED_ASSERT (group_start != -1, return 0);
+
+ if (!group_write (ctx, group_start, group_end))
+ return 0;
+ return 1;
+}
+
+/* default all fragments to unmoved
+ */
+static void
+init_remap (FatOpContext* ctx)
+{
+ FatSpecific* old_fs_info = FAT_SPECIFIC (ctx->old_fs);
+ FatFragment i;
+
+ for (i = 0; i < old_fs_info->frag_count; i++)
+ ctx->remap[i] = fat_op_context_map_static_fragment (ctx, i);
+}
+
+static FatFragment
+count_frags_to_dup (FatOpContext* ctx)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (ctx->old_fs);
+ FatFragment i;
+ FatFragment total;
+
+ total = 0;
+
+ for (i = 0; i < fs_info->frag_count; i++) {
+ if (needs_duplicating (ctx, i))
+ total++;
+ }
+
+ return total;
+}
+
+/* duplicates unreachable file clusters, and all directory clusters
+ */
+int
+fat_duplicate_clusters (FatOpContext* ctx, PedTimer* timer)
+{
+ FatFragment total_frags_to_dup;
+
+ init_remap (ctx);
+ total_frags_to_dup = count_frags_to_dup (ctx);
+
+ ped_timer_reset (timer);
+ ped_timer_set_state_name (timer, "moving data");
+
+ ctx->buffer_offset = 0;
+ ctx->frags_duped = 0;
+ while (search_next_fragment (ctx)) {
+ ped_timer_update (
+ timer, 1.0 * ctx->frags_duped / total_frags_to_dup);
+
+ if (!fetch_fragments (ctx))
+ return 0;
+ if (!write_fragments (ctx))
+ return 0;
+ ctx->buffer_offset += ctx->buffer_frags;
+ }
+
+ ped_timer_update (timer, 1.0);
+ return 1;
+}
+
+#endif /* !DISCOVER_ONLY */
diff --git a/parted-1.8.7/libparted/fs/fat/clstdup.h b/parted-1.8.7/libparted/fs/fat/clstdup.h
new file mode 100644
index 0000000..e99a2d3
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/fat/clstdup.h
@@ -0,0 +1,29 @@
+/*
+ libparted
+ Copyright (C) 1999 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef PED_FAT_CLSTDUP_H_INCLUDED
+#define PED_FAT_CLSTDUP_H_INCLUDED
+
+#include "context.h"
+
+/* the big important one :-) */
+extern int fat_duplicate_clusters (FatOpContext* ctx, PedTimer* timer);
+
+#endif /* PED_FAT_CLSTDUP_H_INCLUDED */
+
diff --git a/parted-1.8.7/libparted/fs/fat/context.c b/parted-1.8.7/libparted/fs/fat/context.c
new file mode 100644
index 0000000..bf0df16
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/fat/context.c
@@ -0,0 +1,261 @@
+/*
+ libparted
+ Copyright (C) 1998, 1999, 2000, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#include <config.h>
+#include <string.h>
+
+#include "fat.h"
+
+#ifndef DISCOVER_ONLY
+
+/* Note: this deals with file system start and end sectors, even if the physical
+ * devices are different (eg for fat_copy()) Perhaps this is a hack, but it
+ * works ;-)
+ */
+static int
+calc_deltas (FatOpContext* ctx)
+{
+ PedFileSystem* old_fs = ctx->old_fs;
+ PedFileSystem* new_fs = ctx->new_fs;
+ FatSpecific* old_fs_info = FAT_SPECIFIC (old_fs);
+ FatSpecific* new_fs_info = FAT_SPECIFIC (new_fs);
+ PedSector old_cluster_ofs;
+ PedSector new_cluster_ofs;
+ PedSector sector_delta;
+
+ old_cluster_ofs = old_fs->geom->start + old_fs_info->cluster_offset;
+ new_cluster_ofs = new_fs->geom->start + new_fs_info->cluster_offset;
+
+ if (new_cluster_ofs > old_cluster_ofs) {
+ ctx->start_move_dir = FAT_DIR_FORWARD;
+ sector_delta = new_cluster_ofs - old_cluster_ofs;
+ } else {
+ ctx->start_move_dir = FAT_DIR_BACKWARD;
+ sector_delta = old_cluster_ofs - new_cluster_ofs;
+ }
+
+ if (sector_delta % new_fs_info->cluster_sectors) {
+ ped_exception_throw (
+ PED_EXCEPTION_BUG, PED_EXCEPTION_CANCEL,
+ _("Cluster start delta = %d, which is not a multiple "
+ "of the cluster size %d."),
+ (int) sector_delta,
+ (int) new_fs_info->cluster_sectors);
+ return 0;
+ }
+
+ ctx->start_move_delta = sector_delta / ctx->frag_sectors;
+
+#ifdef PED_VERBOSE
+ printf ("Start move delta is: %d %s.\n",
+ (int) ctx->start_move_delta,
+ (ctx->start_move_dir == FAT_DIR_FORWARD)?
+ "forwards" : "backwards");
+#endif
+
+ return 1;
+}
+
+FatOpContext*
+fat_op_context_new (PedFileSystem* new_fs, PedFileSystem* old_fs)
+{
+ FatSpecific* old_fs_info = FAT_SPECIFIC (old_fs);
+ FatSpecific* new_fs_info = FAT_SPECIFIC (new_fs);
+ FatOpContext* ctx;
+
+ ctx = (FatOpContext*) ped_malloc (sizeof (FatOpContext));
+ if (!ctx)
+ goto error;
+
+ ctx->frag_sectors = PED_MIN (old_fs_info->cluster_sectors,
+ new_fs_info->cluster_sectors);
+ if (!fat_set_frag_sectors (new_fs, ctx->frag_sectors))
+ goto error;
+ if (!fat_set_frag_sectors (old_fs, ctx->frag_sectors))
+ goto error;
+
+ ctx->buffer_frags = old_fs_info->buffer_sectors / ctx->frag_sectors;
+ ctx->buffer_map = (FatFragment*) ped_malloc (sizeof (FatFragment)
+ * ctx->buffer_frags);
+ if (!ctx->buffer_map)
+ goto error_free_ctx;
+
+ ctx->remap = (FatFragment*) ped_malloc (sizeof (FatFragment)
+ * old_fs_info->frag_count);
+ if (!ctx->remap)
+ goto error_free_buffer_map;
+
+ ctx->new_fs = new_fs;
+ ctx->old_fs = old_fs;
+ if (!calc_deltas (ctx))
+ goto error_free_buffer_map;
+
+ return ctx;
+
+error_free_buffer_map:
+ ped_free (ctx->buffer_map);
+error_free_ctx:
+ ped_free (ctx);
+error:
+ return NULL;
+}
+
+void
+fat_op_context_destroy (FatOpContext* ctx)
+{
+ ped_free (ctx->buffer_map);
+ ped_free (ctx->remap);
+ ped_free (ctx);
+}
+
+FatFragment
+fat_op_context_map_static_fragment (const FatOpContext* ctx, FatFragment frag)
+{
+ FatSpecific* new_fs_info = FAT_SPECIFIC (ctx->new_fs);
+ FatFragment result;
+
+ if (ctx->new_fs->geom->dev != ctx->old_fs->geom->dev)
+ return -1;
+
+ if (ctx->start_move_dir == FAT_DIR_FORWARD) {
+ if (frag < ctx->start_move_delta)
+ return -1;
+ result = frag - ctx->start_move_delta;
+ } else {
+ result = frag + ctx->start_move_delta;
+ }
+
+ if (result >= new_fs_info->frag_count)
+ return -1;
+
+ return result;
+}
+
+FatCluster
+fat_op_context_map_static_cluster (const FatOpContext* ctx, FatCluster clst)
+{
+ FatFragment mapped_frag;
+
+ mapped_frag = fat_op_context_map_static_fragment (ctx,
+ fat_cluster_to_frag (ctx->old_fs, clst));
+ if (mapped_frag != -1)
+ return fat_frag_to_cluster (ctx->new_fs, mapped_frag);
+ else
+ return 0;
+}
+
+FatFragment
+fat_op_context_map_fragment (const FatOpContext* ctx, FatFragment frag)
+{
+ return ctx->remap [frag];
+}
+
+FatCluster
+fat_op_context_map_cluster (const FatOpContext* ctx, FatCluster clst)
+{
+ FatFragment mapped_frag;
+
+ mapped_frag = fat_op_context_map_fragment (ctx,
+ fat_cluster_to_frag (ctx->old_fs, clst));
+ if (mapped_frag != -1)
+ return fat_frag_to_cluster (ctx->new_fs, mapped_frag);
+ else
+ return 0;
+}
+
+/* This function sets the initial fat for the new resized file system.
+ This is in *NO WAY* a proper FAT table - all it does is:
+ a) mark bad clusters as bad.
+ b) mark used clusters (that is, clusters from the original FS that are
+ reachable from the resized one). Marks as EOF (i.e. used, end of
+ file chain).
+ c) mark original file system metadata as EOF (i.e. used), to prevent
+ it from being clobbered. This will leave the original file system
+ intact, until the partition table is modified, if the start of
+ the partition is moved.
+
+ The FATs are rebuilt *properly* after cluster relocation. This here is
+ only to mark clusters as used, so when cluster relocation occurs, clusters
+ aren't relocated on top of ones marked in a, b or c.
+*/
+int
+fat_op_context_create_initial_fat (FatOpContext* ctx)
+{
+ FatSpecific* old_fs_info = FAT_SPECIFIC (ctx->old_fs);
+ FatSpecific* new_fs_info = FAT_SPECIFIC (ctx->new_fs);
+ FatCluster clst;
+ FatCluster new_clst;
+ PedSector sect;
+ PedSector new_sect;
+ FatFragment frag;
+ FatFragment new_frag;
+ FatClusterFlag frag_flag;
+
+ new_fs_info->fat = fat_table_new (
+ new_fs_info->fat_type,
+ new_fs_info->fat_sectors * 512
+ / fat_table_entry_size (new_fs_info->fat_type));
+ if (!new_fs_info->fat)
+ return 0;
+
+ if (!fat_table_set_cluster_count (new_fs_info->fat,
+ new_fs_info->cluster_count))
+ return 0;
+
+/* mark bad and used clusters */
+ for (frag = 0; frag < old_fs_info->frag_count; frag++) {
+ frag_flag = fat_get_fragment_flag (ctx->old_fs, frag);
+ if (frag_flag == FAT_FLAG_FREE)
+ continue;
+
+ new_frag = fat_op_context_map_static_fragment (ctx, frag);
+ if (new_frag == -1)
+ continue;
+
+ new_clst = fat_frag_to_cluster (ctx->new_fs, new_frag);
+ PED_ASSERT (new_clst != 0, return 0);
+
+ if (frag_flag == FAT_FLAG_BAD) {
+ if (!fat_table_set_bad (new_fs_info->fat, new_clst))
+ return 0;
+ } else {
+ if (!fat_table_set_eof (new_fs_info->fat, new_clst))
+ return 0;
+ }
+ }
+
+/* mark metadata regions that map to clusters on the new FS */
+ for (sect = 0; sect < old_fs_info->cluster_offset; sect++) {
+ new_sect = ped_geometry_map (ctx->new_fs->geom,
+ ctx->old_fs->geom, sect);
+ if (new_sect == -1
+ || !fat_is_sector_in_clusters (ctx->new_fs, new_sect))
+ continue;
+
+ clst = fat_sector_to_cluster (ctx->new_fs, new_sect);
+ PED_ASSERT (clst != 0, return 0);
+
+ if (!fat_table_set_eof (new_fs_info->fat, clst))
+ return 0;
+ }
+
+ return 1;
+}
+
+#endif /* !DISCOVER_ONLY */
diff --git a/parted-1.8.7/libparted/fs/fat/context.h b/parted-1.8.7/libparted/fs/fat/context.h
new file mode 100644
index 0000000..f552bcb
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/fat/context.h
@@ -0,0 +1,70 @@
+/*
+ libparted
+ Copyright (C) 1999, 2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef PED_FAT_CONTEXT_H_INCLUDED
+#define PED_FAT_CONTEXT_H_INCLUDED
+
+#include "count.h"
+
+enum _FatDirection {
+ FAT_DIR_FORWARD,
+ FAT_DIR_BACKWARD
+};
+typedef enum _FatDirection FatDirection;
+
+struct _FatOpContext {
+ PedFileSystem* old_fs;
+ PedFileSystem* new_fs;
+
+ PedSector frag_sectors; /* should equal old_fs and
+ new_fs's frag_sectors */
+
+ FatDirection start_move_dir;
+ FatFragment start_move_delta;
+
+ FatFragment buffer_offset;
+ FatFragment buffer_frags;
+ FatFragment* buffer_map;
+
+ FatFragment frags_duped;
+
+ FatFragment* remap;
+
+ FatCluster new_root_dir [32];
+};
+typedef struct _FatOpContext FatOpContext;
+
+extern FatOpContext* fat_op_context_new (PedFileSystem* new_fs,
+ PedFileSystem* old_fs);
+
+extern void fat_op_context_destroy (FatOpContext* ctx);
+
+extern FatFragment fat_op_context_map_static_fragment (const FatOpContext* ctx,
+ FatFragment frag);
+extern FatCluster fat_op_context_map_static_cluster (const FatOpContext* ctx,
+ FatCluster clst);
+
+extern FatFragment fat_op_context_map_fragment (const FatOpContext* ctx,
+ FatFragment frag);
+extern FatCluster fat_op_context_map_cluster (const FatOpContext* ctx,
+ FatCluster clst);
+
+extern int fat_op_context_create_initial_fat (FatOpContext* ctx);
+
+#endif /* PED_FAT_CONTEXT_H_INCLUDED */
diff --git a/parted-1.8.7/libparted/fs/fat/count.c b/parted-1.8.7/libparted/fs/fat/count.c
new file mode 100644
index 0000000..1909c45
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/fat/count.c
@@ -0,0 +1,412 @@
+/*
+ libparted
+ Copyright (C) 1998, 1999, 2000, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+
+ I can also be contacted at:
+
+ Andrew Clausen
+ 18 Shaw St
+ Ashwood, 3147
+ Victoria, Australia
+
+*/
+
+#include <config.h>
+#include "fat.h"
+#include "traverse.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifndef DISCOVER_ONLY
+
+#if 0
+/* extremely ugly hack: stick everything that obviously isn't an unmovable file
+ * in here. Note: DAT is a bit dubious. Unfortunately, it's used by the
+ * registry, so it'll be all over the place :-(
+ */
+static char* movable_extensions[] = {
+ "",
+ "1ST",
+ "AVI",
+ "BAK", "BAT", "BMP",
+ "CFG", "COM", "CSS",
+ "DAT", "DLL", "DOC", "DRV",
+ "EXE",
+ "FAQ", "FLT", "FON",
+ "GID", "GIF",
+ "HLP", "HTT", "HTM",
+ "ICO", "INI",
+ "JPG",
+ "LNK", "LOG",
+ "KBD",
+ "ME", "MID", "MSG",
+ "OCX", "OLD",
+ "PIF", "PNG", "PRV",
+ "RTF",
+ "SCR", "SYS",
+ "TMP", "TTF", "TXT",
+ "URL",
+ "WAV",
+ "VBX", "VOC", "VXD",
+ NULL
+};
+
+static char*
+get_extension (char* file_name)
+{
+ char* ext;
+
+ ext = strrchr (file_name, '.');
+ if (!ext)
+ return "";
+ if (strchr (ext, '\\'))
+ return "";
+ return ext + 1;
+}
+
+static int
+is_movable_system_file (char* file_name)
+{
+ char* ext = get_extension (file_name);
+ int i;
+
+ for (i = 0; movable_extensions [i]; i++) {
+ if (strcasecmp (ext, movable_extensions [i]) == 0)
+ return 1;
+ }
+
+ return 0;
+}
+#endif /* 0 */
+
+/*
+ prints out the sequence of clusters for a given file chain, beginning
+ at start_cluster.
+*/
+#ifdef PED_VERBOSE
+static void
+print_chain (PedFileSystem* fs, FatCluster start)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ FatCluster clst;
+ int this_row;
+
+ this_row = 0;
+ for (clst = start; !fat_table_is_eof (fs_info->fat, clst);
+ clst = fat_table_get (fs_info->fat, clst)) {
+ printf (" %d", (int) clst);
+ if (++this_row == 7) {
+ putchar ('\n');
+ this_row = 0;
+ }
+ }
+ putchar ('\n');
+}
+#endif /* PED_VERBOSE */
+
+static PedSector
+remainder_round_up (PedSector a, PedSector b)
+{
+ PedSector result;
+
+ result = a % b;
+ if (!result)
+ result = b;
+ return result;
+}
+
+/*
+ traverse the FAT for a file/directory, marking each entry's flag
+ to "flag".
+*/
+static int
+flag_traverse_fat (PedFileSystem* fs, const char* chain_name, FatCluster start,
+ FatClusterFlag flag, PedSector size)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ FatCluster clst;
+ FatCluster prev_clst;
+ int last_cluster_usage;
+ FatCluster chain_length = 0;
+
+ if (fat_table_is_eof (fs_info->fat, start)) {
+ if (ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_IGNORE_CANCEL,
+ _("Bad directory entry for %s: first cluster is the "
+ "end of file marker."),
+ chain_name)
+ != PED_EXCEPTION_IGNORE)
+ return 0;
+ }
+
+ for (prev_clst = clst = start; !fat_table_is_eof (fs_info->fat, clst);
+ prev_clst = clst, clst = fat_table_get (fs_info->fat, clst)) {
+ chain_length++;
+ if (!clst) {
+ ped_exception_throw (PED_EXCEPTION_FATAL,
+ PED_EXCEPTION_CANCEL,
+ _("Bad FAT: unterminated chain for %s. You "
+ "should run dosfsck or scandisk."),
+ chain_name);
+ return 0;
+ }
+
+ if (clst >= fs_info->fat->cluster_count + 2) {
+ ped_exception_throw (PED_EXCEPTION_FATAL,
+ PED_EXCEPTION_CANCEL,
+ _("Bad FAT: cluster %d outside file system "
+ "in chain for %s. You should run dosfsck "
+ "or scandisk."),
+ (int) clst, chain_name);
+ return 0;
+ }
+
+ if (fs_info->cluster_info [clst].flag != FAT_FLAG_FREE ) {
+ ped_exception_throw (PED_EXCEPTION_FATAL,
+ PED_EXCEPTION_CANCEL,
+ _("Bad FAT: cluster %d is cross-linked for "
+ "%s. You should run dosfsck or scandisk."),
+ (int) clst, chain_name);
+ return 0;
+ }
+
+ if (flag == FAT_FLAG_DIRECTORY)
+ fs_info->total_dir_clusters++;
+
+ fs_info->cluster_info [clst].flag = flag;
+ fs_info->cluster_info [clst].units_used = 0; /* 0 == 64 */
+ }
+
+ if (size
+ && chain_length
+ != ped_div_round_up (size, fs_info->cluster_sectors)) {
+ if (ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_IGNORE_CANCEL,
+ _("%s is %dk, but it has %d clusters (%dk)."),
+ chain_name,
+ (int) size / 2,
+ (int) chain_length,
+ (int) chain_length * fs_info->cluster_sectors / 2)
+ != PED_EXCEPTION_IGNORE)
+ return 0;
+ }
+
+ last_cluster_usage
+ = ped_div_round_up (64 * remainder_round_up (size,
+ fs_info->cluster_sectors),
+ fs_info->cluster_sectors);
+
+ fs_info->cluster_info [prev_clst].units_used = last_cluster_usage;
+
+ return 1;
+}
+
+/*
+ recursively traverses a directory, flagging all clusters in the process.
+ It frees the traverse_info structure before returning.
+*/
+static int
+flag_traverse_dir (FatTraverseInfo* trav_info) {
+ PedFileSystem* fs = trav_info->fs;
+ FatDirEntry* this_entry;
+ FatTraverseInfo* subdir_trav_info;
+ char file_name [512];
+ char* file_name_start;
+ FatCluster first_cluster;
+ PedSector size;
+
+ PED_ASSERT (trav_info != NULL, return 0);
+
+ strcpy (file_name, trav_info->dir_name);
+ file_name_start = file_name + strlen (file_name);
+
+ while ( (this_entry = fat_traverse_next_dir_entry (trav_info)) ) {
+ if (fat_dir_entry_is_null_term (this_entry))
+ break;
+ if (!fat_dir_entry_has_first_cluster (this_entry, fs))
+ continue;
+ if (this_entry->name [0] == '.')
+ continue; /* skip . and .. entries */
+
+ fat_dir_entry_get_name (this_entry, file_name_start);
+ first_cluster = fat_dir_entry_get_first_cluster(this_entry, fs);
+ size = ped_div_round_up (fat_dir_entry_get_length (this_entry),
+ 512);
+
+#ifdef PED_VERBOSE
+ printf ("%s: ", file_name);
+ print_chain (fs, first_cluster);
+#endif
+
+#if 0
+ if (fat_dir_entry_is_system_file (this_entry)
+ && !is_movable_system_file (file_name)) {
+ PedExceptionOption ex_status;
+ ex_status = ped_exception_throw (
+ PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_IGNORE_CANCEL,
+ _("The file %s is marked as a system file. "
+ "This means moving it could cause some "
+ "programs to stop working."),
+ file_name);
+
+ switch (ex_status) {
+ case PED_EXCEPTION_CANCEL:
+ return 0;
+
+ case PED_EXCEPTION_UNHANDLED:
+ ped_exception_catch ();
+ case PED_EXCEPTION_IGNORE:
+ }
+ }
+#endif /* 0 */
+
+ if (fat_dir_entry_is_directory (this_entry)) {
+ if (!flag_traverse_fat (fs, file_name, first_cluster,
+ FAT_FLAG_DIRECTORY, size))
+ return 0;
+
+ subdir_trav_info = fat_traverse_directory (trav_info,
+ this_entry);
+ if (!subdir_trav_info)
+ return 0;
+ if (!flag_traverse_dir (subdir_trav_info))
+ return 0;
+ } else if (fat_dir_entry_is_file (this_entry)) {
+ if (!flag_traverse_fat (fs, file_name, first_cluster,
+ FAT_FLAG_FILE, size))
+ return 0;
+ }
+ }
+
+ fat_traverse_complete (trav_info);
+ return 1;
+}
+
+static void
+_mark_bad_clusters (PedFileSystem* fs)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ FatCluster cluster;
+
+ for (cluster = 2; cluster < fs_info->cluster_count + 2; cluster++) {
+ if (fat_table_is_bad (fs_info->fat, cluster))
+ fs_info->cluster_info [cluster].flag = FAT_FLAG_BAD;
+ }
+}
+
+/*
+ fills in cluster_info. Each FAT entry (= cluster) is flagged as either
+ FAT_FLAG_FREE, FAT_FLAG_FILE or FAT_FLAG_DIRECTORY.
+
+ Also, the fraction of each cluster (x/64) is recorded
+*/
+int
+fat_collect_cluster_info (PedFileSystem* fs) {
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ FatTraverseInfo* trav_info;
+
+ /* set all clusters to unused as a default */
+ memset (fs_info->cluster_info, 0, fs_info->fat->cluster_count + 2);
+ fs_info->total_dir_clusters = 0;
+
+ if (fs_info->fat_type == FAT_TYPE_FAT32) {
+ trav_info = fat_traverse_begin (fs, fs_info->root_cluster,
+ "\\");
+ if (!flag_traverse_dir (trav_info))
+ return 0;
+ if (!flag_traverse_fat (fs, "\\", fs_info->root_cluster,
+ FAT_FLAG_DIRECTORY, 0))
+ return 0;
+ } else {
+ trav_info = fat_traverse_begin (fs, FAT_ROOT, "\\");
+ if (!flag_traverse_dir (trav_info))
+ return 0;
+ }
+
+ _mark_bad_clusters (fs);
+ return 1;
+}
+
+FatClusterFlag
+fat_get_cluster_flag (PedFileSystem* fs, FatCluster cluster)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+
+ return fs_info->cluster_info [cluster].flag;
+}
+
+PedSector
+fat_get_cluster_usage (PedFileSystem* fs, FatCluster cluster)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ int fraction;
+
+ if (fs_info->cluster_info [cluster].flag == FAT_FLAG_FREE)
+ return 0;
+
+ fraction = fs_info->cluster_info [cluster].units_used;
+ if (fraction == 0)
+ fraction = 64;
+
+ return fraction * fs_info->cluster_sectors / 64;
+}
+
+FatClusterFlag
+fat_get_fragment_flag (PedFileSystem* fs, FatFragment frag)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ FatCluster cluster = fat_frag_to_cluster (fs, frag);
+ FatFragment offset = frag % fs_info->cluster_frags;
+ FatFragment last_frag_used;
+ FatClusterFlag flag;
+
+ PED_ASSERT (cluster >= 2 && cluster < fs_info->cluster_count + 2,
+ return 0);
+
+ flag = fat_get_cluster_flag (fs, cluster);
+ if (flag != FAT_FLAG_FILE && flag != FAT_FLAG_DIRECTORY)
+ return flag;
+ last_frag_used = (fat_get_cluster_usage (fs, cluster) - 1)
+ / fs_info->frag_sectors;
+ if (offset > last_frag_used)
+ return FAT_FLAG_FREE;
+ else
+ return flag;
+}
+
+int
+fat_is_fragment_active (PedFileSystem* fs, FatFragment frag)
+{
+ switch (fat_get_fragment_flag (fs, frag)) {
+ case FAT_FLAG_FREE:
+ case FAT_FLAG_BAD:
+ return 0;
+
+ case FAT_FLAG_FILE:
+ case FAT_FLAG_DIRECTORY:
+ return 1;
+ }
+ return 0;
+}
+
+#endif /* !DISCOVER_ONLY */
+
diff --git a/parted-1.8.7/libparted/fs/fat/count.h b/parted-1.8.7/libparted/fs/fat/count.h
new file mode 100644
index 0000000..8099011
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/fat/count.h
@@ -0,0 +1,53 @@
+/*
+ libparted
+ Copyright (C) 1999, 2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+
+ I can also be contacted at:
+
+ Andrew Clausen
+ 18 Shaw St
+ Ashwood, 3147
+ Victoria, Australia
+*/
+
+#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;
+} fat16;
+
+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/parted-1.8.7/libparted/fs/fat/fat.c b/parted-1.8.7/libparted/fs/fat/fat.c
new file mode 100644
index 0000000..ebf023d
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/fat/fat.c
@@ -0,0 +1,888 @@
+/*
+ libparted
+ Copyright (C) 1998, 1999, 2000, 2001, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#include <config.h>
+#include <string.h>
+#include <uuid/uuid.h>
+
+#include "fat.h"
+#include "calc.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:
+ ped_free (fs->type_specific);
+error_free_fs:
+ ped_free (fs);
+error:
+ return NULL;
+}
+
+/* Requires the boot sector to be analysed */
+int
+fat_alloc_buffers (PedFileSystem* fs)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+
+ fs_info->buffer_sectors = BUFFER_SIZE;
+ fs_info->buffer = ped_malloc (fs_info->buffer_sectors * 512);
+ if (!fs_info->buffer)
+ goto error;
+
+ fs_info->cluster_info = ped_malloc (fs_info->cluster_count + 2);
+ if (!fs_info->cluster_info)
+ goto error_free_buffer;
+
+ return 1;
+
+error_free_buffer:
+ ped_free (fs_info->buffer);
+error:
+ return 0;
+};
+
+void
+fat_free_buffers (PedFileSystem* fs)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+
+ ped_free (fs_info->cluster_info);
+ ped_free (fs_info->buffer);
+}
+
+void
+fat_free (PedFileSystem* fs)
+{
+ ped_geometry_destroy (fs->geom);
+ ped_free (fs->type_specific);
+ ped_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,
+ return 0);
+
+ 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;
+}
+
+#ifndef DISCOVER_ONLY
+int
+fat_clobber (PedGeometry* geom)
+{
+ FatBootSector boot_sector;
+
+ if (!fat_boot_sector_read (&boot_sector, geom))
+ return 1;
+
+ boot_sector.system_id[0] = 0;
+ boot_sector.boot_sign = 0;
+ if (boot_sector.u.fat16.fat_name[0] == 'F')
+ boot_sector.u.fat16.fat_name[0] = 0;
+ if (boot_sector.u.fat32.fat_name[0] == 'F')
+ boot_sector.u.fat32.fat_name[0] = 0;
+
+ return ped_geometry_write (geom, &boot_sector, 0, 1);
+}
+
+static int
+_init_fats (PedFileSystem* fs)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ FatCluster table_size;
+
+ table_size = fs_info->fat_sectors * 512
+ / fat_table_entry_size (fs_info->fat_type);
+ fs_info->fat = fat_table_new (fs_info->fat_type, table_size);
+ if (!fs_info->fat)
+ goto error;
+
+ if (!fat_table_read (fs_info->fat, fs, 0))
+ goto error_free_fat;
+
+ return 1;
+
+error_free_fat:
+ fat_table_destroy (fs_info->fat);
+error:
+ return 0;
+}
+
+PedFileSystem*
+fat_open (PedGeometry* geom)
+{
+ PedFileSystem* fs;
+ FatSpecific* fs_info;
+
+ 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;
+ fs->type = (fs_info->fat_type == FAT_TYPE_FAT16)
+ ? &fat16_type
+ : &fat32_type;
+ if (fs_info->fat_type == FAT_TYPE_FAT32) {
+ if (!fat_info_sector_read (&fs_info->info_sector, fs))
+ goto error_free_fs;
+ }
+
+ if (!_init_fats (fs))
+ goto error_free_fs;
+ if (!fat_alloc_buffers (fs))
+ goto error_free_fat_table;
+ if (!fat_collect_cluster_info (fs))
+ goto error_free_buffers;
+
+ return fs;
+
+error_free_buffers:
+ fat_free_buffers (fs);
+error_free_fat_table:
+ fat_table_destroy (fs_info->fat);
+error_free_fs:
+ fat_free (fs);
+error:
+ return NULL;
+}
+
+static int
+fat_root_dir_clear (PedFileSystem* fs)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ memset (fs_info->buffer, 0, 512 * fs_info->root_dir_sector_count);
+ return ped_geometry_write (fs->geom, fs_info->buffer,
+ fs_info->root_dir_offset,
+ fs_info->root_dir_sector_count);
+}
+
+/* hack: use the ext2 uuid library to generate a reasonably random (hopefully
+ * with /dev/random) number. Unfortunately, we can only use 4 bytes of it
+ */
+static uint32_t
+_gen_new_serial_number ()
+{
+ uuid_t uuid;
+
+ uuid_generate (uuid);
+ return * (uint32_t*) &uuid [0];
+}
+
+PedFileSystem*
+fat_create (PedGeometry* geom, FatType fat_type, PedTimer* timer)
+{
+ PedFileSystem* fs;
+ FatSpecific* fs_info;
+ FatCluster table_size;
+
+ fs = fat_alloc (geom);
+ if (!fs)
+ goto error;
+ fs_info = (FatSpecific*) fs->type_specific;
+
+ fs_info->logical_sector_size = 1;
+ fs_info->sectors_per_track = geom->dev->bios_geom.sectors;
+ fs_info->heads = geom->dev->bios_geom.heads;
+ fs_info->sector_count = fs->geom->length;
+ fs_info->fat_table_count = 2;
+/* some initial values, to be changed later */
+ fs_info->root_dir_sector_count = FAT_ROOT_DIR_ENTRY_COUNT
+ / (512 / sizeof (FatDirEntry));
+ fs_info->root_dir_entry_count = FAT_ROOT_DIR_ENTRY_COUNT;
+
+ fs_info->fat_type = fat_type;
+ if (!fat_calc_sizes (fs->geom->length, 0,
+ fs_info->fat_type,
+ fs_info->root_dir_sector_count,
+ &fs_info->cluster_sectors,
+ &fs_info->cluster_count,
+ &fs_info->fat_sectors)) {
+ ped_exception_throw (PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Partition too big/small for a %s file system."),
+ (fat_type == FAT_TYPE_FAT16)
+ ? fat16_type.name
+ : fat32_type.name);
+ goto error_free_fs;
+ }
+
+ fs_info->cluster_size = fs_info->cluster_sectors * 512;
+
+ fs_info->fat_offset = fat_min_reserved_sector_count (fs_info->fat_type);
+ fs_info->dir_entries_per_cluster
+ = fs_info->cluster_size / sizeof (FatDirEntry);
+
+ if (fs_info->fat_type == FAT_TYPE_FAT16) {
+ /* FAT16 */
+ fs->type = &fat16_type;
+
+ if (fs_info->cluster_count
+ > fat_max_cluster_count (fs_info->fat_type)) {
+ fs_info->cluster_count
+ = fat_max_cluster_count (fs_info->fat_type);
+ }
+
+ fs_info->root_dir_sector_count
+ = FAT_ROOT_DIR_ENTRY_COUNT
+ / (512 / sizeof (FatDirEntry));
+ fs_info->root_dir_entry_count = FAT_ROOT_DIR_ENTRY_COUNT;
+ fs_info->root_dir_offset
+ = fs_info->fat_offset
+ + fs_info->fat_sectors * fs_info->fat_table_count;
+ fs_info->cluster_offset
+ = fs_info->root_dir_offset
+ + fs_info->root_dir_sector_count;
+ } else {
+ /* FAT32 */
+ fs->type = &fat32_type;
+
+ fs_info->info_sector_offset = 1;
+ fs_info->boot_sector_backup_offset = 6;
+
+ fs_info->root_dir_sector_count = 0;
+ fs_info->root_dir_entry_count = 0;
+ fs_info->root_dir_offset = 0;
+
+ fs_info->cluster_offset
+ = fs_info->fat_offset
+ + fs_info->fat_sectors * fs_info->fat_table_count;
+ }
+
+ table_size = fs_info->fat_sectors * 512
+ / fat_table_entry_size (fs_info->fat_type);
+ fs_info->fat = fat_table_new (fs_info->fat_type, table_size);
+ if (!fs_info->fat)
+ goto error_free_fs;
+ fat_table_set_cluster_count (fs_info->fat, fs_info->cluster_count);
+ if (!fat_alloc_buffers (fs))
+ goto error_free_fat_table;
+
+ if (fs_info->fat_type == FAT_TYPE_FAT32) {
+ fs_info->root_cluster
+ = fat_table_alloc_cluster (fs_info->fat);
+ fat_table_set_eof (fs_info->fat, fs_info->root_cluster);
+ memset (fs_info->buffer, 0, fs_info->cluster_size);
+ if (!fat_write_cluster (fs, fs_info->buffer,
+ fs_info->root_cluster))
+ return 0;
+ }
+
+ fs_info->serial_number = _gen_new_serial_number ();
+
+ if (!fat_boot_sector_set_boot_code (&fs_info->boot_sector))
+ goto error_free_buffers;
+ if (!fat_boot_sector_generate (&fs_info->boot_sector, fs))
+ goto error_free_buffers;
+ if (!fat_boot_sector_write (&fs_info->boot_sector, fs))
+ goto error_free_buffers;
+ if (fs_info->fat_type == FAT_TYPE_FAT32) {
+ if (!fat_info_sector_generate (&fs_info->info_sector, fs))
+ goto error_free_buffers;
+ if (!fat_info_sector_write (&fs_info->info_sector, fs))
+ goto error_free_buffers;
+ }
+
+ if (!fat_table_write_all (fs_info->fat, fs))
+ goto error_free_buffers;
+
+ if (fs_info->fat_type == FAT_TYPE_FAT16) {
+ if (!fat_root_dir_clear (fs))
+ goto error_free_buffers;
+ }
+
+ return fs;
+
+error_free_buffers:
+ fat_free_buffers (fs);
+error_free_fat_table:
+ fat_table_destroy (fs_info->fat);
+error_free_fs:
+ fat_free (fs);
+error:
+ return NULL;
+}
+
+PedFileSystem*
+fat_create_fat16 (PedGeometry* geom, PedTimer* timer)
+{
+ return fat_create (geom, FAT_TYPE_FAT16, timer);
+}
+
+PedFileSystem*
+fat_create_fat32 (PedGeometry* geom, PedTimer* timer)
+{
+ return fat_create (geom, FAT_TYPE_FAT32, timer);
+}
+
+int
+fat_close (PedFileSystem* fs)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+
+ fat_free_buffers (fs);
+ fat_table_destroy (fs_info->fat);
+ fat_free (fs);
+ return 1;
+}
+
+/* Hack: just resize the file system outside of its boundaries! */
+PedFileSystem*
+fat_copy (const PedFileSystem* fs, PedGeometry* geom, PedTimer* timer)
+{
+ PedFileSystem* new_fs;
+
+ new_fs = ped_file_system_open (fs->geom);
+ if (!new_fs)
+ goto error;
+ if (!ped_file_system_resize (new_fs, geom, timer))
+ goto error_close_new_fs;
+ return new_fs;
+
+error_close_new_fs:
+ ped_file_system_close (new_fs);
+error:
+ return 0;
+}
+
+static int
+_compare_fats (PedFileSystem* fs)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ FatTable* table_copy;
+ FatCluster table_size;
+ int i;
+
+ table_size = fs_info->fat_sectors * 512
+ / fat_table_entry_size (fs_info->fat_type);
+
+ table_copy = fat_table_new (fs_info->fat_type, table_size);
+ if (!table_copy)
+ goto error;
+
+ for (i = 1; i < fs_info->fat_table_count; i++) {
+ if (!fat_table_read (table_copy, fs, i))
+ goto error_free_table_copy;
+ if (!fat_table_compare (fs_info->fat, table_copy)) {
+ if (ped_exception_throw (PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_IGNORE_CANCEL,
+ _("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."))
+ != PED_EXCEPTION_IGNORE)
+ goto error_free_table_copy;
+ }
+ }
+
+ fat_table_destroy (table_copy);
+ return 1;
+
+error_free_table_copy:
+ fat_table_destroy (table_copy);
+error:
+ return 0;
+}
+
+int
+fat_check (PedFileSystem* fs, PedTimer* timer)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ PedSector cluster_sectors;
+ FatCluster cluster_count;
+ PedSector fat_sectors;
+ PedSector align_sectors;
+ FatCluster info_free_clusters;
+
+ align_sectors = fs_info->fat_offset
+ - fat_min_reserved_sector_count (fs_info->fat_type);
+
+ if (!fat_calc_sizes (fs->geom->length,
+ align_sectors,
+ fs_info->fat_type,
+ fs_info->root_dir_sector_count,
+ &cluster_sectors,
+ &cluster_count,
+ &fat_sectors)) {
+ if (ped_exception_throw (PED_EXCEPTION_BUG,
+ PED_EXCEPTION_IGNORE_CANCEL,
+ _("There are no possible configurations for this FAT "
+ "type."))
+ != PED_EXCEPTION_IGNORE)
+ goto error;
+ }
+
+ if (fs_info->fat_type == FAT_TYPE_FAT16) {
+ if (cluster_sectors != fs_info->cluster_sectors
+ || cluster_count != fs_info->cluster_count
+ || fat_sectors != fs_info->fat_sectors) {
+ if (ped_exception_throw (PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_IGNORE_CANCEL,
+ _("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)."),
+ (int) fs_info->cluster_sectors / 2,
+ (int) cluster_sectors / 2,
+ (int) fs_info->cluster_count,
+ (int) cluster_count,
+ (int) fs_info->fat_sectors,
+ (int) fat_sectors)
+ != PED_EXCEPTION_IGNORE)
+ goto error;
+ }
+ }
+
+ if (fs_info->fat_type == FAT_TYPE_FAT32) {
+ info_free_clusters
+ = PED_LE32_TO_CPU (fs_info->info_sector.free_clusters);
+ if (info_free_clusters != (FatCluster) -1
+ && info_free_clusters != fs_info->fat->free_cluster_count) {
+ if (ped_exception_throw (PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_IGNORE_CANCEL,
+ _("File system is reporting the free space as "
+ "%d clusters, not %d clusters."),
+ info_free_clusters,
+ fs_info->fat->free_cluster_count)
+ != PED_EXCEPTION_IGNORE)
+ goto error;
+ }
+ }
+
+ if (!_compare_fats (fs))
+ goto error;
+
+ fs->checked = 1;
+ return 1; /* existence of fs implies consistency ;-) */
+
+error:
+ return 0;
+}
+
+/* Calculates how much space there will be in clusters in:
+ * old_fs intersect the-new-fs
+ */
+static PedSector
+_calc_resize_data_size (
+ const PedFileSystem* old_fs,
+ PedSector new_cluster_sectors,
+ FatCluster new_cluster_count,
+ PedSector new_fat_size)
+{
+ FatSpecific* old_fs_info = FAT_SPECIFIC (old_fs);
+ PedSector fat_size_delta;
+
+ fat_size_delta = old_fs_info->fat_sectors - new_fat_size;
+ return new_cluster_sectors * new_cluster_count - fat_size_delta * 2;
+}
+
+static int
+_test_resize_size (const PedFileSystem* fs,
+ PedSector length, PedSector min_data_size)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ PedGeometry geom;
+ PedSector _cluster_sectors;
+ FatCluster _cluster_count;
+ PedSector _fat_size;
+
+ ped_geometry_init (&geom, fs->geom->dev, fs->geom->start, length);
+
+ if (fat_calc_resize_sizes (
+ &geom,
+ fs_info->cluster_sectors,
+ FAT_TYPE_FAT16,
+ fs_info->root_dir_sector_count,
+ fs_info->cluster_sectors,
+ &_cluster_sectors,
+ &_cluster_count,
+ &_fat_size)
+ && _calc_resize_data_size (fs, _cluster_sectors, _cluster_count,
+ _fat_size)
+ >= min_data_size)
+ return 1;
+
+ if (fat_calc_resize_sizes (
+ &geom,
+ fs_info->cluster_sectors,
+ FAT_TYPE_FAT32,
+ 0,
+ fs_info->cluster_sectors,
+ &_cluster_sectors,
+ &_cluster_count,
+ &_fat_size)
+ && _calc_resize_data_size (fs, _cluster_sectors, _cluster_count,
+ _fat_size)
+ >= min_data_size)
+ return 1;
+
+ return 0;
+}
+
+/* does a binary search (!) for the mininum size. Too hard to compute directly
+ * (see calc_sizes() for why!)
+ */
+static PedSector
+_get_min_resize_size (const PedFileSystem* fs, PedSector min_data_size)
+{
+ PedSector min_length = 0;
+ PedSector max_length = fs->geom->length;
+ PedSector length;
+
+ while (min_length < max_length - 1) {
+ length = (min_length + max_length) / 2;
+ if (_test_resize_size (fs, length, min_data_size))
+ max_length = length;
+ else
+ min_length = length;
+ }
+
+/* adds a bit of leeway (64 sectors), for resolving extra issues, like root
+ * directory allocation, that aren't covered here.
+ */
+ return max_length + 64;
+}
+
+PedConstraint*
+fat_get_copy_constraint (const PedFileSystem* fs, const PedDevice* dev)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ PedGeometry full_dev;
+ PedSector min_cluster_count;
+ FatCluster used_clusters;
+ PedSector min_data_size;
+
+ if (!ped_geometry_init (&full_dev, dev, 0, dev->length - 1))
+ return NULL;
+
+ used_clusters = fs_info->fat->cluster_count
+ - fs_info->fat->free_cluster_count;
+ min_cluster_count = used_clusters + fs_info->total_dir_clusters;
+ min_data_size = min_cluster_count * fs_info->cluster_sectors;
+
+ return ped_constraint_new (ped_alignment_any, ped_alignment_any,
+ &full_dev, &full_dev,
+ _get_min_resize_size (fs, min_data_size),
+ dev->length);
+}
+
+PedConstraint*
+fat_get_resize_constraint (const PedFileSystem* fs)
+{
+ return fat_get_copy_constraint (fs, fs->geom->dev);
+}
+
+/* FIXME: fat_calc_sizes() needs to say "too big" or "too small", or
+ * something. This is a really difficult (maths) problem to do
+ * nicely...
+ * So, this algorithm works if dev->length / 2 is a valid fat_type
+ * size. (Which is how I got the magic numbers below)
+ */
+#if 0
+/* returns: -1 too small, 0 ok, 1 too big */
+static int
+_test_create_size (PedSector length, FatType fat_type,
+ PedSector cluster_sectors, PedSector cluster_count)
+{
+ PedSector rootdir_sectors;
+ PedSector _cluster_sectors;
+ FatCluster _cluster_count;
+ PedSector _fat_size;
+
+ rootdir_sectors = (fat_type == FAT_TYPE_FAT16) ? 16 : 0;
+
+ if (!fat_calc_sizes (length, 0, fat_type, rootdir_sectors,
+ &_cluster_sectors, &_cluster_count, &_fat_size))
+ return -1; // XXX: doesn't work... can't see a better way!
+
+ if (_cluster_sectors < cluster_sectors)
+ return -1;
+ if (_cluster_sectors > cluster_sectors)
+ return 1;
+
+ if (_cluster_count < cluster_count)
+ return -1;
+ if (_cluster_count > cluster_count)
+ return 1;
+
+ return 0;
+}
+
+static PedSector
+_get_create_size (PedSector upper_bound, FatType fat_type,
+ PedSector cluster_sectors, FatCluster cluster_count)
+{
+ PedSector min_length = 0;
+ PedSector max_length = upper_bound;
+ PedSector length;
+
+ while (1) {
+ length = (min_length + max_length) / 2;
+ switch (_test_create_size (length, fat_type, cluster_sectors,
+ cluster_count)) {
+ case -1: min_length = length; break;
+ case 0: return length;
+ case 1: max_length = length; break;
+ }
+ /* hack... won't always be able to get max cluster count
+ * with max cluster size, etc. */
+ if (max_length - min_length == 1)
+ return min_length;
+ }
+
+ return 0; /* shut gcc up */
+}
+#endif
+
+PedConstraint*
+fat_get_create_constraint_fat16 (const PedDevice* dev)
+{
+ PedGeometry full_dev;
+ PedSector min_size;
+ PedSector max_size;
+
+ if (!ped_geometry_init (&full_dev, dev, 0, dev->length - 1))
+ return NULL;
+
+#if 0
+ min_size = _get_create_size (dev->length, FAT_TYPE_FAT16,
+ fat_min_cluster_size (FAT_TYPE_FAT16),
+ fat_min_cluster_count (FAT_TYPE_FAT16));
+ max_size = _get_create_size (dev->length, FAT_TYPE_FAT16,
+ fat_max_cluster_size (FAT_TYPE_FAT16),
+ fat_max_cluster_count (FAT_TYPE_FAT16));
+ if (!min_size)
+ return NULL;
+#else
+ min_size = 65794;
+ max_size = 2097153;
+#endif
+
+ return ped_constraint_new (
+ ped_alignment_any, ped_alignment_any,
+ &full_dev, &full_dev,
+ min_size, max_size);
+}
+
+PedConstraint*
+fat_get_create_constraint_fat32 (const PedDevice* dev)
+{
+ PedGeometry full_dev;
+ PedSector min_size;
+
+ if (!ped_geometry_init (&full_dev, dev, 0, dev->length - 1))
+ return NULL;
+
+#if 0
+ min_size = _get_create_size (dev->length, FAT_TYPE_FAT32,
+ fat_min_cluster_size (FAT_TYPE_FAT32),
+ fat_min_cluster_count (FAT_TYPE_FAT32));
+ if (!min_size)
+ return NULL;
+#else
+ min_size = 525224;
+#endif
+
+ return ped_constraint_new (
+ ped_alignment_any, ped_alignment_any,
+ &full_dev, &full_dev,
+ min_size, dev->length);
+}
+#endif /* !DISCOVER_ONLY */
+
+static PedFileSystemOps fat16_ops = {
+ probe: fat_probe_fat16,
+#ifndef DISCOVER_ONLY
+ clobber: fat_clobber,
+ open: fat_open,
+ create: fat_create_fat16,
+ close: fat_close,
+ check: fat_check,
+ resize: fat_resize,
+ copy: fat_copy,
+ get_create_constraint: fat_get_create_constraint_fat16,
+ get_resize_constraint: fat_get_resize_constraint,
+ get_copy_constraint: fat_get_copy_constraint,
+#else /* !DISCOVER_ONLY */
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ resize: NULL,
+ copy: NULL,
+ get_create_constraint: NULL,
+ get_resize_constraint: NULL,
+ get_copy_constraint: NULL,
+#endif /* !DISCOVER_ONLY */
+};
+
+static PedFileSystemOps fat32_ops = {
+ probe: fat_probe_fat32,
+#ifndef DISCOVER_ONLY
+ clobber: fat_clobber,
+ open: fat_open,
+ create: fat_create_fat32,
+ close: fat_close,
+ check: fat_check,
+ resize: fat_resize,
+ copy: fat_copy,
+ get_create_constraint: fat_get_create_constraint_fat32,
+ get_resize_constraint: fat_get_resize_constraint,
+ get_copy_constraint: fat_get_copy_constraint,
+#else /* !DISCOVER_ONLY */
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ resize: NULL,
+ copy: NULL,
+ get_create_constraint: NULL,
+ get_resize_constraint: NULL,
+ get_copy_constraint: NULL,
+#endif /* !DISCOVER_ONLY */
+};
+
+#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/parted-1.8.7/libparted/fs/fat/fat.h b/parted-1.8.7/libparted/fs/fat/fat.h
new file mode 100644
index 0000000..f101328
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/fat/fat.h
@@ -0,0 +1,161 @@
+/*
+ libparted
+ Copyright (C) 1998, 1999, 2000, 2001 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef FAT_H_INCLUDED
+#define FAT_H_INCLUDED
+
+#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 <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;
+
+/* FIXME: YUCKY */
+#include "table.h"
+#include "bootsector.h"
+#include "context.h"
+#include "fatio.h"
+#include "traverse.h"
+#include "calc.h"
+#include "count.h"
+#include "clstdup.h"
+
+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/parted-1.8.7/libparted/fs/fat/fatio.c b/parted-1.8.7/libparted/fs/fat/fatio.c
new file mode 100644
index 0000000..98006dc
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/fat/fatio.c
@@ -0,0 +1,152 @@
+/*
+ libparted
+ Copyright (C) 1998, 1999, 2000, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#include <config.h>
+#include "fat.h"
+#include "fatio.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <ctype.h>
+
+#ifndef DISCOVER_ONLY
+
+int
+fat_read_fragments (PedFileSystem* fs, char* buf, FatFragment frag,
+ FatFragment count)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ PedSector sector = fat_frag_to_sector (fs, frag);
+ PedSector sector_count = count * fs_info->frag_sectors;
+
+ PED_ASSERT (frag >= 0 && frag < fs_info->frag_count, return 0);
+
+ return ped_geometry_read (fs->geom, buf, sector, sector_count);
+}
+
+int
+fat_read_fragment (PedFileSystem* fs, char* buf, FatFragment frag)
+{
+ return fat_read_fragments (fs, buf, frag, 1);
+}
+
+int
+fat_write_fragments (PedFileSystem* fs, char* buf, FatFragment frag,
+ FatFragment count)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ PedSector sector = fat_frag_to_sector (fs, frag);
+ PedSector sector_count = count * fs_info->frag_sectors;
+
+ PED_ASSERT (frag >= 0 && frag < fs_info->frag_count, return 0);
+
+ return ped_geometry_write (fs->geom, buf, sector, sector_count);
+}
+
+int
+fat_write_fragment (PedFileSystem* fs, char* buf, FatFragment frag)
+{
+ return fat_write_fragments (fs, buf, frag, 1);
+}
+
+int
+fat_write_sync_fragments (PedFileSystem* fs, char* buf, FatFragment frag,
+ FatFragment count)
+{
+ if (!fat_write_fragments (fs, buf, frag, count))
+ return 0;
+ if (!ped_geometry_sync (fs->geom))
+ return 0;
+ return 1;
+}
+
+int
+fat_write_sync_fragment (PedFileSystem* fs, char* buf, FatFragment frag)
+{
+ return fat_write_sync_fragments (fs, buf, frag, 1);
+}
+
+int
+fat_read_clusters (PedFileSystem* fs, char *buf, FatCluster cluster,
+ FatCluster count)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ PedSector sector = fat_cluster_to_sector (fs, cluster);
+ PedSector sector_count = count * fs_info->cluster_sectors;
+
+ PED_ASSERT (cluster >= 2
+ && cluster + count - 1 < fs_info->cluster_count + 2,
+ return 0);
+
+ return ped_geometry_read (fs->geom, buf, sector, sector_count);
+}
+
+int
+fat_read_cluster (PedFileSystem* fs, char *buf, FatCluster cluster)
+{
+ return fat_read_clusters (fs, buf, cluster, 1);
+}
+
+int
+fat_write_clusters (PedFileSystem* fs, char *buf, FatCluster cluster,
+ FatCluster count)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ PedSector sector = fat_cluster_to_sector (fs, cluster);
+ PedSector sector_count = count * fs_info->cluster_sectors;
+
+ PED_ASSERT (cluster >= 2
+ && cluster + count - 1 < fs_info->cluster_count + 2,
+ return 0);
+
+ return ped_geometry_write (fs->geom, buf, sector, sector_count);
+}
+
+int
+fat_write_cluster (PedFileSystem* fs, char *buf, FatCluster cluster)
+{
+ return fat_write_clusters (fs, buf, cluster, 1);
+}
+
+int
+fat_write_sync_clusters (PedFileSystem* fs, char *buf, FatCluster cluster,
+ FatCluster count)
+{
+ if (!fat_write_clusters (fs, buf, cluster, count))
+ return 0;
+ if (!ped_geometry_sync (fs->geom))
+ return 0;
+ return 1;
+}
+
+int
+fat_write_sync_cluster (PedFileSystem* fs, char *buf, FatCluster cluster)
+{
+ if (!fat_write_cluster (fs, buf, cluster))
+ return 0;
+ if (!ped_geometry_sync (fs->geom))
+ return 0;
+ return 1;
+}
+
+#endif /* !DISCOVER_ONLY */
diff --git a/parted-1.8.7/libparted/fs/fat/fatio.h b/parted-1.8.7/libparted/fs/fat/fatio.h
new file mode 100644
index 0000000..a37158a
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/fat/fatio.h
@@ -0,0 +1,49 @@
+/*
+ libparted
+ Copyright (C) 1998, 1999, 2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef FATIO_H_INCLUDED
+#define FATIO_H_INCLUDED
+
+#include "fat.h"
+
+extern int fat_read_fragments (PedFileSystem* fs, char* buf, FatFragment frag,
+ FatFragment count);
+extern int fat_write_fragments (PedFileSystem* fs, char* buf, FatFragment frag,
+ FatFragment count);
+extern int fat_write_sync_fragments (PedFileSystem* fs, char* buf,
+ FatFragment frag, FatFragment count);
+
+extern int fat_read_fragment (PedFileSystem* fs, char* buf, FatFragment frag);
+extern int fat_write_fragment (PedFileSystem* fs, char* buf, FatFragment frag);
+extern int fat_write_sync_fragment (PedFileSystem* fs, char* buf,
+ FatFragment frag);
+
+extern int fat_read_clusters (PedFileSystem* fs, char* buf, FatCluster cluster,
+ FatCluster count);
+extern int fat_write_clusters (PedFileSystem* fs, char* buf, FatCluster cluster,
+ FatCluster count);
+extern int fat_write_sync_clusters (PedFileSystem* fs, char* buf,
+ FatCluster cluster, FatCluster count);
+
+extern int fat_read_cluster (PedFileSystem* fs, char *buf, FatCluster cluster);
+extern int fat_write_cluster (PedFileSystem* fs, char *buf, FatCluster cluster);
+extern int fat_write_sync_cluster (PedFileSystem* fs, char *buf,
+ FatCluster cluster);
+
+#endif /* FATIO_H_INCLUDED */
diff --git a/parted-1.8.7/libparted/fs/fat/resize.c b/parted-1.8.7/libparted/fs/fat/resize.c
new file mode 100644
index 0000000..1fb1c8c
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/fat/resize.c
@@ -0,0 +1,878 @@
+/*
+ libparted
+ Copyright (C) 1998, 1999, 2000, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#include <config.h>
+#include "fat.h"
+#include "traverse.h"
+#include "count.h"
+#include "fatio.h"
+#include "calc.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+#include <errno.h>
+#include <ctype.h>
+#include <stdarg.h>
+#include <string.h>
+
+#ifndef DISCOVER_ONLY
+
+/* Recursively builds (i.e. makes consistent) the duplicated directory tree
+ * (leaving the original directory tree in tact)
+ */
+static int
+fat_construct_directory (FatOpContext* ctx, FatTraverseInfo* trav_info)
+{
+ FatTraverseInfo* sub_dir_info;
+ FatDirEntry* dir_entry;
+ FatCluster old_first_cluster;
+
+ while ( (dir_entry = fat_traverse_next_dir_entry (trav_info)) ) {
+ if (fat_dir_entry_is_null_term (dir_entry))
+ break;
+ if (!fat_dir_entry_has_first_cluster (dir_entry, ctx->old_fs))
+ continue;
+
+ fat_traverse_mark_dirty (trav_info);
+
+ old_first_cluster = fat_dir_entry_get_first_cluster (dir_entry,
+ ctx->old_fs);
+ fat_dir_entry_set_first_cluster (dir_entry, ctx->new_fs,
+ fat_op_context_map_cluster (ctx, old_first_cluster));
+
+ if (fat_dir_entry_is_directory (dir_entry)
+ && dir_entry->name [0] != '.') {
+ sub_dir_info
+ = fat_traverse_directory (trav_info, dir_entry);
+ if (!sub_dir_info)
+ return 0;
+ if (!fat_construct_directory (ctx, sub_dir_info))
+ return 0;
+ }
+ }
+ /* remove "stale" entries at the end */
+ while ((dir_entry = fat_traverse_next_dir_entry (trav_info))) {
+ memset (dir_entry, 0, sizeof (FatDirEntry));
+ fat_traverse_mark_dirty (trav_info);
+ }
+ fat_traverse_complete (trav_info);
+ return 1;
+}
+
+static int
+duplicate_legacy_root_dir (FatOpContext* ctx)
+{
+ FatSpecific* old_fs_info = FAT_SPECIFIC (ctx->old_fs);
+ FatSpecific* new_fs_info = FAT_SPECIFIC (ctx->new_fs);
+
+ PED_ASSERT (old_fs_info->root_dir_sector_count
+ == new_fs_info->root_dir_sector_count, return 0);
+
+ if (!ped_geometry_read (ctx->old_fs->geom, old_fs_info->buffer,
+ old_fs_info->root_dir_offset,
+ old_fs_info->root_dir_sector_count))
+ return 0;
+
+ if (!ped_geometry_write (ctx->new_fs->geom, old_fs_info->buffer,
+ new_fs_info->root_dir_offset,
+ new_fs_info->root_dir_sector_count))
+ return 0;
+
+ return 1;
+}
+
+/*
+ Constructs the new directory tree for legacy (FAT16) file systems.
+*/
+static int
+fat_construct_legacy_root (FatOpContext* ctx)
+{
+ FatTraverseInfo* trav_info;
+
+ if (!duplicate_legacy_root_dir (ctx))
+ return 0;
+ trav_info = fat_traverse_begin (ctx->new_fs, FAT_ROOT, "\\");
+ return fat_construct_directory (ctx, trav_info);
+}
+
+/*
+ Constructs the new directory tree for new (FAT32) file systems.
+*/
+static int
+fat_construct_root (FatOpContext* ctx)
+{
+ FatSpecific* new_fs_info = FAT_SPECIFIC (ctx->new_fs);
+ FatTraverseInfo* trav_info;
+
+ trav_info = fat_traverse_begin (ctx->new_fs, new_fs_info->root_cluster,
+ "\\");
+ fat_construct_directory (ctx, trav_info);
+ return 1;
+}
+
+/* Converts the root directory between FAT16 and FAT32. NOTE: this code
+ * can also do no conversion. I'm leaving fat_construct_directory(), because
+ * it's really pretty :-) It also leaves a higher chance of deleted file
+ * recovery, because it doesn't remove redundant entries. (We do this here,
+ * because brain-damaged FAT16 has an arbitary limit on root directory entries,
+ * so we save room)
+ */
+static int
+fat_convert_directory (FatOpContext* ctx, FatTraverseInfo* old_trav,
+ FatTraverseInfo* new_trav)
+{
+ FatTraverseInfo* sub_old_dir_trav;
+ FatTraverseInfo* sub_new_dir_trav;
+ FatDirEntry* new_dir_entry;
+ FatDirEntry* old_dir_entry;
+ FatCluster old_first_cluster;
+
+ while ( (old_dir_entry = fat_traverse_next_dir_entry (old_trav)) ) {
+ if (fat_dir_entry_is_null_term (old_dir_entry))
+ break;
+ if (!fat_dir_entry_is_active (old_dir_entry))
+ continue;
+
+ new_dir_entry = fat_traverse_next_dir_entry (new_trav);
+ if (!new_dir_entry) {
+ return ped_exception_throw (PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_IGNORE_CANCEL,
+ _("There's not enough room in the root "
+ "directory for all of the files. Either "
+ "cancel, or ignore to lose the files."))
+ == PED_EXCEPTION_IGNORE;
+ }
+
+ *new_dir_entry = *old_dir_entry;
+ fat_traverse_mark_dirty (new_trav);
+
+ if (!fat_dir_entry_has_first_cluster (old_dir_entry,
+ ctx->old_fs))
+ continue;
+
+ old_first_cluster = fat_dir_entry_get_first_cluster (
+ old_dir_entry, ctx->old_fs);
+ fat_dir_entry_set_first_cluster (new_dir_entry, ctx->new_fs,
+ fat_op_context_map_cluster (ctx, old_first_cluster));
+
+ if (fat_dir_entry_is_directory (old_dir_entry)
+ && old_dir_entry->name [0] != '.') {
+ sub_old_dir_trav
+ = fat_traverse_directory (old_trav, old_dir_entry);
+ sub_new_dir_trav
+ = fat_traverse_directory (new_trav, new_dir_entry);
+ if (!sub_old_dir_trav || !sub_new_dir_trav)
+ return 0;
+
+ if (!fat_convert_directory (ctx, sub_old_dir_trav,
+ sub_new_dir_trav))
+ return 0;
+ }
+ }
+
+ /* remove "stale" entries at the end, just in case there is some
+ * overlap
+ */
+ while ((new_dir_entry = fat_traverse_next_dir_entry (new_trav))) {
+ memset (new_dir_entry, 0, sizeof (FatDirEntry));
+ fat_traverse_mark_dirty (new_trav);
+ }
+
+ fat_traverse_complete (old_trav);
+ fat_traverse_complete (new_trav);
+ return 1;
+}
+
+static void
+clear_cluster (PedFileSystem* fs, FatCluster cluster)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+
+ memset (fs_info->buffer, 0, fs_info->cluster_size);
+ fat_write_cluster (fs, fs_info->buffer, cluster);
+}
+
+/* This MUST be called BEFORE the fat_construct_new_fat(), because cluster
+ * allocation depend on the old FAT. The reason is, old clusters may
+ * still be needed during the resize, (particularly clusters in the directory
+ * tree) even if they will be discarded later.
+ */
+static int
+alloc_root_dir (FatOpContext* ctx)
+{
+ FatSpecific* old_fs_info = FAT_SPECIFIC (ctx->old_fs);
+ FatSpecific* new_fs_info = FAT_SPECIFIC (ctx->new_fs);
+ FatCluster i;
+ FatCluster cluster;
+ FatCluster cluster_count;
+
+ PED_ASSERT (new_fs_info->fat_type == FAT_TYPE_FAT32, return 0);
+
+ cluster_count = ped_div_round_up (
+ PED_MAX (16, old_fs_info->root_dir_sector_count),
+ new_fs_info->cluster_sectors);
+
+ for (i = 0; i < cluster_count; i++) {
+ cluster = fat_table_alloc_check_cluster (new_fs_info->fat,
+ ctx->new_fs);
+ if (!cluster)
+ return 0;
+ ctx->new_root_dir [i] = cluster;
+ clear_cluster (ctx->new_fs, cluster);
+ }
+ ctx->new_root_dir [i] = 0;
+ new_fs_info->root_cluster = ctx->new_root_dir [0];
+ return 1;
+}
+
+/* when converting FAT32 -> FAT16
+ * fat_duplicate clusters() duplicated the root directory unnecessarily.
+ * Let's free it.
+ *
+ * This must be called AFTER fat_construct_new_fat(). (otherwise, our
+ * changes just get overwritten)
+ */
+static int
+free_root_dir (FatOpContext* ctx)
+{
+ FatSpecific* old_fs_info = FAT_SPECIFIC (ctx->old_fs);
+ FatSpecific* new_fs_info = FAT_SPECIFIC (ctx->new_fs);
+ FatCluster old_cluster;
+ FatFragment i;
+
+ PED_ASSERT (old_fs_info->fat_type == FAT_TYPE_FAT32, return 0);
+ PED_ASSERT (new_fs_info->fat_type == FAT_TYPE_FAT16, return 0);
+
+ for (old_cluster = old_fs_info->root_cluster;
+ !fat_table_is_eof (old_fs_info->fat, old_cluster);
+ old_cluster = fat_table_get (old_fs_info->fat, old_cluster)) {
+ FatFragment old_frag;
+ old_frag = fat_cluster_to_frag (ctx->old_fs, old_cluster);
+ for (i = 0; i < new_fs_info->cluster_frags; i++) {
+ FatFragment new_frag;
+ FatCluster new_clst;
+ new_frag = fat_op_context_map_fragment (ctx,
+ old_frag + i);
+ new_clst = fat_frag_to_cluster (ctx->old_fs, new_frag);
+ if (!fat_table_set_avail (new_fs_info->fat, new_clst))
+ return 0;
+ }
+ }
+
+ return 1;
+}
+
+static int
+fat_clear_root_dir (PedFileSystem* fs)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ int i;
+
+ PED_ASSERT (fs_info->fat_type == FAT_TYPE_FAT16, return 0);
+ PED_ASSERT (fs_info->root_dir_sector_count, return 0);
+
+ memset (fs_info->buffer, 0, 512);
+
+ for (i = 0; i < fs_info->root_dir_sector_count; i++) {
+ if (!ped_geometry_write (fs->geom, fs_info->buffer,
+ fs_info->root_dir_offset + i, 1)) {
+ if (ped_exception_throw (PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_IGNORE_CANCEL,
+ _("Error writing to the root directory."))
+ == PED_EXCEPTION_CANCEL)
+ return 0;
+ }
+ }
+ return 1;
+}
+
+static int
+fat_construct_converted_tree (FatOpContext* ctx)
+{
+ FatSpecific* old_fs_info = FAT_SPECIFIC (ctx->old_fs);
+ FatSpecific* new_fs_info = FAT_SPECIFIC (ctx->new_fs);
+ FatTraverseInfo* old_trav_info;
+ FatTraverseInfo* new_trav_info;
+
+ if (new_fs_info->fat_type == FAT_TYPE_FAT32) {
+ new_trav_info = fat_traverse_begin (ctx->new_fs,
+ new_fs_info->root_cluster, "\\");
+ old_trav_info = fat_traverse_begin (ctx->old_fs, FAT_ROOT,
+ "\\");
+ } else {
+ fat_clear_root_dir (ctx->new_fs);
+ new_trav_info = fat_traverse_begin (ctx->new_fs, FAT_ROOT,
+ "\\");
+ old_trav_info = fat_traverse_begin (ctx->old_fs,
+ old_fs_info->root_cluster, "\\");
+ }
+ if (!new_trav_info || !old_trav_info)
+ return 0;
+ if (!fat_convert_directory (ctx, old_trav_info, new_trav_info))
+ return 0;
+ return 1;
+}
+
+/*
+ Constructs the new directory tree to match the new file locations.
+*/
+static int
+fat_construct_dir_tree (FatOpContext* ctx)
+{
+ FatSpecific* new_fs_info = FAT_SPECIFIC (ctx->new_fs);
+ FatSpecific* old_fs_info = FAT_SPECIFIC (ctx->old_fs);
+
+ if (new_fs_info->fat_type == old_fs_info->fat_type) {
+ switch (old_fs_info->fat_type) {
+ case FAT_TYPE_FAT12:
+ PED_ASSERT (0, (void) 0);
+ break;
+
+ case FAT_TYPE_FAT16:
+ return fat_construct_legacy_root (ctx);
+
+ case FAT_TYPE_FAT32:
+ return fat_construct_root (ctx);
+ }
+ } else {
+ return fat_construct_converted_tree (ctx);
+ }
+
+ return 0;
+}
+
+static FatFragment
+_get_next_old_frag (FatOpContext* ctx, FatFragment frag)
+{
+ FatSpecific* old_fs_info = FAT_SPECIFIC (ctx->old_fs);
+ FatCluster cluster;
+ FatCluster next_cluster;
+
+ if ((frag + 1) % old_fs_info->cluster_frags != 0) {
+ if (fat_is_fragment_active (ctx->old_fs, frag + 1))
+ return frag + 1;
+ else
+ return -1;
+ } else {
+ cluster = fat_frag_to_cluster (ctx->old_fs, frag);
+ next_cluster = fat_table_get (old_fs_info->fat, cluster);
+
+ if (fat_table_is_eof (old_fs_info->fat, next_cluster))
+ return -1;
+ else
+ return fat_cluster_to_frag (ctx->old_fs, next_cluster);
+ }
+}
+
+/*
+ Constructs the new fat for the resized file system.
+*/
+static int
+fat_construct_new_fat (FatOpContext* ctx)
+{
+ FatSpecific* old_fs_info = FAT_SPECIFIC (ctx->old_fs);
+ FatSpecific* new_fs_info = FAT_SPECIFIC (ctx->new_fs);
+ FatFragment old_frag;
+ FatCluster new_cluster;
+ FatFragment new_frag;
+ FatFragment old_next_frag;
+ FatFragment new_next_frag;
+ FatCluster new_next_cluster;
+ FatClusterFlag flag;
+ int i;
+
+ fat_table_clear (new_fs_info->fat);
+ if (!fat_table_set_cluster_count (new_fs_info->fat,
+ new_fs_info->cluster_count))
+ return 0;
+
+ for (old_frag = 0; old_frag < old_fs_info->frag_count; old_frag++) {
+ flag = fat_get_fragment_flag (ctx->old_fs, old_frag);
+ if (flag == FAT_FLAG_FREE)
+ continue;
+ if (flag == FAT_FLAG_BAD) {
+ new_frag = fat_op_context_map_static_fragment (
+ ctx, old_frag);
+ if (new_frag == -1)
+ continue;
+ new_cluster = fat_frag_to_cluster (ctx->new_fs,
+ new_frag);
+ fat_table_set_bad (new_fs_info->fat, new_cluster);
+ continue;
+ }
+
+ new_frag = fat_op_context_map_fragment (ctx, old_frag);
+ new_cluster = fat_frag_to_cluster (ctx->new_fs, new_frag);
+
+ old_next_frag = _get_next_old_frag (ctx, old_frag);
+ if (old_next_frag == -1) {
+ fat_table_set_eof (new_fs_info->fat, new_cluster);
+ continue;
+ }
+
+ new_next_frag = fat_op_context_map_fragment (ctx,
+ old_next_frag);
+ PED_ASSERT (new_next_frag != -1, return 0);
+
+ new_next_cluster = fat_frag_to_cluster (ctx->new_fs,
+ new_next_frag);
+ PED_ASSERT (new_next_cluster != new_cluster, return 0);
+
+ fat_table_set (new_fs_info->fat, new_cluster, new_next_cluster);
+ }
+
+#if 0
+#ifdef PED_VERBOSE
+ for (old_cluster=2; old_cluster < old_fs_info->cluster_count+2;
+ old_cluster++) {
+ if (fat_table_is_available (old_fs_info->fat, old_cluster))
+ continue;
+
+ printf ("%d->%d\t(next: %d->%d)\n",
+ old_cluster,
+ ctx->remap [old_cluster],
+ fat_table_get (old_fs_info->fat, old_cluster),
+ fat_table_get (new_fs_info->fat,
+ ctx->remap [old_cluster]));
+ }
+#endif /* PED_VERBOSE */
+#endif
+
+ if (old_fs_info->fat_type == FAT_TYPE_FAT32
+ && new_fs_info->fat_type == FAT_TYPE_FAT32) {
+ new_fs_info->root_cluster
+ = fat_op_context_map_cluster (ctx,
+ old_fs_info->root_cluster);
+ }
+
+ if (old_fs_info->fat_type == FAT_TYPE_FAT16
+ && new_fs_info->fat_type == FAT_TYPE_FAT32) {
+ for (i=0; ctx->new_root_dir[i+1]; i++) {
+ fat_table_set (new_fs_info->fat,
+ ctx->new_root_dir[i],
+ ctx->new_root_dir[i+1]);
+ }
+ fat_table_set_eof (new_fs_info->fat, ctx->new_root_dir[i]);
+ }
+
+ return 1;
+}
+
+static int
+ask_type (PedFileSystem* fs, int fat16_ok, int fat32_ok, FatType* out_fat_type)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ PedExceptionOption status;
+ char* fat16_msg;
+ char* fat32_msg;
+
+ if (fs_info->fat_type == FAT_TYPE_FAT16)
+ fat16_msg = _("If you leave your file system as FAT16, "
+ "then you will have no problems.");
+ else
+ fat16_msg = _("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).");
+
+ if (fs_info->fat_type == FAT_TYPE_FAT32)
+ fat32_msg = _("If you leave your file system as FAT32, "
+ "then you will not introduce any new "
+ "problems.");
+ else
+ fat32_msg = _("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.");
+
+ if (fat16_ok && fat32_ok) {
+ status = ped_exception_throw (
+ PED_EXCEPTION_INFORMATION,
+ PED_EXCEPTION_YES_NO_CANCEL,
+ _("%s %s %s"),
+ _("Would you like to use FAT32?"),
+ fat16_msg,
+ fat32_msg);
+
+ switch (status) {
+ case PED_EXCEPTION_YES:
+ *out_fat_type = FAT_TYPE_FAT32;
+ return 1;
+
+ case PED_EXCEPTION_NO:
+ *out_fat_type = FAT_TYPE_FAT16;
+ return 1;
+
+ case PED_EXCEPTION_UNHANDLED:
+ *out_fat_type = fs_info->fat_type;
+ return 1;
+
+ case PED_EXCEPTION_CANCEL:
+ return 0;
+
+ default:
+ PED_ASSERT (0, (void) 0);
+ break;
+ }
+ }
+
+ if (fat16_ok) {
+ if (fs_info->fat_type != FAT_TYPE_FAT16) {
+ status = ped_exception_throw (
+ PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_OK_CANCEL,
+ _("%s %s"),
+ _("The file system can only be resized to this "
+ "size by converting to FAT16."),
+ fat16_msg);
+ if (status == PED_EXCEPTION_CANCEL)
+ return 0;
+ }
+ *out_fat_type = FAT_TYPE_FAT16;
+ return 1;
+ }
+
+ if (fat32_ok) {
+ if (fs_info->fat_type != FAT_TYPE_FAT32) {
+ status = ped_exception_throw (
+ PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_OK_CANCEL,
+ _("%s %s"),
+ _("The file system can only be resized to this "
+ "size by converting to FAT32."),
+ fat32_msg);
+ if (status == PED_EXCEPTION_CANCEL)
+ return 0;
+ }
+ *out_fat_type = FAT_TYPE_FAT32;
+ return 1;
+ }
+
+ ped_exception_throw (
+ PED_EXCEPTION_NO_FEATURE,
+ PED_EXCEPTION_CANCEL,
+ _("GNU Parted cannot resize this partition to this size. "
+ "We're working on it!"));
+
+ return 0;
+}
+
+/* For resize operations: determine if the file system must be FAT16 or FAT32,
+ * or either. If the new file system must be FAT32, then query for
+ * confirmation. If either file system can be used, query for which one.
+ */
+static int
+get_fat_type (PedFileSystem* fs, const PedGeometry* new_geom,
+ FatType* out_fat_type)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ PedSector fat16_cluster_sectors;
+ PedSector fat32_cluster_sectors;
+ FatCluster dummy_cluster_count;
+ PedSector dummy_fat_sectors;
+ int fat16_ok;
+ int fat32_ok;
+
+ fat16_ok = fat_calc_resize_sizes (
+ new_geom,
+ fs_info->cluster_sectors,
+ FAT_TYPE_FAT16,
+ fs_info->root_dir_sector_count,
+ fs_info->cluster_sectors,
+ &fat16_cluster_sectors,
+ &dummy_cluster_count,
+ &dummy_fat_sectors);
+
+ fat32_ok = fat_calc_resize_sizes (
+ new_geom,
+ fs_info->cluster_sectors,
+ FAT_TYPE_FAT32,
+ fs_info->root_dir_sector_count,
+ fs_info->cluster_sectors,
+ &fat32_cluster_sectors,
+ &dummy_cluster_count,
+ &dummy_fat_sectors);
+
+ return ask_type (fs, fat16_ok, fat32_ok, out_fat_type);
+}
+
+/* Creates the PedFileSystem struct for the new resized file system, and
+ sticks it in a FatOpContext. At the end of the process, the original
+ (ctx->old_fs) is destroyed, and replaced with the new one (ctx->new_fs).
+ */
+static FatOpContext*
+create_resize_context (PedFileSystem* fs, const PedGeometry* new_geom)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ FatSpecific* new_fs_info;
+ PedFileSystem* new_fs;
+ PedSector new_cluster_sectors;
+ FatCluster new_cluster_count;
+ PedSector new_fat_sectors;
+ FatType new_fat_type;
+ PedSector root_dir_sector_count;
+ FatOpContext* context;
+
+ /* hypothetical number of root dir sectors, if we end up using
+ * FAT16
+ */
+ if (fs_info->root_dir_sector_count)
+ root_dir_sector_count = fs_info->root_dir_sector_count;
+ else
+ root_dir_sector_count = FAT_ROOT_DIR_ENTRY_COUNT
+ * sizeof (FatDirEntry) / 512;
+
+ if (!get_fat_type (fs, new_geom, &new_fat_type))
+ return 0;
+
+ fat_calc_resize_sizes (new_geom, fs_info->cluster_sectors, new_fat_type,
+ root_dir_sector_count, fs_info->cluster_sectors,
+ &new_cluster_sectors, &new_cluster_count, &new_fat_sectors);
+
+ if (!fat_check_resize_geometry (fs, new_geom, new_cluster_sectors,
+ new_cluster_count))
+ goto error;
+
+ new_fs = fat_alloc (new_geom);
+ if (!new_fs)
+ goto error;
+
+ new_fs_info = FAT_SPECIFIC (new_fs);
+ if (!new_fs_info)
+ goto error_free_new_fs;
+
+/* preserve boot code, etc. */
+ memcpy (&new_fs_info->boot_sector, &fs_info->boot_sector,
+ sizeof (FatBootSector));
+ memcpy (&new_fs_info->info_sector, &fs_info->info_sector,
+ sizeof (FatInfoSector));
+
+ new_fs_info->logical_sector_size = fs_info->logical_sector_size;
+ new_fs_info->sector_count = new_geom->length;
+
+ new_fs_info->sectors_per_track = fs_info->sectors_per_track;
+ new_fs_info->heads = fs_info->heads;
+
+ new_fs_info->cluster_size = new_cluster_sectors * 512;
+ new_fs_info->cluster_sectors = new_cluster_sectors;
+ new_fs_info->cluster_count = new_cluster_count;
+ new_fs_info->dir_entries_per_cluster = fs_info->dir_entries_per_cluster;
+
+ new_fs_info->fat_type = new_fat_type;
+ new_fs_info->fat_table_count = 2;
+ new_fs_info->fat_sectors = new_fat_sectors;
+
+ /* what about copying? */
+ new_fs_info->serial_number = fs_info->serial_number;
+
+ if (new_fs_info->fat_type == FAT_TYPE_FAT32) {
+ new_fs_info->info_sector_offset = 1;
+ new_fs_info->boot_sector_backup_offset = 6;
+
+ new_fs_info->root_dir_offset = 0;
+ new_fs_info->root_dir_entry_count = 0;
+ new_fs_info->root_dir_sector_count = 0;
+
+ /* we add calc_align_sectors to push the cluster_offset
+ forward, to keep the clusters aligned between the new
+ and old file systems
+ */
+ new_fs_info->fat_offset
+ = fat_min_reserved_sector_count (FAT_TYPE_FAT32)
+ + fat_calc_align_sectors (new_fs, fs);
+
+ new_fs_info->cluster_offset
+ = new_fs_info->fat_offset
+ + 2 * new_fs_info->fat_sectors;
+ } else {
+ new_fs_info->root_dir_sector_count = root_dir_sector_count;
+ new_fs_info->root_dir_entry_count
+ = root_dir_sector_count * 512 / sizeof (FatDirEntry);
+
+ new_fs_info->fat_offset
+ = fat_min_reserved_sector_count (FAT_TYPE_FAT16)
+ + fat_calc_align_sectors (new_fs, fs);
+
+ new_fs_info->root_dir_offset = new_fs_info->fat_offset
+ + 2 * new_fs_info->fat_sectors;
+
+ new_fs_info->cluster_offset = new_fs_info->root_dir_offset
+ + new_fs_info->root_dir_sector_count;
+ }
+
+ new_fs_info->total_dir_clusters = fs_info->total_dir_clusters;
+
+ context = fat_op_context_new (new_fs, fs);
+ if (!context)
+ goto error_free_new_fs_info;
+
+ if (!fat_op_context_create_initial_fat (context))
+ goto error_free_context;
+
+ if (!fat_alloc_buffers (new_fs))
+ goto error_free_fat;
+
+ return context;
+
+error_free_fat:
+ fat_table_destroy (new_fs_info->fat);
+error_free_context:
+ ped_free (context);
+error_free_new_fs_info:
+ ped_free (new_fs_info);
+error_free_new_fs:
+ ped_free (new_fs);
+error:
+ return NULL;
+}
+
+static int
+resize_context_assimilate (FatOpContext* ctx)
+{
+ FatSpecific* old_fs_info = FAT_SPECIFIC (ctx->old_fs);
+ FatSpecific* new_fs_info = FAT_SPECIFIC (ctx->new_fs);
+
+ fat_free_buffers (ctx->old_fs);
+ fat_table_destroy (old_fs_info->fat);
+ ped_free (old_fs_info);
+ ped_geometry_destroy (ctx->old_fs->geom);
+
+ ctx->old_fs->type_specific = ctx->new_fs->type_specific;
+ ctx->old_fs->geom = ctx->new_fs->geom;
+ ctx->old_fs->type = (new_fs_info->fat_type == FAT_TYPE_FAT16)
+ ? &fat16_type
+ : &fat32_type;
+
+ ped_free (ctx->new_fs);
+
+ fat_op_context_destroy (ctx);
+
+ return 1;
+}
+
+static int
+resize_context_abort (FatOpContext* ctx)
+{
+ FatSpecific* new_fs_info = FAT_SPECIFIC (ctx->new_fs);
+
+ fat_free_buffers (ctx->new_fs);
+ fat_table_destroy (new_fs_info->fat);
+ ped_free (new_fs_info);
+ ped_geometry_destroy (ctx->new_fs->geom);
+ ped_free (ctx->new_fs);
+
+ fat_op_context_destroy (ctx);
+
+ return 1;
+}
+
+/* copies the "hidden" sectors, between the boot sector and the FAT. Required,
+ * for the Windows 98 FAT32 boot loader
+ */
+int
+_copy_hidden_sectors (FatOpContext* ctx)
+{
+ FatSpecific* old_fs_info = FAT_SPECIFIC (ctx->old_fs);
+ FatSpecific* new_fs_info = FAT_SPECIFIC (ctx->new_fs);
+ PedSector first = 1;
+ PedSector last;
+ PedSector count;
+
+ /* nothing to copy for FAT16 */
+ if (old_fs_info->fat_type == FAT_TYPE_FAT16
+ || new_fs_info->fat_type == FAT_TYPE_FAT16)
+ return 1;
+
+ last = PED_MIN (old_fs_info->fat_offset, new_fs_info->fat_offset) - 1;
+ count = last - first + 1;
+
+ PED_ASSERT (count < BUFFER_SIZE, return 0);
+
+ if (!ped_geometry_read (ctx->old_fs->geom, old_fs_info->buffer,
+ first, count))
+ return 0;
+ if (!ped_geometry_write (ctx->new_fs->geom, old_fs_info->buffer,
+ first, count))
+ return 0;
+ return 1;
+}
+
+int
+fat_resize (PedFileSystem* fs, PedGeometry* geom, PedTimer* timer)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ FatSpecific* new_fs_info;
+ FatOpContext* ctx;
+ PedFileSystem* new_fs;
+
+ ctx = create_resize_context (fs, geom);
+ if (!ctx)
+ goto error;
+ new_fs = ctx->new_fs;
+ new_fs_info = FAT_SPECIFIC (new_fs);
+
+ if (!fat_duplicate_clusters (ctx, timer))
+ goto error_abort_ctx;
+ if (fs_info->fat_type == FAT_TYPE_FAT16
+ && new_fs_info->fat_type == FAT_TYPE_FAT32) {
+ if (!alloc_root_dir (ctx))
+ goto error_abort_ctx;
+ }
+ if (!fat_construct_new_fat (ctx))
+ goto error_abort_ctx;
+ if (fs_info->fat_type == FAT_TYPE_FAT32
+ && new_fs_info->fat_type == FAT_TYPE_FAT16) {
+ if (!free_root_dir (ctx))
+ goto error_abort_ctx;
+ }
+ if (!fat_construct_dir_tree (ctx))
+ goto error_abort_ctx;
+ if (!fat_table_write_all (new_fs_info->fat, new_fs))
+ goto error_abort_ctx;
+
+ _copy_hidden_sectors (ctx);
+ fat_boot_sector_generate (&new_fs_info->boot_sector, new_fs);
+ fat_boot_sector_write (&new_fs_info->boot_sector, new_fs);
+ if (new_fs_info->fat_type == FAT_TYPE_FAT32) {
+ fat_info_sector_generate (&new_fs_info->info_sector, new_fs);
+ fat_info_sector_write (&new_fs_info->info_sector, new_fs);
+ }
+
+ if (!resize_context_assimilate (ctx))
+ goto error;
+
+ return 1;
+
+error_abort_ctx:
+ resize_context_abort (ctx);
+error:
+ return 0;
+}
+
+#endif /* !DISCOVER_ONLY */
diff --git a/parted-1.8.7/libparted/fs/fat/table.c b/parted-1.8.7/libparted/fs/fat/table.c
new file mode 100644
index 0000000..3db6127
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/fat/table.c
@@ -0,0 +1,482 @@
+/*
+ libparted
+ Copyright (C) 1998, 1999, 2000, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#include <config.h>
+#include <parted/endian.h>
+#include "fat.h"
+
+#ifndef DISCOVER_ONLY
+
+FatTable*
+fat_table_new (FatType fat_type, FatCluster size)
+{
+ FatTable* ft;
+ int entry_size = fat_table_entry_size (fat_type);
+
+ ft = (FatTable*) ped_malloc (sizeof (FatTable));
+ if (!ft) return NULL;
+
+ ft->cluster_count = ft->free_cluster_count = size - 2;
+
+/* ensure there's some free room on the end, to finish off the sector */
+ ft->size = ped_div_round_up (size * entry_size, 512) * 512 / entry_size;
+ ft->fat_type = fat_type;
+ ft->raw_size = ft->size * entry_size;
+
+ ft->table = ped_malloc (ft->raw_size);
+ if (!ft->table) {
+ ped_free (ft);
+ return NULL;
+ }
+
+ fat_table_clear (ft);
+ return ft;
+}
+
+void
+fat_table_destroy (FatTable* ft)
+{
+ ped_free (ft->table);
+ ped_free (ft);
+}
+
+FatTable*
+fat_table_duplicate (const FatTable* ft)
+{
+ FatTable* dup;
+
+ dup = fat_table_new (ft->fat_type, ft->size);
+ if (!dup) return NULL;
+
+ dup->cluster_count = ft->cluster_count;
+ dup->free_cluster_count = ft->free_cluster_count;
+ dup->bad_cluster_count = ft->bad_cluster_count;
+ dup->last_alloc = ft->last_alloc;
+
+ memcpy (dup->table, ft->table, ft->raw_size);
+
+ return dup;
+}
+
+void
+fat_table_clear (FatTable* ft)
+{
+ memset (ft->table, 0, ft->raw_size);
+
+ fat_table_set (ft, 0, 0x0ffffff8);
+ fat_table_set (ft, 1, 0x0fffffff);
+
+ ft->free_cluster_count = ft->cluster_count;
+ ft->bad_cluster_count = 0;
+ ft->last_alloc = 1;
+}
+
+int
+fat_table_set_cluster_count (FatTable* ft, FatCluster new_cluster_count)
+{
+ PED_ASSERT (new_cluster_count + 2 <= ft->size, return 0);
+
+ ft->cluster_count = new_cluster_count;
+ return fat_table_count_stats (ft);
+}
+
+int
+fat_table_count_stats (FatTable* ft)
+{
+ FatCluster i;
+
+ PED_ASSERT (ft->cluster_count + 2 <= ft->size, return 0);
+
+ ft->free_cluster_count = 0;
+ ft->bad_cluster_count = 0;
+
+ for (i=2; i < ft->cluster_count + 2; i++) {
+ if (fat_table_is_available (ft, i))
+ ft->free_cluster_count++;
+ if (fat_table_is_bad (ft, i))
+ ft->bad_cluster_count++;
+ }
+ return 1;
+}
+
+int
+fat_table_read (FatTable* ft, const PedFileSystem* fs, int table_num)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+
+ PED_ASSERT (ft->raw_size >= fs_info->fat_sectors * 512, return 0);
+
+ memset (ft->table, 0, ft->raw_size);
+
+ if (!ped_geometry_read (fs->geom, (void *) ft->table,
+ fs_info->fat_offset
+ + table_num * fs_info->fat_sectors,
+ fs_info->fat_sectors))
+ return 0;
+
+ if ( *((unsigned char*) ft->table) != fs_info->boot_sector.media) {
+ if (ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_IGNORE_CANCEL,
+ _("FAT %d media %x doesn't match the boot sector's "
+ "media %x. You should probably run scandisk."),
+ (int) table_num + 1,
+ (int) *((unsigned char*) ft->table),
+ (int) fs_info->boot_sector.media)
+ != PED_EXCEPTION_IGNORE)
+ return 0;
+ }
+
+ ft->cluster_count = fs_info->cluster_count;
+
+ fat_table_count_stats (ft);
+
+ return 1;
+}
+
+int
+fat_table_write (const FatTable* ft, PedFileSystem* fs, int table_num)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+
+ PED_ASSERT (ft->raw_size >= fs_info->fat_sectors * 512, return 0);
+
+ if (!ped_geometry_write (fs->geom, (void *) ft->table,
+ fs_info->fat_offset
+ + table_num * fs_info->fat_sectors,
+ fs_info->fat_sectors))
+ return 0;
+ if (!ped_geometry_sync (fs->geom))
+ return 0;
+
+ return 1;
+}
+
+int
+fat_table_write_all (const FatTable* ft, PedFileSystem* fs)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ int i;
+
+ for (i = 0; i < fs_info->fat_table_count; i++) {
+ if (!fat_table_write (ft, fs, i))
+ return 0;
+ }
+
+ return 1;
+}
+
+int
+fat_table_compare (const FatTable* a, const FatTable* b)
+{
+ FatCluster i;
+
+ if (a->cluster_count != b->cluster_count)
+ return 0;
+
+ for (i = 0; i < a->cluster_count + 2; i++) {
+ if (fat_table_get (a, i) != fat_table_get (b, i))
+ return 0;
+ }
+
+ return 1;
+}
+
+static int
+_test_code_available (const FatTable* ft, FatCluster code)
+{
+ return code == 0;
+}
+
+static int
+_test_code_bad (const FatTable* ft, FatCluster code)
+{
+ switch (ft->fat_type) {
+ case FAT_TYPE_FAT12:
+ if (code == 0xff7) return 1;
+ break;
+
+ case FAT_TYPE_FAT16:
+ if (code == 0xfff7) return 1;
+ break;
+
+ case FAT_TYPE_FAT32:
+ if (code == 0x0ffffff7) return 1;
+ break;
+ }
+ return 0;
+}
+
+static int
+_test_code_eof (const FatTable* ft, FatCluster code)
+{
+ switch (ft->fat_type) {
+ case FAT_TYPE_FAT12:
+ if (code >= 0xff7) return 1;
+ break;
+
+ case FAT_TYPE_FAT16:
+ if (code >= 0xfff7) return 1;
+ break;
+
+ case FAT_TYPE_FAT32:
+ if (code >= 0x0ffffff7) return 1;
+ break;
+ }
+ return 0;
+}
+
+void
+_update_stats (FatTable* ft, FatCluster cluster, FatCluster value)
+{
+ if (_test_code_available (ft, value)
+ && !fat_table_is_available (ft, cluster)) {
+ ft->free_cluster_count++;
+ if (fat_table_is_bad (ft, cluster))
+ ft->bad_cluster_count--;
+ }
+
+ if (!_test_code_available (ft, value)
+ && fat_table_is_available (ft, cluster)) {
+ ft->free_cluster_count--;
+ if (_test_code_bad (ft, cluster))
+ ft->bad_cluster_count--;
+ }
+}
+
+int
+fat_table_set (FatTable* ft, FatCluster cluster, FatCluster value)
+{
+ if (cluster >= ft->cluster_count + 2) {
+ ped_exception_throw (PED_EXCEPTION_BUG,
+ PED_EXCEPTION_CANCEL,
+ _("fat_table_set: cluster %ld outside "
+ "file system"),
+ (long) cluster);
+ return 0;
+ }
+
+ _update_stats (ft, cluster, value);
+
+ switch (ft->fat_type) {
+ case FAT_TYPE_FAT12:
+ PED_ASSERT (0, (void) 0);
+ break;
+
+ case FAT_TYPE_FAT16:
+ ((unsigned short *) ft->table) [cluster]
+ = PED_CPU_TO_LE16 (value);
+ break;
+
+ case FAT_TYPE_FAT32:
+ ((unsigned int *) ft->table) [cluster]
+ = PED_CPU_TO_LE32 (value);
+ break;
+ }
+ return 1;
+}
+
+FatCluster
+fat_table_get (const FatTable* ft, FatCluster cluster)
+{
+ if (cluster >= ft->cluster_count + 2) {
+ ped_exception_throw (PED_EXCEPTION_BUG,
+ PED_EXCEPTION_CANCEL,
+ _("fat_table_get: cluster %ld outside "
+ "file system"),
+ (long) cluster);
+ exit (1); /* FIXME */
+ }
+
+ switch (ft->fat_type) {
+ case FAT_TYPE_FAT12:
+ PED_ASSERT (0, (void) 0);
+ break;
+
+ case FAT_TYPE_FAT16:
+ return PED_LE16_TO_CPU
+ (((unsigned short *) ft->table) [cluster]);
+
+ case FAT_TYPE_FAT32:
+ return PED_LE32_TO_CPU
+ (((unsigned int *) ft->table) [cluster]);
+ }
+
+ return 0;
+}
+
+FatCluster
+fat_table_alloc_cluster (FatTable* ft)
+{
+ FatCluster i;
+ FatCluster cluster;
+
+/* hack: assumes the first two FAT entries are marked as used (which they
+ * always should be)
+ */
+ for (i=1; i < ft->cluster_count + 1; i++) {
+ cluster = (i + ft->last_alloc) % ft->cluster_count;
+ if (fat_table_is_available (ft, cluster)) {
+ ft->last_alloc = cluster;
+ return cluster;
+ }
+ }
+
+ ped_exception_throw (PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("fat_table_alloc_cluster: no free clusters"));
+ return 0;
+}
+
+FatCluster
+fat_table_alloc_check_cluster (FatTable* ft, PedFileSystem* fs)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ FatCluster result;
+
+ while (1) {
+ result = fat_table_alloc_cluster (ft);
+ if (!result)
+ return 0;
+ if (fat_read_cluster (fs, fs_info->buffer, result))
+ return result;
+ fat_table_set_bad (ft, result);
+ }
+}
+
+/*
+ returns true if <cluster> is marked as bad
+*/
+int
+fat_table_is_bad (const FatTable* ft, FatCluster cluster)
+{
+ return _test_code_bad (ft, fat_table_get (ft, cluster));
+}
+
+/*
+ returns true if <cluster> represents an EOF marker
+*/
+int
+fat_table_is_eof (const FatTable* ft, FatCluster cluster)
+{
+ return _test_code_eof (ft, cluster);
+}
+
+/*
+ returns true if <cluster> is available.
+*/
+int
+fat_table_is_available (const FatTable* ft, FatCluster cluster)
+{
+ return _test_code_available (ft, fat_table_get (ft, cluster));
+}
+
+/*
+ returns true if <cluster> is empty. Note that this includes bad clusters.
+*/
+int
+fat_table_is_empty (const FatTable* ft, FatCluster cluster)
+{
+ return fat_table_is_available (ft, cluster)
+ || fat_table_is_bad (ft, cluster);
+}
+
+/*
+ returns true if <cluster> is being used for something constructive.
+*/
+int
+fat_table_is_active (const FatTable* ft, FatCluster cluster)
+{
+ return !fat_table_is_bad (ft, cluster)
+ && !fat_table_is_available (ft, cluster);
+}
+
+/*
+ marks <cluster> as the last cluster in the chain
+*/
+int
+fat_table_set_eof (FatTable* ft, FatCluster cluster)
+{
+
+ switch (ft->fat_type) {
+ case FAT_TYPE_FAT12:
+ PED_ASSERT (0, (void) 0);
+ break;
+
+ case FAT_TYPE_FAT16:
+ return fat_table_set (ft, cluster, 0xfff8);
+
+ case FAT_TYPE_FAT32:
+ return fat_table_set (ft, cluster, 0x0fffffff);
+ }
+
+ return 0;
+}
+
+/*
+ Marks a clusters as unusable, due to physical disk damage.
+*/
+int
+fat_table_set_bad (FatTable* ft, FatCluster cluster)
+{
+ if (!fat_table_is_bad (ft, cluster))
+ ft->bad_cluster_count++;
+
+ switch (ft->fat_type) {
+ case FAT_TYPE_FAT12:
+ return fat_table_set (ft, cluster, 0xff7);
+
+ case FAT_TYPE_FAT16:
+ return fat_table_set (ft, cluster, 0xfff7);
+
+ case FAT_TYPE_FAT32:
+ return fat_table_set (ft, cluster, 0x0ffffff7);
+ }
+
+ return 0;
+}
+
+/*
+ marks <cluster> as unused/free/available
+*/
+int
+fat_table_set_avail (FatTable* ft, FatCluster cluster)
+{
+ return fat_table_set (ft, cluster, 0);
+}
+
+#endif /* !DISCOVER_ONLY */
+
+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;
+}
+
diff --git a/parted-1.8.7/libparted/fs/fat/table.h b/parted-1.8.7/libparted/fs/fat/table.h
new file mode 100644
index 0000000..9d2501b
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/fat/table.h
@@ -0,0 +1,75 @@
+/*
+ libparted
+ Copyright (C) 1998, 1999, 2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef PED_FAT_TABLE_H_INCLUDED
+#define PED_FAT_TABLE_H_INCLUDED
+
+typedef struct _FatTable FatTable;
+
+#include "fat.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;
+};
+
+extern FatTable* fat_table_new (FatType fat_type, FatCluster size);
+extern FatTable* fat_table_duplicate (const FatTable* ft);
+extern void fat_table_destroy (FatTable* ft);
+extern void fat_table_clear (FatTable* ft);
+extern int fat_table_set_cluster_count (FatTable* ft,
+ FatCluster new_cluster_count);
+
+extern int fat_table_read (FatTable* ft, const PedFileSystem* fs,
+ int table_num);
+extern int fat_table_write (const FatTable* ft, PedFileSystem* fs,
+ int table_num);
+extern int fat_table_write_all (const FatTable* ft, PedFileSystem* fs);
+extern int fat_table_compare (const FatTable* a, const FatTable* b);
+extern int fat_table_count_stats (FatTable* ft);
+
+extern FatCluster fat_table_get (const FatTable* ft, FatCluster cluster);
+extern int fat_table_set (FatTable* ft, FatCluster cluster, FatCluster value);
+
+extern FatCluster fat_table_alloc_cluster (FatTable* ft);
+extern FatCluster fat_table_alloc_check_cluster (FatTable* ft,
+ PedFileSystem* fs);
+
+extern int fat_table_is_bad (const FatTable* ft, FatCluster cluster);
+extern int fat_table_is_eof (const FatTable* ft, FatCluster cluster);
+extern int fat_table_is_empty (const FatTable* ft, FatCluster cluster);
+extern int fat_table_is_available (const FatTable* ft, FatCluster cluster);
+extern int fat_table_is_active (const FatTable* ft, FatCluster cluster);
+
+extern int fat_table_set_eof (FatTable* ft, FatCluster cluster);
+extern int fat_table_set_avail (FatTable* ft, FatCluster cluster);
+extern int fat_table_set_bad (FatTable* ft, FatCluster cluster);
+
+extern int fat_table_entry_size (FatType fat_type);
+
+#endif /* PED_FAT_TABLE_H_INCLUDED */
+
diff --git a/parted-1.8.7/libparted/fs/fat/traverse.c b/parted-1.8.7/libparted/fs/fat/traverse.c
new file mode 100644
index 0000000..da63964
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/fat/traverse.c
@@ -0,0 +1,374 @@
+/*
+ libparted
+ Copyright (C) 1998, 1999, 2000, 2005, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+
+ I can also be contacted at:
+
+ Andrew Clausen
+ 18 Shaw St
+ Ashwood, 3147
+ Victoria, Australia
+
+*/
+
+#include <config.h>
+#include "fat.h"
+#include "traverse.h"
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#ifndef DISCOVER_ONLY
+
+#define NO_CLUSTER -1
+
+static char tmp_buffer [4096];
+
+int
+fat_traverse_entries_per_buffer (FatTraverseInfo* trav_info)
+{
+ return trav_info->buffer_size / sizeof (FatDirEntry);
+}
+
+/* returns 1 if there are no more directory entries in the directory being
+ * traversed, 0 otherwise.
+ */
+static int
+is_last_buffer (FatTraverseInfo* trav_info) {
+ FatSpecific* fs_info = FAT_SPECIFIC (trav_info->fs);
+
+ if (trav_info->is_legacy_root_dir)
+ return 1;
+ else
+ return fat_table_is_eof (fs_info->fat, trav_info->next_buffer);
+}
+
+static int
+write_root_dir (FatTraverseInfo* trav_info)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (trav_info->fs);
+
+ if (!ped_geometry_write (trav_info->fs->geom, trav_info->dir_entries,
+ fs_info->root_dir_offset,
+ fs_info->root_dir_sector_count))
+ return 0;
+ if (!ped_geometry_sync (trav_info->fs->geom))
+ return 0;
+ trav_info->dirty = 0;
+ return 1;
+}
+
+static int
+write_dir_cluster (FatTraverseInfo* trav_info)
+{
+ if (!fat_write_sync_cluster (trav_info->fs,
+ (void*) trav_info->dir_entries,
+ trav_info->this_buffer))
+ return 0;
+ trav_info->dirty = 0;
+ return 1;
+}
+
+static int
+write_dir_buffer (FatTraverseInfo* trav_info)
+{
+ if (trav_info->is_legacy_root_dir)
+ return write_root_dir (trav_info);
+ else
+ return write_dir_cluster (trav_info);
+}
+
+static int
+read_next_dir_buffer (FatTraverseInfo* trav_info)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (trav_info->fs);
+
+ PED_ASSERT (!trav_info->is_legacy_root_dir, return 0);
+
+ trav_info->this_buffer = trav_info->next_buffer;
+
+ if (trav_info->this_buffer < 2
+ || trav_info->this_buffer >= fs_info->cluster_count + 2) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ "Cluster %ld in directory %s is outside file system!",
+ (long) trav_info->this_buffer,
+ trav_info->dir_name);
+ return 0;
+ }
+
+ trav_info->next_buffer
+ = fat_table_get (fs_info->fat, trav_info->this_buffer);
+
+ return fat_read_cluster (trav_info->fs, (void *) trav_info->dir_entries,
+ trav_info->this_buffer);
+}
+
+/* FIXME: put into fat_dir_entry_* operations */
+void
+fat_traverse_mark_dirty (FatTraverseInfo* trav_info)
+{
+ trav_info->dirty = 1;
+}
+
+FatTraverseInfo*
+fat_traverse_begin (PedFileSystem* fs, FatCluster start_cluster,
+ char* dir_name)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ FatTraverseInfo* trav_info;
+
+ trav_info = (FatTraverseInfo*) ped_malloc (sizeof (FatTraverseInfo));
+ if (!trav_info)
+ goto error;
+
+ trav_info->dir_name = strdup (dir_name);
+ if (!trav_info->dir_name)
+ goto error_free_trav_info;
+
+ trav_info->fs = fs;
+ trav_info->is_legacy_root_dir
+ = (fs_info->fat_type == FAT_TYPE_FAT16) && (start_cluster == 0);
+ trav_info->dirty = 0;
+ trav_info->eof = 0;
+ trav_info->current_entry = -1;
+
+ if (trav_info->is_legacy_root_dir) {
+ trav_info->buffer_size = 512 * fs_info->root_dir_sector_count;
+ } else {
+ trav_info->next_buffer = start_cluster;
+ trav_info->buffer_size = fs_info->cluster_size;
+ }
+
+ trav_info->dir_entries
+ = (FatDirEntry*) ped_malloc (trav_info->buffer_size);
+ if (!trav_info->dir_entries)
+ goto error_free_dir_name;
+
+ if (trav_info->is_legacy_root_dir) {
+ if (!ped_geometry_read (fs->geom, trav_info->dir_entries,
+ fs_info->root_dir_offset,
+ fs_info->root_dir_sector_count))
+ goto error_free_dir_entries;
+ } else {
+ if (!read_next_dir_buffer (trav_info))
+ goto error_free_dir_entries;
+ }
+
+ return trav_info;
+
+error_free_dir_entries:
+ ped_free (trav_info->dir_entries);
+error_free_dir_name:
+ ped_free (trav_info->dir_name);
+error_free_trav_info:
+ ped_free (trav_info);
+error:
+ return NULL;
+}
+
+int
+fat_traverse_complete (FatTraverseInfo* trav_info)
+{
+ if (trav_info->dirty) {
+ if (!write_dir_buffer (trav_info))
+ return 0;
+ }
+ ped_free (trav_info->dir_entries);
+ ped_free (trav_info->dir_name);
+ ped_free (trav_info);
+ return 1;
+}
+
+FatTraverseInfo*
+fat_traverse_directory (FatTraverseInfo *trav_info, FatDirEntry* parent)
+{
+ strcpy (tmp_buffer, trav_info->dir_name);
+ fat_dir_entry_get_name (parent,
+ tmp_buffer + strlen (trav_info->dir_name));
+ strcat (tmp_buffer, "\\");
+
+ return fat_traverse_begin (trav_info->fs,
+ fat_dir_entry_get_first_cluster (parent, trav_info->fs),
+ tmp_buffer);
+}
+
+FatDirEntry*
+fat_traverse_next_dir_entry (FatTraverseInfo *trav_info)
+{
+ if (trav_info->eof)
+ return NULL;
+
+ trav_info->current_entry++;
+ if (trav_info->current_entry
+ >= fat_traverse_entries_per_buffer (trav_info)) {
+ if (trav_info->dirty) {
+ if (!write_dir_buffer (trav_info))
+ return NULL;
+ }
+
+ trav_info->current_entry = 0;
+ if (is_last_buffer (trav_info)) {
+ trav_info->eof = 1;
+ return NULL;
+ }
+ if (!read_next_dir_buffer (trav_info))
+ return NULL;
+ }
+ return trav_info->dir_entries + trav_info->current_entry;
+}
+
+FatCluster
+fat_dir_entry_get_first_cluster (FatDirEntry* dir_entry, PedFileSystem *fs)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+
+ switch (fs_info->fat_type) {
+ case FAT_TYPE_FAT12:
+ case FAT_TYPE_FAT16:
+ return PED_LE16_TO_CPU (dir_entry->first_cluster);
+
+ case FAT_TYPE_FAT32:
+ return PED_LE16_TO_CPU (dir_entry->first_cluster_high)
+ * 65536L
+ + PED_LE16_TO_CPU (dir_entry->first_cluster);
+ }
+
+ return 0;
+}
+
+void
+fat_dir_entry_set_first_cluster (FatDirEntry* dir_entry, PedFileSystem* fs,
+ FatCluster cluster)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+
+ switch (fs_info->fat_type) {
+ case FAT_TYPE_FAT12:
+ PED_ASSERT (0, (void) 0);
+ break;
+
+ case FAT_TYPE_FAT16:
+ dir_entry->first_cluster = PED_CPU_TO_LE16 (cluster);
+ break;
+
+ case FAT_TYPE_FAT32:
+ dir_entry->first_cluster
+ = PED_CPU_TO_LE16 (cluster & 0xffff);
+ dir_entry->first_cluster_high
+ = PED_CPU_TO_LE16 (cluster / 0x10000);
+ break;
+ }
+}
+
+uint32_t
+fat_dir_entry_get_length (FatDirEntry* dir_entry)
+{
+ return PED_LE32_TO_CPU (dir_entry->length);
+}
+
+int
+fat_dir_entry_is_null_term (const FatDirEntry* dir_entry)
+{
+ FatDirEntry null_entry;
+
+ memset (&null_entry, 0, sizeof (null_entry));
+ return memcmp (&null_entry, dir_entry, sizeof (null_entry)) == 0;
+}
+
+int
+fat_dir_entry_is_active (FatDirEntry* dir_entry)
+{
+ if ((unsigned char) dir_entry->name[0] == DELETED_FLAG) return 0;
+ if ((unsigned char) dir_entry->name[0] == 0) return 0;
+ if ((unsigned char) dir_entry->name[0] == 0xF6) return 0;
+ return 1;
+}
+
+int
+fat_dir_entry_is_file (FatDirEntry* dir_entry) {
+ if (dir_entry->attributes == VFAT_ATTR) return 0;
+ if (dir_entry->attributes & VOLUME_LABEL_ATTR) return 0;
+ if (!fat_dir_entry_is_active (dir_entry)) return 0;
+ if ((dir_entry->attributes & DIRECTORY_ATTR) == DIRECTORY_ATTR) return 0;
+ return 1;
+}
+
+int
+fat_dir_entry_is_system_file (FatDirEntry* dir_entry)
+{
+ if (!fat_dir_entry_is_file (dir_entry)) return 0;
+ return (dir_entry->attributes & SYSTEM_ATTR)
+ || (dir_entry->attributes & HIDDEN_ATTR);
+}
+
+int
+fat_dir_entry_is_directory (FatDirEntry* dir_entry)
+{
+ if (dir_entry->attributes == VFAT_ATTR) return 0;
+ if (dir_entry->attributes & VOLUME_LABEL_ATTR) return 0;
+ if (!fat_dir_entry_is_active (dir_entry)) return 0;
+ return (dir_entry->attributes & DIRECTORY_ATTR) == DIRECTORY_ATTR;
+}
+
+int
+fat_dir_entry_has_first_cluster (FatDirEntry* dir_entry, PedFileSystem* fs)
+{
+ FatSpecific* fs_info = FAT_SPECIFIC (fs);
+ FatCluster first_cluster;
+
+ if (!fat_dir_entry_is_file (dir_entry)
+ && !fat_dir_entry_is_directory (dir_entry))
+ return 0;
+
+ first_cluster = fat_dir_entry_get_first_cluster (dir_entry, fs);
+ if (first_cluster == 0
+ || fat_table_is_eof (fs_info->fat, first_cluster))
+ return 0;
+
+ return 1;
+}
+
+/*
+ decrypts silly DOS names to FILENAME.EXT
+*/
+void
+fat_dir_entry_get_name (FatDirEntry*dir_entry, char *result) {
+ int i;
+ char *src;
+
+ src = dir_entry->name;
+
+ for (i=0; i<8; i++) {
+ if (src[i] == ' ' || src[i] == 0) break;
+ *result++ = src[i];
+ }
+
+ if (src[8] != ' ' && src[8] != 0) {
+ *result++ = '.';
+ for (i=8; i<11; i++) {
+ if (src[i] == ' ' || src[i] == 0) break;
+ *result++ = src[i];
+ }
+ }
+
+ *result = 0;
+}
+
+#endif /* !DISCOVER_ONLY */
diff --git a/parted-1.8.7/libparted/fs/fat/traverse.h b/parted-1.8.7/libparted/fs/fat/traverse.h
new file mode 100644
index 0000000..b88302c
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/fat/traverse.h
@@ -0,0 +1,81 @@
+/*
+ libparted
+ Copyright (C) 1998, 1999, 2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+
+ I can also be contacted at:
+
+ Andrew Clausen
+ 18 Shaw St
+ Ashwood, 3147
+ Victoria, Australia
+*/
+
+#ifndef TRAVERSE_H_INCLUDED
+#define TRAVERSE_H_INCLUDED
+
+#include "fatio.h"
+
+typedef struct _FatTraverseInfo FatTraverseInfo;
+
+struct _FatTraverseInfo {
+ PedFileSystem* fs;
+ char* dir_name;
+
+ int is_legacy_root_dir;
+ int dirty;
+ int eof;
+
+ FatDirEntry* dir_entries;
+ int current_entry;
+ FatCluster this_buffer, next_buffer;
+ int buffer_size;
+};
+
+extern int fat_traverse_entries_per_buffer (FatTraverseInfo* trav_info);
+
+/* starts traversal at an arbitary cluster. if start_cluster==0, then uses
+ root directory */
+extern FatTraverseInfo* fat_traverse_begin (PedFileSystem* fs,
+ FatCluster start_cluster, char* dir_name);
+
+extern int fat_traverse_complete (FatTraverseInfo* trav_info);
+
+extern FatTraverseInfo* fat_traverse_directory (FatTraverseInfo* trav_info,
+ FatDirEntry* parent);
+
+extern void fat_traverse_mark_dirty (FatTraverseInfo* trav_info);
+
+extern FatDirEntry* fat_traverse_next_dir_entry (FatTraverseInfo* trav_info);
+
+extern FatCluster fat_dir_entry_get_first_cluster (FatDirEntry* dir_entry,
+ PedFileSystem* fs);
+
+extern void fat_dir_entry_set_first_cluster (FatDirEntry* dir_entry,
+ PedFileSystem* fs, FatCluster cluster);
+
+extern uint32_t fat_dir_entry_get_length (FatDirEntry* dir_entry);
+
+extern int fat_dir_entry_is_null_term (const FatDirEntry* dir_entry);
+extern int fat_dir_entry_is_file (FatDirEntry* dir_entry);
+extern int fat_dir_entry_is_system_file (FatDirEntry* dir_entry);
+extern int fat_dir_entry_is_directory (FatDirEntry* dir_entry);
+extern void fat_dir_entry_get_name (FatDirEntry* dir_entry, char* result);
+extern int fat_dir_entry_is_active (FatDirEntry* dir_entry);
+extern int fat_dir_entry_has_first_cluster (FatDirEntry* dir_entry,
+ PedFileSystem* fs);
+
+#endif /* TRAVERSE_H_INCLUDED */
diff --git a/parted-1.8.7/libparted/fs/hfs/Makefile.am b/parted-1.8.7/libparted/fs/hfs/Makefile.am
new file mode 100644
index 0000000..00cefe4
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/Makefile.am
@@ -0,0 +1,17 @@
+partedincludedir = -I$(top_srcdir)/include
+
+noinst_LTLIBRARIES = libhfs.la
+libhfs_la_SOURCES = hfs.c hfs.h \
+ probe.c probe.h \
+ cache.c cache.h \
+ advfs.c advfs.h \
+ file.c file.h \
+ reloc.c reloc.h \
+ advfs_plus.c advfs_plus.h \
+ file_plus.c file_plus.h \
+ reloc_plus.c reloc_plus.h \
+ journal.c journal.h
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/parted-1.8.7/libparted/fs/hfs/Makefile.in b/parted-1.8.7/libparted/fs/hfs/Makefile.in
new file mode 100644
index 0000000..aacb1e4
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/Makefile.in
@@ -0,0 +1,644 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libhfs_la_LIBADD =
+am_libhfs_la_OBJECTS = hfs.lo probe.lo cache.lo advfs.lo file.lo \
+ reloc.lo advfs_plus.lo file_plus.lo reloc_plus.lo journal.lo
+libhfs_la_OBJECTS = $(am_libhfs_la_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)/lib@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libhfs_la_SOURCES)
+DIST_SOURCES = $(libhfs_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+partedincludedir = -I$(top_srcdir)/include
+noinst_LTLIBRARIES = libhfs.la
+libhfs_la_SOURCES = hfs.c hfs.h \
+ probe.c probe.h \
+ cache.c cache.h \
+ advfs.c advfs.h \
+ file.c file.h \
+ reloc.c reloc.h \
+ advfs_plus.c advfs_plus.h \
+ file_plus.c file_plus.h \
+ reloc_plus.c reloc_plus.h \
+ journal.c journal.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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/hfs/Makefile'; \
+ 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
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libhfs.la: $(libhfs_la_OBJECTS) $(libhfs_la_DEPENDENCIES)
+ $(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)/advfs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/advfs_plus.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cache.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/file_plus.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hfs.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/journal.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/probe.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reloc.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reloc_plus.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+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
+
+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 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/parted-1.8.7/libparted/fs/hfs/TODO b/parted-1.8.7/libparted/fs/hfs/TODO
new file mode 100644
index 0000000..13bca9c
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/TODO
@@ -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/parted-1.8.7/libparted/fs/hfs/advfs.c b/parted-1.8.7/libparted/fs/hfs/advfs.c
new file mode 100644
index 0000000..5a57e95
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/advfs.c
@@ -0,0 +1,329 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2004, 2005 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef DISCOVER_ONLY
+
+#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 "file.h"
+
+#include "advfs.h"
+
+/* - if a < b, 0 if a == b, + if a > b */
+/* Comparaison is done in the following order : */
+/* CNID, then fork type, then start block */
+/* Note that HFS implementation in linux has a bug */
+/* in this function */
+static int
+hfs_extent_key_cmp(HfsPrivateGenericKey* a, HfsPrivateGenericKey* b)
+{
+ HfsExtentKey* key1 = (HfsExtentKey*) a;
+ HfsExtentKey* key2 = (HfsExtentKey*) b;
+
+ /* do NOT use a substraction, because */
+ /* 0xFFFFFFFF - 1 = 0xFFFFFFFE so this */
+ /* would return -2, despite the fact */
+ /* 0xFFFFFFFF > 1 !!! (this is the 2.4 bug) */
+ if (key1->file_ID != key2->file_ID)
+ return PED_BE32_TO_CPU(key1->file_ID) <
+ PED_BE32_TO_CPU(key2->file_ID) ?
+ -1 : +1;
+
+ if (key1->type != key2->type)
+ return (int)(key1->type - key2->type);
+
+ if (key1->start == key2->start)
+ return 0;
+ /* the whole thing wont work with 16 bits ints */
+ /* anyway */
+ return (int)( PED_BE16_TO_CPU(key1->start) -
+ PED_BE16_TO_CPU(key2->start) );
+}
+
+/* do a B-Tree lookup */
+/* read the first record immediatly inferior or egal to the given key */
+/* return 0 on error */
+/* record_out _must_ be large enough to receive record_size bytes */
+/* WARNING : the compare function called only handle Extents BTree */
+/* so modify this function if you want to do lookup in */
+/* other BTrees has well */
+int
+hfs_btree_search (HfsPrivateFile* b_tree_file, HfsPrivateGenericKey* key,
+ void *record_out, unsigned int record_size,
+ HfsCPrivateLeafRec* record_ref)
+{
+ uint8_t node[PED_SECTOR_SIZE_DEFAULT];
+ HfsHeaderRecord* header;
+ HfsNodeDescriptor* desc = (HfsNodeDescriptor*) node;
+ HfsPrivateGenericKey* record_key = NULL;
+ unsigned int node_number, record_number;
+ int i;
+
+ /* Read the header node */
+ if (!hfs_file_read_sector(b_tree_file, node, 0))
+ return 0;
+ header = ((HfsHeaderRecord*) (node + PED_BE16_TO_CPU(*((uint16_t *)
+ (node+(PED_SECTOR_SIZE_DEFAULT-2))))));
+
+ /* Get the node number of the root */
+ node_number = PED_BE32_TO_CPU(header->root_node);
+ if (!node_number)
+ return 0;
+
+ /* Read the root node */
+ if (!hfs_file_read_sector(b_tree_file, node, node_number))
+ return 0;
+
+ /* Follow the white rabbit */
+ while (1) {
+ record_number = PED_BE16_TO_CPU (desc->rec_nb);
+ for (i = record_number; i; i--) {
+ record_key = (HfsPrivateGenericKey*)
+ (node + PED_BE16_TO_CPU(*((uint16_t *)
+ (node+(PED_SECTOR_SIZE_DEFAULT - 2*i)))));
+ /* check for obvious error in FS */
+ if (((uint8_t*)record_key - node < HFS_FIRST_REC)
+ || ((uint8_t*)record_key - node
+ >= PED_SECTOR_SIZE_DEFAULT
+ - 2 * (signed)(record_number+1))) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("The file system contains errors."));
+ return 0;
+ }
+ if (hfs_extent_key_cmp(record_key, key) <= 0)
+ break;
+ }
+ if (!i) return 0;
+ if (desc->type == HFS_IDX_NODE) {
+ unsigned int skip;
+
+ skip = (1 + record_key->key_length + 1) & ~1;
+ node_number = PED_BE32_TO_CPU (*((uint32_t *)
+ (((uint8_t *) record_key) + skip)));
+ if (!hfs_file_read_sector(b_tree_file, node,
+ node_number))
+ return 0;
+ } else
+ break;
+ }
+
+ /* copy the result if needed */
+ if (record_size)
+ memcpy (record_out, record_key, record_size);
+
+ /* send record reference if needed */
+ if (record_ref) {
+ record_ref->node_size = 1; /* in sectors */
+ record_ref->node_number = node_number;
+ record_ref->record_pos = (uint8_t*)record_key - node;
+ record_ref->record_number = i;
+ }
+
+ /* success */
+ return 1;
+}
+
+/* free the bad blocks linked list */
+void
+hfs_free_bad_blocks_list(HfsPrivateLinkExtent* first)
+{
+ HfsPrivateLinkExtent* next;
+
+ while (first) {
+ next = first->next;
+ ped_free (first);
+ first = next;
+ }
+}
+
+/* This function reads bad blocks extents in the extents file
+ and store it in f.s. specific data of fs */
+int
+hfs_read_bad_blocks (const PedFileSystem *fs)
+{
+ HfsPrivateFSData* priv_data = (HfsPrivateFSData*)
+ fs->type_specific;
+
+ if (priv_data->bad_blocks_loaded)
+ return 1;
+
+ {
+ uint8_t record[sizeof (HfsExtentKey)
+ + sizeof (HfsExtDataRec)];
+ HfsExtentKey search;
+ HfsExtentKey* ret_key = (HfsExtentKey*) record;
+ HfsExtDescriptor* ret_cache = (HfsExtDescriptor*)
+ (record + sizeof (HfsExtentKey));
+ unsigned int block, last_start, first_pass = 1;
+
+ search.key_length = sizeof (HfsExtentKey) - 1;
+ search.type = HFS_DATA_FORK;
+ search.file_ID = PED_CPU_TO_BE32 (HFS_BAD_BLOCK_ID);
+
+ last_start = -1; block = 0;
+ while (1) {
+ int i;
+
+ search.start = PED_CPU_TO_BE16 (block);
+ if (!hfs_btree_search (priv_data->extent_file,
+ (HfsPrivateGenericKey*) &search,
+ record, sizeof (record), NULL)
+ || ret_key->file_ID != search.file_ID
+ || ret_key->type != search.type) {
+ if (first_pass)
+ break;
+ else
+ goto errbb;
+ }
+ if (PED_BE16_TO_CPU (ret_key->start) == last_start)
+ break;
+
+ last_start = PED_BE16_TO_CPU (ret_key->start);
+ for (i = 0; i < HFS_EXT_NB; i++) {
+ if (ret_cache[i].block_count) {
+ HfsPrivateLinkExtent* new_xt =
+ (HfsPrivateLinkExtent*) ped_malloc (
+ sizeof (HfsPrivateLinkExtent));
+ if (!new_xt)
+ goto errbb;
+ new_xt->next = priv_data->bad_blocks_xtent_list;
+ memcpy(&(new_xt->extent), ret_cache+i,
+ sizeof (HfsExtDescriptor));
+ priv_data->bad_blocks_xtent_list = new_xt;
+ priv_data->bad_blocks_xtent_nb++;
+ block += PED_BE16_TO_CPU (
+ ret_cache[i].block_count);
+ }
+ }
+ first_pass = 0;
+ }
+
+ priv_data->bad_blocks_loaded = 1;
+ return 1;}
+
+errbb: hfs_free_bad_blocks_list(priv_data->bad_blocks_xtent_list);
+ priv_data->bad_blocks_xtent_list=NULL;
+ priv_data->bad_blocks_xtent_nb=0;
+ return 0;
+}
+
+/* This function check if fblock is a bad block */
+int
+hfs_is_bad_block (const PedFileSystem *fs, unsigned int fblock)
+{
+ HfsPrivateFSData* priv_data = (HfsPrivateFSData*)
+ fs->type_specific;
+ HfsPrivateLinkExtent* walk;
+
+ for (walk = priv_data->bad_blocks_xtent_list; walk; walk = walk->next) {
+ /* Won't compile without the strange cast ! gcc bug ? */
+ /* or maybe C subtilties... */
+ if ((fblock >= PED_BE16_TO_CPU (walk->extent.start_block)) &&
+ (fblock < (unsigned int) (PED_BE16_TO_CPU (
+ walk->extent.start_block)
+ + PED_BE16_TO_CPU (
+ walk->extent.block_count))))
+ return 1;
+ }
+
+ return 0;
+}
+
+/* This function returns the first sector of the last free block of an
+ HFS volume we can get after a hfs_pack_free_space_from_block call */
+/* On error this function returns 0 */
+PedSector
+hfs_get_empty_end (const PedFileSystem *fs)
+{
+ HfsPrivateFSData* priv_data = (HfsPrivateFSData*)
+ fs->type_specific;
+ HfsMasterDirectoryBlock* mdb = priv_data->mdb;
+ HfsPrivateLinkExtent* link;
+ unsigned int block, last_bad, end_free_blocks;
+
+ /* find the next block to the last bad block of the volume */
+ if (!hfs_read_bad_blocks (fs))
+ return 0;
+
+ last_bad = 0;
+ for (link = priv_data->bad_blocks_xtent_list; link; link = link->next) {
+ if ((unsigned int) PED_BE16_TO_CPU (link->extent.start_block)
+ + PED_BE16_TO_CPU (link->extent.block_count) > last_bad)
+ last_bad = PED_BE16_TO_CPU (link->extent.start_block)
+ + PED_BE16_TO_CPU (link->extent.block_count);
+ }
+
+ /* Count the free blocks from last_bad to the end of the volume */
+ end_free_blocks = 0;
+ for (block = last_bad;
+ block < PED_BE16_TO_CPU (mdb->total_blocks);
+ block++) {
+ if (!TST_BLOC_OCCUPATION(priv_data->alloc_map,block))
+ end_free_blocks++;
+ }
+
+ /* Calculate the block that will by the first free at the
+ end of the volume */
+ block = PED_BE16_TO_CPU (mdb->total_blocks) - end_free_blocks;
+
+ return (PedSector) PED_BE16_TO_CPU (mdb->start_block)
+ + (PedSector) block * (PED_BE32_TO_CPU (mdb->block_size)
+ / PED_SECTOR_SIZE_DEFAULT);
+}
+
+/* return the block which should be used to pack data to have at
+ least free fblock blocks at the end of the volume */
+unsigned int
+hfs_find_start_pack (const PedFileSystem *fs, unsigned int fblock)
+{
+ HfsPrivateFSData* priv_data = (HfsPrivateFSData*)
+ fs->type_specific;
+ unsigned int block;
+
+ for (block = PED_BE16_TO_CPU (priv_data->mdb->total_blocks) - 1;
+ block && fblock;
+ block--) {
+ if (!TST_BLOC_OCCUPATION(priv_data->alloc_map,block))
+ fblock--;
+ }
+
+ while (block && !TST_BLOC_OCCUPATION(priv_data->alloc_map,block))
+ block--;
+ if (TST_BLOC_OCCUPATION(priv_data->alloc_map,block))
+ block++;
+
+ return block;
+}
+
+#endif /* !DISCOVER_ONLY */
diff --git a/parted-1.8.7/libparted/fs/hfs/advfs.h b/parted-1.8.7/libparted/fs/hfs/advfs.h
new file mode 100644
index 0000000..8e23fb6
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/advfs.h
@@ -0,0 +1,49 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2004 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef _ADVFS_H
+#define _ADVFS_H
+
+#include <parted/parted.h>
+#include <parted/endian.h>
+#include <parted/debug.h>
+
+#include "hfs.h"
+
+int
+hfs_btree_search (HfsPrivateFile* b_tree_file, HfsPrivateGenericKey* key,
+ void *record_out, unsigned int record_size,
+ HfsCPrivateLeafRec* record_ref);
+
+void
+hfs_free_bad_blocks_list(HfsPrivateLinkExtent* first);
+
+int
+hfs_read_bad_blocks (const PedFileSystem *fs);
+
+int
+hfs_is_bad_block (const PedFileSystem *fs, unsigned int fblock);
+
+PedSector
+hfs_get_empty_end (const PedFileSystem *fs);
+
+unsigned int
+hfs_find_start_pack (const PedFileSystem *fs, unsigned int fblock);
+
+#endif /* _ADVFS_H */
diff --git a/parted-1.8.7/libparted/fs/hfs/advfs_plus.c b/parted-1.8.7/libparted/fs/hfs/advfs_plus.c
new file mode 100644
index 0000000..c6eae59
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/advfs_plus.c
@@ -0,0 +1,384 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2004, 2005 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef DISCOVER_ONLY
+
+#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 "hfs.h"
+#include "advfs.h"
+#include "file_plus.h"
+
+#include "advfs_plus.h"
+
+/* - if a < b, 0 if a == b, + if a > b */
+/* Comparaison is done in the following order : */
+/* CNID, then fork type, then start block */
+static int
+hfsplus_extent_key_cmp(HfsPPrivateGenericKey* a, HfsPPrivateGenericKey* b)
+{
+ HfsPExtentKey* key1 = (HfsPExtentKey*) a;
+ HfsPExtentKey* key2 = (HfsPExtentKey*) b;
+
+ if (key1->file_ID != key2->file_ID)
+ return PED_BE32_TO_CPU(key1->file_ID) <
+ PED_BE32_TO_CPU(key2->file_ID) ?
+ -1 : +1;
+
+ if (key1->type != key2->type)
+ return (int)(key1->type - key2->type);
+
+ if (key1->start == key2->start)
+ return 0;
+ return PED_BE32_TO_CPU(key1->start) <
+ PED_BE32_TO_CPU(key2->start) ?
+ -1 : +1;
+}
+
+/* do a B-Tree lookup */
+/* read the first record immediatly inferior or egal to the given key */
+/* return 0 on error */
+/* record_out _must_ be large enough to receive the whole record (key + data) */
+/* WARNING : the search function called only handle Extents BTree */
+/* so modify this function if you want to do lookup in */
+/* other BTrees has well */
+int
+hfsplus_btree_search (HfsPPrivateFile* b_tree_file, HfsPPrivateGenericKey* key,
+ void *record_out, unsigned int record_size,
+ HfsCPrivateLeafRec* record_ref)
+{
+ uint8_t node_1[PED_SECTOR_SIZE_DEFAULT];
+ uint8_t* node;
+ HfsPHeaderRecord* header;
+ HfsPNodeDescriptor* desc = (HfsPNodeDescriptor*) node_1;
+ HfsPPrivateGenericKey* record_key = NULL;
+ unsigned int node_number, record_number, size, bsize;
+ int i;
+
+ /* Read the header node */
+ if (!hfsplus_file_read_sector(b_tree_file, node_1, 0))
+ return 0;
+ header = (HfsPHeaderRecord*) (node_1 + HFS_FIRST_REC);
+
+ /* Get the node number of the root */
+ node_number = PED_BE32_TO_CPU (header->root_node);
+ if (!node_number)
+ return 0;
+
+ /* Get the size of a node in sectors and allocate buffer */
+ size = (bsize = PED_BE16_TO_CPU (header->node_size)) / PED_SECTOR_SIZE_DEFAULT;
+ node = (uint8_t*) ped_malloc (bsize);
+ if (!node)
+ return 0;
+ desc = (HfsPNodeDescriptor*) node;
+
+ /* Read the root node */
+ if (!hfsplus_file_read (b_tree_file, node,
+ (PedSector) node_number * size, size))
+ return 0;
+
+ /* Follow the white rabbit */
+ while (1) {
+ record_number = PED_BE16_TO_CPU (desc->rec_nb);
+ for (i = record_number; i; i--) {
+ record_key = (HfsPPrivateGenericKey*)
+ (node + PED_BE16_TO_CPU(*((uint16_t *)
+ (node+(bsize - 2*i)))));
+ /* check for obvious error in FS */
+ if (((uint8_t*)record_key - node < HFS_FIRST_REC)
+ || ((uint8_t*)record_key - node
+ >= (signed)bsize
+ - 2 * (signed)(record_number+1))) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("The file system contains errors."));
+ ped_free (node);
+ return 0;
+ }
+ if (hfsplus_extent_key_cmp(record_key, key) <= 0)
+ break;
+ }
+ if (!i) { ped_free (node); return 0; }
+ if (desc->type == HFS_IDX_NODE) {
+ unsigned int skip;
+
+ skip = ( 2 + PED_BE16_TO_CPU (record_key->key_length)
+ + 1 ) & ~1;
+ node_number = PED_BE32_TO_CPU (*((uint32_t *)
+ (((uint8_t *) record_key) + skip)));
+ if (!hfsplus_file_read(b_tree_file, node,
+ (PedSector) node_number * size,
+ size)) {
+ ped_free (node);
+ return 0;
+ }
+ } else
+ break;
+ }
+
+ /* copy the result if needed */
+ if (record_size)
+ memcpy (record_out, record_key, record_size);
+
+ /* send record reference if needed */
+ if (record_ref) {
+ record_ref->node_size = size; /* in sectors */
+ record_ref->node_number = node_number;
+ record_ref->record_pos = (uint8_t*)record_key - node;
+ record_ref->record_number = i;
+ }
+
+ /* success */
+ ped_free (node);
+ return 1;
+}
+
+/* free the bad blocks linked list */
+void
+hfsplus_free_bad_blocks_list(HfsPPrivateLinkExtent* first)
+{
+ HfsPPrivateLinkExtent* next;
+
+ while (first) {
+ next = first->next;
+ ped_free (first);
+ first = next;
+ }
+}
+
+/* This function reads bad blocks extents in the extents file
+ and store it in f.s. specific data of fs */
+int
+hfsplus_read_bad_blocks (const PedFileSystem *fs)
+{
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+
+ if (priv_data->bad_blocks_loaded)
+ return 1;
+
+ {
+ uint8_t record[sizeof (HfsPExtentKey)
+ + sizeof (HfsPExtDataRec)];
+ HfsPExtentKey search;
+ HfsPExtentKey* ret_key = (HfsPExtentKey*) record;
+ HfsPExtDescriptor* ret_cache = (HfsPExtDescriptor*)
+ (record + sizeof (HfsPExtentKey));
+ int block, first_pass = 1;
+ unsigned int last_start;
+
+ search.key_length = sizeof (HfsExtentKey) - 2;
+ search.type = HFS_DATA_FORK;
+ search.pad = 0;
+ search.file_ID = PED_CPU_TO_BE32 (HFS_BAD_BLOCK_ID);
+
+ last_start = -1; block = 0;
+ while (1) {
+ int i;
+
+ search.start = PED_CPU_TO_BE32 (block);
+ if (!hfsplus_btree_search (priv_data->extents_file,
+ (HfsPPrivateGenericKey*) &search,
+ record, sizeof (record), NULL)
+ || ret_key->file_ID != search.file_ID
+ || ret_key->type != search.type) {
+ if (first_pass)
+ break;
+ else
+ goto errbbp;
+ }
+ if (PED_BE32_TO_CPU (ret_key->start) == last_start)
+ break;
+
+ last_start = PED_BE32_TO_CPU (ret_key->start);
+ for (i = 0; i < HFSP_EXT_NB; i++) {
+ if (ret_cache[i].block_count) {
+ HfsPPrivateLinkExtent* new_xt =
+ (HfsPPrivateLinkExtent*) ped_malloc (
+ sizeof (HfsPPrivateLinkExtent));
+ if (!new_xt)
+ goto errbbp;
+ new_xt->next = priv_data->bad_blocks_xtent_list;
+ memcpy (&(new_xt->extent), ret_cache+i,
+ sizeof (HfsPExtDescriptor));
+ priv_data->bad_blocks_xtent_list = new_xt;
+ priv_data->bad_blocks_xtent_nb++;
+ block += PED_BE32_TO_CPU (
+ ret_cache[i].block_count);
+ }
+ }
+ first_pass = 0;
+ }
+
+ priv_data->bad_blocks_loaded = 1;
+ return 1;}
+
+errbbp: hfsplus_free_bad_blocks_list(priv_data->bad_blocks_xtent_list);
+ priv_data->bad_blocks_xtent_list=NULL;
+ priv_data->bad_blocks_xtent_nb=0;
+ return 0;
+}
+
+/* This function check if fblock is a bad block */
+int
+hfsplus_is_bad_block (const PedFileSystem *fs, unsigned int fblock)
+{
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+ HfsPPrivateLinkExtent* walk;
+
+ for (walk = priv_data->bad_blocks_xtent_list; walk; walk = walk->next) {
+ /* Won't compile without the strange cast ! gcc bug ? */
+ /* or maybe C subtilties... */
+ if ((fblock >= PED_BE32_TO_CPU (walk->extent.start_block)) &&
+ (fblock < (unsigned int)(PED_BE32_TO_CPU (
+ walk->extent.start_block)
+ + PED_BE32_TO_CPU (walk->extent.block_count))))
+ return 1;
+ }
+
+ return 0;
+}
+
+/* This function returns the first sector of the last free block of
+ an HFS+ volume we can get after a hfsplus_pack_free_space_from_block call */
+PedSector
+hfsplus_get_empty_end (const PedFileSystem *fs)
+{
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+ HfsPVolumeHeader* vh = priv_data->vh;
+ HfsPPrivateLinkExtent* link;
+ unsigned int block, last_bad, end_free_blocks;
+
+ /* find the next block to the last bad block of the volume */
+ if (!hfsplus_read_bad_blocks (fs)) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Bad blocks could not be read."));
+ return 0;
+ }
+
+ last_bad = 0;
+ for (link = priv_data->bad_blocks_xtent_list; link; link = link->next) {
+ if ((unsigned int) PED_BE32_TO_CPU (link->extent.start_block)
+ + PED_BE32_TO_CPU (link->extent.block_count) > last_bad)
+ last_bad = PED_BE32_TO_CPU (link->extent.start_block)
+ + PED_BE32_TO_CPU (link->extent.block_count);
+ }
+
+ /* Count the free blocks from last_bad to the end of the volume */
+ end_free_blocks = 0;
+ for (block = last_bad;
+ block < PED_BE32_TO_CPU (vh->total_blocks);
+ block++) {
+ if (!TST_BLOC_OCCUPATION(priv_data->alloc_map,block))
+ end_free_blocks++;
+ }
+
+ /* Calculate the block that will by the first free at
+ the end of the volume */
+ block = PED_BE32_TO_CPU (vh->total_blocks) - end_free_blocks;
+
+ return (PedSector) block * ( PED_BE32_TO_CPU (vh->block_size)
+ / PED_SECTOR_SIZE_DEFAULT );
+}
+
+/* On error, returns 0 */
+PedSector
+hfsplus_get_min_size (const PedFileSystem *fs)
+{
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+ PedSector min_size;
+
+ /* don't need to add anything because every sector
+ can be part of allocation blocks in HFS+, and
+ the last block _must_ be reserved */
+ min_size = hfsplus_get_empty_end(fs);
+ if (!min_size) return 0;
+
+ if (priv_data->wrapper) {
+ HfsPrivateFSData* hfs_priv_data = (HfsPrivateFSData*)
+ priv_data->wrapper->type_specific;
+ unsigned int hfs_sect_block;
+ PedSector hgee;
+ hfs_sect_block =
+ PED_BE32_TO_CPU (hfs_priv_data->mdb->block_size)
+ / PED_SECTOR_SIZE_DEFAULT;
+ /*
+ * if hfs+ is embedded in an hfs wrapper then the new size is :
+ * the new size of the hfs+ volume rounded up to the size
+ * of hfs blocks
+ * + the minimum size of the hfs wrapper without any hfs+
+ * modification
+ * - the current size of the hfs+ volume in the hfs wrapper
+ */
+ hgee = hfs_get_empty_end(priv_data->wrapper);
+ if (!hgee) return 0;
+ min_size = ((min_size + hfs_sect_block - 1) / hfs_sect_block)
+ * hfs_sect_block
+ + hgee + 2
+ - (PedSector) PED_BE16_TO_CPU ( hfs_priv_data->mdb
+ ->old_new.embedded
+ .location.block_count )
+ * hfs_sect_block;
+ }
+
+ return min_size;
+}
+
+/* return the block which should be used to pack data to have
+ at least free fblock blocks at the end of the volume */
+unsigned int
+hfsplus_find_start_pack (const PedFileSystem *fs, unsigned int fblock)
+{
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+ unsigned int block;
+
+ for (block = PED_BE32_TO_CPU (priv_data->vh->total_blocks) - 1;
+ block && fblock;
+ block--) {
+ if (!TST_BLOC_OCCUPATION(priv_data->alloc_map,block))
+ fblock--;
+ }
+
+ while (block && !TST_BLOC_OCCUPATION(priv_data->alloc_map,block))
+ block--;
+ if (TST_BLOC_OCCUPATION(priv_data->alloc_map,block))
+ block++;
+
+ return block;
+}
+
+#endif /* !DISCOVER_ONLY */
diff --git a/parted-1.8.7/libparted/fs/hfs/advfs_plus.h b/parted-1.8.7/libparted/fs/hfs/advfs_plus.h
new file mode 100644
index 0000000..3d5ece4
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/advfs_plus.h
@@ -0,0 +1,52 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2004 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef _ADVFS_PLUS_H
+#define _ADVFS_PLUS_H
+
+#include <parted/parted.h>
+#include <parted/endian.h>
+#include <parted/debug.h>
+
+#include "hfs.h"
+
+int
+hfsplus_btree_search (HfsPPrivateFile* b_tree_file, HfsPPrivateGenericKey* key,
+ void *record_out, unsigned int record_size,
+ HfsCPrivateLeafRec* record_ref);
+
+void
+hfsplus_free_bad_blocks_list(HfsPPrivateLinkExtent* first);
+
+int
+hfsplus_read_bad_blocks (const PedFileSystem *fs);
+
+int
+hfsplus_is_bad_block (const PedFileSystem *fs, unsigned int fblock);
+
+PedSector
+hfsplus_get_empty_end (const PedFileSystem *fs);
+
+PedSector
+hfsplus_get_min_size (const PedFileSystem *fs);
+
+unsigned int
+hfsplus_find_start_pack (const PedFileSystem *fs, unsigned int fblock);
+
+#endif /* _ADVFS_PLUS_H */
diff --git a/parted-1.8.7/libparted/fs/hfs/cache.c b/parted-1.8.7/libparted/fs/hfs/cache.c
new file mode 100644
index 0000000..115b4b7
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/cache.c
@@ -0,0 +1,239 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2004, 2005 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef DISCOVER_ONLY
+
+#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 "cache.h"
+
+static HfsCPrivateCacheTable*
+hfsc_new_cachetable(unsigned int size)
+{
+ HfsCPrivateCacheTable* ret;
+
+ ret = (HfsCPrivateCacheTable*) ped_malloc(sizeof(*ret));
+ if (!ret) return NULL;
+
+ ret->next_cache = NULL;
+ ret->table_size = size;
+ ret->table_first_free = 0;
+
+ ret->table = ped_malloc(sizeof(*ret->table)*size);
+ if (!ret->table) { ped_free(ret); return NULL; }
+ memset(ret->table, 0, sizeof(*ret->table)*size);
+
+ return ret;
+}
+
+HfsCPrivateCache*
+hfsc_new_cache(unsigned int block_number, unsigned int file_number)
+{
+ unsigned int cachetable_size, i;
+ HfsCPrivateCache* ret;
+
+ ret = (HfsCPrivateCache*) ped_malloc(sizeof(*ret));
+ if (!ret) return NULL;
+ ret->block_number = block_number;
+ /* following code avoid integer overflow */
+ ret->linked_ref_size = block_number > block_number + ((1<<CR_SHIFT)-1) ?
+ ( block_number >> CR_SHIFT ) + 1 :
+ ( block_number + ((1<<CR_SHIFT)-1) ) >> CR_SHIFT
+ ;
+
+ ret->linked_ref = (HfsCPrivateExtent**)
+ ped_malloc( sizeof(*ret->linked_ref)
+ * ret->linked_ref_size );
+ if (!ret->linked_ref) { ped_free(ret); return NULL; }
+
+ cachetable_size = file_number + file_number / CR_OVER_DIV + CR_ADD_CST;
+ if (cachetable_size < file_number) cachetable_size = (unsigned) -1;
+ ret->first_cachetable_size = cachetable_size;
+ ret->table_list = hfsc_new_cachetable(cachetable_size);
+ if (!ret->table_list) {
+ ped_free(ret->linked_ref);
+ ped_free(ret);
+ return NULL;
+ }
+ ret->last_table = ret->table_list;
+
+ for (i = 0; i < ret->linked_ref_size; ++i)
+ ret->linked_ref[i] = NULL;
+
+ ret->needed_alloc_size = 0;
+
+ return ret;
+}
+
+static void
+hfsc_delete_cachetable(HfsCPrivateCacheTable* list)
+{
+ HfsCPrivateCacheTable* next;
+
+ while (list) {
+ ped_free (list->table);
+ next = list->next_cache;
+ ped_free (list);
+ list = next;
+ }
+}
+
+void
+hfsc_delete_cache(HfsCPrivateCache* cache)
+{
+ hfsc_delete_cachetable(cache->table_list);
+ ped_free(cache->linked_ref);
+ ped_free(cache);
+}
+
+HfsCPrivateExtent*
+hfsc_cache_add_extent(HfsCPrivateCache* cache, uint32_t start, uint32_t length,
+ uint32_t block, uint16_t offset, uint8_t sbb,
+ uint8_t where, uint8_t ref_index)
+{
+ HfsCPrivateExtent* ext;
+ unsigned int idx = start >> CR_SHIFT;
+
+ PED_ASSERT(idx < cache->linked_ref_size, return NULL);
+
+ for (ext = cache->linked_ref[idx];
+ ext && start != ext->ext_start;
+ ext = ext->next);
+
+ if (ext) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Trying to register an extent starting at block "
+ "0x%X, but another one already exists at this "
+ "position. You should check the file system!"),
+ start);
+ return NULL;
+ }
+
+ if ( cache->last_table->table_first_free
+ == cache->last_table->table_size ) {
+ cache->last_table->next_cache =
+ hfsc_new_cachetable( ( cache->first_cachetable_size
+ / CR_NEW_ALLOC_DIV )
+ + CR_ADD_CST );
+ if (!cache->last_table->next_cache)
+ return NULL;
+ cache->last_table = cache->last_table->next_cache;
+ }
+
+ ext = cache->last_table->table+(cache->last_table->table_first_free++);
+
+ ext->ext_start = start;
+ ext->ext_length = length;
+ ext->ref_block = block;
+ ext->ref_offset = offset;
+ ext->sect_by_block = sbb;
+ ext->where = where;
+ ext->ref_index = ref_index;
+
+ ext->next = cache->linked_ref[idx];
+ cache->linked_ref[idx] = ext;
+
+ cache->needed_alloc_size = cache->needed_alloc_size >
+ (unsigned) PED_SECTOR_SIZE_DEFAULT * sbb ?
+ cache->needed_alloc_size :
+ (unsigned) PED_SECTOR_SIZE_DEFAULT * sbb;
+
+ return ext;
+}
+
+HfsCPrivateExtent*
+hfsc_cache_search_extent(HfsCPrivateCache* cache, uint32_t start)
+{
+ HfsCPrivateExtent* ret;
+ unsigned int idx = start >> CR_SHIFT;
+
+ PED_ASSERT(idx < cache->linked_ref_size, return NULL);
+
+ for (ret = cache->linked_ref[idx];
+ ret && start != ret->ext_start;
+ ret = ret->next);
+
+ return ret;
+}
+
+/* Can't fail if extent begining at old_start exists */
+/* Returns 0 if no such extent, or on error */
+HfsCPrivateExtent*
+hfsc_cache_move_extent(HfsCPrivateCache* cache, uint32_t old_start,
+ uint32_t new_start)
+{
+ HfsCPrivateExtent** ppext;
+ HfsCPrivateExtent* pext;
+
+ unsigned int idx1 = old_start >> CR_SHIFT;
+ unsigned int idx2 = new_start >> CR_SHIFT;
+
+ PED_ASSERT(idx1 < cache->linked_ref_size, return NULL);
+ PED_ASSERT(idx2 < cache->linked_ref_size, return NULL);
+
+ for (pext = cache->linked_ref[idx2];
+ pext && new_start != pext->ext_start;
+ pext = pext->next);
+
+ if (pext) {
+ ped_exception_throw (
+ PED_EXCEPTION_BUG,
+ PED_EXCEPTION_CANCEL,
+ _("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!"),
+ old_start, new_start);
+ return NULL;
+ }
+
+ for (ppext = &(cache->linked_ref[idx1]);
+ (*ppext) && old_start != (*ppext)->ext_start;
+ ppext = &((*ppext)->next));
+
+ if (!(*ppext)) return NULL;
+
+ /* removing the extent from the cache */
+ pext = *ppext;
+ (*ppext) = pext->next;
+
+ /* change ext_start and insert the extent again */
+ pext->ext_start = new_start;
+ pext->next = cache->linked_ref[idx2];
+ cache->linked_ref[idx2] = pext;
+
+ return pext;
+}
+
+#endif /* DISCOVER_ONLY */
diff --git a/parted-1.8.7/libparted/fs/hfs/cache.h b/parted-1.8.7/libparted/fs/hfs/cache.h
new file mode 100644
index 0000000..9e49ef8
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/cache.h
@@ -0,0 +1,118 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2004, 2005 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef _CACHE_H
+#define _CACHE_H
+
+#include <parted/parted.h>
+#include <parted/endian.h>
+#include <parted/debug.h>
+
+#include "hfs.h"
+
+/* CR => CACHE REF */
+#define CR_NULL 0 /* reserved */
+#define CR_PRIM_CAT 1
+#define CR_PRIM_EXT 2
+#define CR_PRIM_ATTR 3
+#define CR_PRIM_ALLOC 4
+#define CR_PRIM_START 5
+#define CR_BTREE_CAT 6
+#define CR_BTREE_ATTR 7
+#define CR_BTREE_EXT_0 8
+#define CR_BTREE_EXT_CAT 9
+#define CR_BTREE_EXT_EXT 10 /* should not happen ! */
+#define CR_BTREE_EXT_ATTR 11
+#define CR_BTREE_EXT_ALLOC 12
+#define CR_BTREE_EXT_START 13 /* unneeded in current code */
+#define CR_BTREE_CAT_JIB 14 /* journal info block */
+#define CR_BTREE_CAT_JL 15 /* journal */
+/* 16 -> 31 || high order bit */ /* reserved */
+
+/* tuning */
+#define CR_SHIFT 8 /* number of bits to shift start_block by */
+ /* to get the index of the linked list */
+#define CR_OVER_DIV 16 /* alloc a table for (1+1/CR_OVER_DIV) *
+ file_number + CR_ADD_CST */
+#define CR_ADD_CST 16
+#define CR_NEW_ALLOC_DIV 4 /* divide the size of the first alloc table
+ by this value to allocate next tables */
+
+/* See DOC for an explaination of this structure */
+/* Access read only from outside cache.c */
+struct _HfsCPrivateExtent {
+ struct _HfsCPrivateExtent* next;
+ uint32_t ext_start;
+ uint32_t ext_length;
+ uint32_t ref_block;
+ uint16_t ref_offset;
+ uint8_t sect_by_block;
+ unsigned where : 5;
+ unsigned ref_index : 3; /* 0 -> 7 */
+};
+typedef struct _HfsCPrivateExtent HfsCPrivateExtent;
+
+/* Internaly used by cache.c for custom memory managment only */
+struct _HfsCPrivateCacheTable {
+ struct _HfsCPrivateCacheTable* next_cache;
+ HfsCPrivateExtent* table;
+ unsigned int table_size;
+ unsigned int table_first_free;
+ /* first_elemt ? */
+};
+typedef struct _HfsCPrivateCacheTable HfsCPrivateCacheTable;
+
+/* Internaly used by cache.c for custom memory managment
+ and cache handling only */
+struct _HfsCPrivateCache {
+ HfsCPrivateCacheTable* table_list;
+ HfsCPrivateCacheTable* last_table;
+ HfsCPrivateExtent** linked_ref;
+ unsigned int linked_ref_size;
+ unsigned int block_number;
+ unsigned int first_cachetable_size;
+ unsigned int needed_alloc_size;
+};
+typedef struct _HfsCPrivateCache HfsCPrivateCache;
+
+HfsCPrivateCache*
+hfsc_new_cache(unsigned int block_number, unsigned int file_number);
+
+void
+hfsc_delete_cache(HfsCPrivateCache* cache);
+
+HfsCPrivateExtent*
+hfsc_cache_add_extent(HfsCPrivateCache* cache, uint32_t start, uint32_t length,
+ uint32_t block, uint16_t offset, uint8_t sbb,
+ uint8_t where, uint8_t index);
+
+HfsCPrivateExtent*
+hfsc_cache_search_extent(HfsCPrivateCache* cache, uint32_t start);
+
+HfsCPrivateExtent*
+hfsc_cache_move_extent(HfsCPrivateCache* cache, uint32_t old_start,
+ uint32_t new_start);
+
+static __inline__ unsigned int
+hfsc_cache_needed_buffer(HfsCPrivateCache* cache)
+{
+ return cache->needed_alloc_size;
+}
+
+#endif /* _CACHE_H */
diff --git a/parted-1.8.7/libparted/fs/hfs/file.c b/parted-1.8.7/libparted/fs/hfs/file.c
new file mode 100644
index 0000000..c12f253
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/file.c
@@ -0,0 +1,229 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2004, 2005 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef DISCOVER_ONLY
+
+#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 "advfs.h"
+
+#include "file.h"
+
+/* Open the data fork of a file with its first three extents and its CNID */
+HfsPrivateFile*
+hfs_file_open (PedFileSystem *fs, uint32_t CNID,
+ HfsExtDataRec ext_desc, PedSector sect_nb)
+{
+ HfsPrivateFile* file;
+
+ file = (HfsPrivateFile*) ped_malloc (sizeof (HfsPrivateFile));
+ if (!file) return NULL;
+
+ file->fs = fs;
+ file->sect_nb = sect_nb;
+ file->CNID = CNID;
+ memcpy(file->first, ext_desc, sizeof (HfsExtDataRec));
+ file->start_cache = 0;
+
+ return file;
+}
+
+/* Close an HFS file */
+void
+hfs_file_close (HfsPrivateFile* file)
+{
+ ped_free (file);
+}
+
+/* warning : only works on data forks */
+static int
+hfs_get_extent_containing (HfsPrivateFile* file, unsigned int block,
+ HfsExtDataRec cache, uint16_t* ptr_start_cache)
+{
+ uint8_t record[sizeof (HfsExtentKey)
+ + sizeof (HfsExtDataRec)];
+ HfsExtentKey search;
+ HfsExtentKey* ret_key = (HfsExtentKey*) record;
+ HfsExtDescriptor* ret_cache = (HfsExtDescriptor*)
+ (record + sizeof (HfsExtentKey));
+ HfsPrivateFSData* priv_data = (HfsPrivateFSData*)
+ file->fs->type_specific;
+
+ search.key_length = sizeof (HfsExtentKey) - 1;
+ search.type = HFS_DATA_FORK;
+ search.file_ID = file->CNID;
+ search.start = PED_CPU_TO_BE16 (block);
+
+ if (!hfs_btree_search (priv_data->extent_file,
+ (HfsPrivateGenericKey*) &search,
+ record, sizeof (record), NULL))
+ return 0;
+
+ if (ret_key->file_ID != search.file_ID || ret_key->type != search.type)
+ return 0;
+
+ memcpy (cache, ret_cache, sizeof(HfsExtDataRec));
+ *ptr_start_cache = PED_BE16_TO_CPU (ret_key->start);
+
+ return 1;
+}
+
+/* find and return the nth sector of a file */
+/* return 0 on error */
+static PedSector
+hfs_file_find_sector (HfsPrivateFile* file, PedSector sector)
+{
+ HfsPrivateFSData* priv_data = (HfsPrivateFSData*)
+ file->fs->type_specific;
+ unsigned int sect_by_block = PED_BE32_TO_CPU (
+ priv_data->mdb->block_size)
+ / PED_SECTOR_SIZE_DEFAULT;
+ unsigned int i, s, vol_block;
+ unsigned int block = sector / sect_by_block;
+ unsigned int offset = sector % sect_by_block;
+
+ /* in the three first extent */
+ for (s = 0, i = 0; i < HFS_EXT_NB; i++) {
+ if ((block >= s) && ( block < s + PED_BE16_TO_CPU (
+ file->first[i].block_count))) {
+ vol_block = (block - s) + PED_BE16_TO_CPU (
+ file->first[i].start_block);
+ goto sector_found;
+ }
+ s += PED_BE16_TO_CPU (file->first[i].block_count);
+ }
+
+ /* in the three cached extent */
+ if (file->start_cache && block >= file->start_cache)
+ for (s = file->start_cache, i = 0; i < HFS_EXT_NB; i++) {
+ if ((block >= s) && (block < s + PED_BE16_TO_CPU (
+ file->cache[i].block_count))) {
+ vol_block = (block - s) + PED_BE16_TO_CPU (
+ file->cache[i].start_block);
+ goto sector_found;
+ }
+ s += PED_BE16_TO_CPU (file->cache[i].block_count);
+ }
+
+ /* update cache */
+ if (!hfs_get_extent_containing (file, block, file->cache,
+ &(file->start_cache))) {
+ ped_exception_throw (
+ PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_CANCEL,
+ _("Could not update the extent cache for HFS file with "
+ "CNID %X."),
+ PED_BE32_TO_CPU(file->CNID));
+ return 0;
+ }
+
+ /* in the three cached extent */
+ PED_ASSERT(file->start_cache && block >= file->start_cache, return 0);
+ for (s = file->start_cache, i = 0; i < HFS_EXT_NB; i++) {
+ if ((block >= s) && (block < s + PED_BE16_TO_CPU (
+ file->cache[i].block_count))) {
+ vol_block = (block - s) + PED_BE16_TO_CPU (
+ file->cache[i].start_block);
+ goto sector_found;
+ }
+ s += PED_BE16_TO_CPU (file->cache[i].block_count);
+ }
+
+ return 0;
+
+ sector_found:
+ return (PedSector) PED_BE16_TO_CPU (priv_data->mdb->start_block)
+ + (PedSector) vol_block * sect_by_block
+ + offset;
+}
+
+/* Read the nth sector of a file */
+/* return 0 on error */
+int
+hfs_file_read_sector (HfsPrivateFile* file, void *buf, PedSector sector)
+{
+ PedSector abs_sector;
+
+ if (sector >= file->sect_nb) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Trying to read HFS file with CNID %X behind EOF."),
+ PED_BE32_TO_CPU(file->CNID));
+ return 0;
+ }
+
+ abs_sector = hfs_file_find_sector (file, sector);
+ if (!abs_sector) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Could not find sector %lli of HFS file with "
+ "CNID %X."),
+ sector, PED_BE32_TO_CPU(file->CNID));
+ return 0;
+ }
+
+ return ped_geometry_read (file->fs->geom, buf, abs_sector, 1);
+}
+
+/* Write the nth sector of a file */
+/* return 0 on error */
+int
+hfs_file_write_sector (HfsPrivateFile* file, void *buf, PedSector sector)
+{
+ PedSector abs_sector;
+
+ if (sector >= file->sect_nb) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Trying to write HFS file with CNID %X behind EOF."),
+ PED_BE32_TO_CPU(file->CNID));
+ return 0;
+ }
+
+ abs_sector = hfs_file_find_sector (file, sector);
+ if (!abs_sector) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Could not find sector %lli of HFS file with "
+ "CNID %X."),
+ sector, PED_BE32_TO_CPU(file->CNID));
+ return 0;
+ }
+
+ return ped_geometry_write (file->fs->geom, buf, abs_sector, 1);
+}
+
+#endif /* !DISCOVER_ONLY */
diff --git a/parted-1.8.7/libparted/fs/hfs/file.h b/parted-1.8.7/libparted/fs/hfs/file.h
new file mode 100644
index 0000000..7fcd21c
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/file.h
@@ -0,0 +1,42 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2004 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef _FILE_H
+#define _FILE_H
+
+#include <parted/parted.h>
+#include <parted/endian.h>
+#include <parted/debug.h>
+
+#include "hfs.h"
+
+HfsPrivateFile*
+hfs_file_open (PedFileSystem *fs, uint32_t CNID,
+ HfsExtDataRec ext_desc, PedSector sect_nb);
+
+void
+hfs_file_close (HfsPrivateFile* file);
+
+int
+hfs_file_read_sector (HfsPrivateFile* file, void *buf, PedSector sector);
+
+int
+hfs_file_write_sector (HfsPrivateFile* file, void *buf, PedSector sector);
+
+#endif /* _FILE_H */
diff --git a/parted-1.8.7/libparted/fs/hfs/file_plus.c b/parted-1.8.7/libparted/fs/hfs/file_plus.c
new file mode 100644
index 0000000..c226a65
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/file_plus.c
@@ -0,0 +1,274 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2004, 2005, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef DISCOVER_ONLY
+
+#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 "advfs_plus.h"
+
+#include "file_plus.h"
+
+/* Open the data fork of a file with its first eight extents and its CNID */
+/* CNID and ext_desc must be in disc order, sect_nb in CPU order */
+/* return null on failure */
+HfsPPrivateFile*
+hfsplus_file_open (PedFileSystem *fs, HfsPNodeID CNID,
+ HfsPExtDataRec ext_desc, PedSector sect_nb)
+{
+ HfsPPrivateFile* file;
+
+ file = (HfsPPrivateFile*) ped_malloc (sizeof (HfsPPrivateFile));
+ if (!file) return NULL;
+
+ file->fs = fs;
+ file->sect_nb = sect_nb;
+ file->CNID = CNID;
+ memcpy(file->first, ext_desc, sizeof (HfsPExtDataRec));
+ file->start_cache = 0;
+
+ return file;
+}
+
+/* Close an HFS+ file */
+void
+hfsplus_file_close (HfsPPrivateFile* file)
+{
+ ped_free (file);
+}
+
+/* warning : only works on data forks */
+static int
+hfsplus_get_extent_containing (HfsPPrivateFile* file, unsigned int block,
+ HfsPExtDataRec cache, uint32_t* ptr_start_cache)
+{
+ uint8_t record[sizeof (HfsPExtentKey)
+ + sizeof (HfsPExtDataRec)];
+ HfsPExtentKey search;
+ HfsPExtentKey* ret_key = (HfsPExtentKey*) record;
+ HfsPExtDescriptor* ret_cache = (HfsPExtDescriptor*)
+ (record + sizeof (HfsPExtentKey));
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ file->fs->type_specific;
+
+ search.key_length = PED_CPU_TO_BE16 (sizeof (HfsPExtentKey) - 2);
+ search.type = HFS_DATA_FORK;
+ search.pad = 0;
+ search.file_ID = file->CNID;
+ search.start = PED_CPU_TO_BE32 (block);
+
+ if (!hfsplus_btree_search (priv_data->extents_file,
+ (HfsPPrivateGenericKey*) &search,
+ record, sizeof (record), NULL))
+ return 0;
+
+ if (ret_key->file_ID != search.file_ID || ret_key->type != search.type)
+ return 0;
+
+ memcpy (cache, ret_cache, sizeof(HfsPExtDataRec));
+ *ptr_start_cache = PED_BE32_TO_CPU (ret_key->start);
+
+ return 1;
+}
+
+/* find a sub extent contained in the desired area */
+/* and with the same starting point */
+/* return 0 in sector_count on error, or the physical area */
+/* on the volume corresponding to the logical area in the file */
+static HfsPPrivateExtent
+hfsplus_file_find_extent (HfsPPrivateFile* file, PedSector sector,
+ unsigned int nb)
+{
+ HfsPPrivateExtent ret = {0,0};
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ file->fs->type_specific;
+ unsigned int sect_by_block = PED_BE32_TO_CPU (
+ priv_data->vh->block_size)
+ / PED_SECTOR_SIZE_DEFAULT;
+ unsigned int i, s, vol_block, size;
+ PedSector sect_size;
+ unsigned int block = sector / sect_by_block;
+ unsigned int offset = sector % sect_by_block;
+
+ /* in the 8 first extent */
+ for (s = 0, i = 0; i < HFSP_EXT_NB; i++) {
+ if ((block >= s) && (block < s + PED_BE32_TO_CPU (
+ file->first[i].block_count))) {
+ vol_block = (block - s)
+ + PED_BE32_TO_CPU (file->first[i]
+ .start_block);
+ size = PED_BE32_TO_CPU (file->first[i].block_count)
+ + s - block;
+ goto plus_sector_found;
+ }
+ s += PED_BE32_TO_CPU (file->first[i].block_count);
+ }
+
+ /* in the 8 cached extent */
+ if (file->start_cache && block >= file->start_cache)
+ for (s = file->start_cache, i = 0; i < HFSP_EXT_NB; i++) {
+ if ((block >= s) && (block < s + PED_BE32_TO_CPU (
+ file->cache[i].block_count))) {
+ vol_block = (block - s)
+ + PED_BE32_TO_CPU (file->cache[i]
+ .start_block);
+ size = PED_BE32_TO_CPU (file->cache[i].block_count)
+ + s - block;
+ goto plus_sector_found;
+ }
+ s += PED_BE32_TO_CPU (file->cache[i].block_count);
+ }
+
+ /* update cache */
+ if (!hfsplus_get_extent_containing (file, block, file->cache,
+ &(file->start_cache))) {
+ ped_exception_throw (
+ PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_CANCEL,
+ _("Could not update the extent cache for HFS+ file "
+ "with CNID %X."),
+ PED_BE32_TO_CPU(file->CNID));
+ return ret; /* ret == {0,0} */
+ }
+
+ /* ret == {0,0} */
+ PED_ASSERT(file->start_cache && block >= file->start_cache, return ret);
+
+ for (s = file->start_cache, i = 0; i < HFSP_EXT_NB; i++) {
+ if ((block >= s) && (block < s + PED_BE32_TO_CPU (
+ file->cache[i].block_count))) {
+ vol_block = (block - s)
+ + PED_BE32_TO_CPU (file->cache[i]
+ .start_block);
+ size = PED_BE32_TO_CPU (file->cache[i].block_count)
+ + s - block;
+ goto plus_sector_found;
+ }
+ s += PED_BE32_TO_CPU (file->cache[i].block_count);
+ }
+
+ return ret;
+
+plus_sector_found:
+ sect_size = (PedSector) size * sect_by_block - offset;
+ ret.start_sector = vol_block * sect_by_block + offset;
+ ret.sector_count = (sect_size < nb) ? sect_size : nb;
+ return ret;
+}
+
+int
+hfsplus_file_read(HfsPPrivateFile* file, void *buf, PedSector sector,
+ unsigned int nb)
+{
+ HfsPPrivateExtent phy_area;
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ file->fs->type_specific;
+ char *b = buf;
+
+ if (sector+nb < sector /* detect overflow */
+ || sector+nb > file->sect_nb) /* out of file */ {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Trying to read HFS+ file with CNID %X behind EOF."),
+ PED_BE32_TO_CPU(file->CNID));
+ return 0;
+ }
+
+ while (nb) {
+ phy_area = hfsplus_file_find_extent(file, sector, nb);
+ if (phy_area.sector_count == 0) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Could not find sector %lli of HFS+ file "
+ "with CNID %X."),
+ sector, PED_BE32_TO_CPU(file->CNID));
+ return 0;
+ }
+ if (!ped_geometry_read(priv_data->plus_geom, b,
+ phy_area.start_sector,
+ phy_area.sector_count))
+ return 0;
+
+ nb -= phy_area.sector_count; /* < nb anyway ... */
+ sector += phy_area.sector_count;
+ b += phy_area.sector_count * PED_SECTOR_SIZE_DEFAULT;
+ }
+
+ return 1;
+}
+
+int
+hfsplus_file_write(HfsPPrivateFile* file, void *buf, PedSector sector,
+ unsigned int nb)
+{
+ HfsPPrivateExtent phy_area;
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ file->fs->type_specific;
+ char *b = buf;
+
+ if (sector+nb < sector /* detect overflow */
+ || sector+nb > file->sect_nb) /* out of file */ {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Trying to write HFS+ file with CNID %X behind EOF."),
+ PED_BE32_TO_CPU(file->CNID));
+ return 0;
+ }
+
+ while (nb) {
+ phy_area = hfsplus_file_find_extent(file, sector, nb);
+ if (phy_area.sector_count == 0) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Could not find sector %lli of HFS+ file "
+ "with CNID %X."),
+ sector, PED_BE32_TO_CPU(file->CNID));
+ return 0;
+ }
+ if (!ped_geometry_write(priv_data->plus_geom, b,
+ phy_area.start_sector,
+ phy_area.sector_count))
+ return 0;
+
+ nb -= phy_area.sector_count; /* < nb anyway ... */
+ sector += phy_area.sector_count;
+ b += phy_area.sector_count * PED_SECTOR_SIZE_DEFAULT;
+ }
+
+ return 1;
+}
+
+#endif /* !DISCOVER_ONLY */
diff --git a/parted-1.8.7/libparted/fs/hfs/file_plus.h b/parted-1.8.7/libparted/fs/hfs/file_plus.h
new file mode 100644
index 0000000..5f48554
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/file_plus.h
@@ -0,0 +1,61 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2004 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef _FILE_PLUS_H
+#define _FILE_PLUS_H
+
+#include <parted/parted.h>
+#include <parted/endian.h>
+#include <parted/debug.h>
+
+#include "hfs.h"
+
+HfsPPrivateFile*
+hfsplus_file_open (PedFileSystem *fs, HfsPNodeID CNID,
+ HfsPExtDataRec ext_desc, PedSector sect_nb);
+
+void
+hfsplus_file_close (HfsPPrivateFile* file);
+
+int
+hfsplus_file_read(HfsPPrivateFile* file, void *buf,
+ PedSector sector, unsigned int nb);
+
+int
+hfsplus_file_write(HfsPPrivateFile* file, void *buf,
+ PedSector sector, unsigned int nb);
+
+/* Read the nth sector of a file */
+/* return 0 on error */
+static __inline__ int
+hfsplus_file_read_sector (HfsPPrivateFile* file, void *buf, PedSector sector)
+{
+ return hfsplus_file_read(file, buf, sector, 1);
+}
+
+/* Write the nth sector of a file */
+/* return 0 on error */
+static __inline__ int
+hfsplus_file_write_sector (HfsPPrivateFile* file, void *buf, PedSector sector)
+{
+ return hfsplus_file_write(file, buf, sector, 1);
+}
+
+
+#endif /* _FILE_PLUS_H */
diff --git a/parted-1.8.7/libparted/fs/hfs/hfs.c b/parted-1.8.7/libparted/fs/hfs/hfs.c
new file mode 100644
index 0000000..3323cc0
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/hfs.c
@@ -0,0 +1,1354 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2000, 2003, 2004, 2005, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+/*
+ 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})
+
+#ifndef DISCOVER_ONLY
+#include "file.h"
+#include "reloc.h"
+#include "advfs.h"
+
+static PedFileSystemType hfs_type;
+static PedFileSystemType hfsplus_type;
+
+
+/* ----- HFS ----- */
+
+/* This is a very unundoable operation */
+/* Maybe I shouldn't touch the alternate MDB ? */
+/* Anyway clobber is call before other fs creation */
+/* So this is a non-issue */
+static int
+hfs_clobber (PedGeometry* geom)
+{
+ uint8_t buf[PED_SECTOR_SIZE_DEFAULT];
+
+ memset (buf, 0, PED_SECTOR_SIZE_DEFAULT);
+
+ /* destroy boot blocks, mdb, alternate mdb ... */
+ return (!!ped_geometry_write (geom, buf, 0, 1)) &
+ (!!ped_geometry_write (geom, buf, 1, 1)) &
+ (!!ped_geometry_write (geom, buf, 2, 1)) &
+ (!!ped_geometry_write (geom, buf, geom->length - 2, 1)) &
+ (!!ped_geometry_write (geom, buf, geom->length - 1, 1)) &
+ (!!ped_geometry_sync (geom));
+}
+
+static PedFileSystem*
+hfs_open (PedGeometry* geom)
+{
+ uint8_t buf[PED_SECTOR_SIZE_DEFAULT];
+ PedFileSystem* fs;
+ HfsMasterDirectoryBlock* mdb;
+ HfsPrivateFSData* priv_data;
+
+ if (!hfsc_can_use_geom (geom))
+ return NULL;
+
+ /* Read MDB */
+ if (!ped_geometry_read (geom, buf, 2, 1))
+ return NULL;
+
+ /* Allocate memory */
+ fs = (PedFileSystem*) ped_malloc (sizeof (PedFileSystem));
+ if (!fs) goto ho;
+ mdb = (HfsMasterDirectoryBlock*)
+ ped_malloc (sizeof (HfsMasterDirectoryBlock));
+ if (!mdb) goto ho_fs;
+ priv_data = (HfsPrivateFSData*)
+ ped_malloc (sizeof (HfsPrivateFSData));
+ if (!priv_data) goto ho_mdb;
+
+ memcpy (mdb, buf, sizeof (HfsMasterDirectoryBlock));
+
+ /* init structures */
+ priv_data->mdb = mdb;
+ priv_data->bad_blocks_loaded = 0;
+ priv_data->bad_blocks_xtent_nb = 0;
+ priv_data->bad_blocks_xtent_list = NULL;
+ priv_data->extent_file =
+ hfs_file_open (fs, PED_CPU_TO_BE32 (HFS_XTENT_ID),
+ mdb->extents_file_rec,
+ PED_CPU_TO_BE32 (mdb->extents_file_size)
+ / PED_SECTOR_SIZE_DEFAULT);
+ if (!priv_data->extent_file) goto ho_pd;
+ priv_data->catalog_file =
+ hfs_file_open (fs, PED_CPU_TO_BE32 (HFS_CATALOG_ID),
+ mdb->catalog_file_rec,
+ PED_CPU_TO_BE32 (mdb->catalog_file_size)
+ / PED_SECTOR_SIZE_DEFAULT);
+ if (!priv_data->catalog_file) goto ho_ce;
+ /* Read allocation blocks */
+ if (!ped_geometry_read(geom, priv_data->alloc_map,
+ PED_BE16_TO_CPU (mdb->volume_bitmap_block),
+ ( PED_BE16_TO_CPU (mdb->total_blocks)
+ + PED_SECTOR_SIZE_DEFAULT * 8 - 1 )
+ / (PED_SECTOR_SIZE_DEFAULT * 8) ) )
+ goto ho_cf;
+
+ fs->type = &hfs_type;
+ fs->geom = ped_geometry_duplicate (geom);
+ if (!fs->geom) goto ho_cf;
+ fs->type_specific = (void*) priv_data;
+ fs->checked = ( PED_BE16_TO_CPU (mdb->volume_attributes)
+ >> HFS_UNMOUNTED ) & 1;
+
+ return fs;
+
+/*--- clean error handling ---*/
+ho_cf: hfs_file_close(priv_data->catalog_file);
+ho_ce: hfs_file_close(priv_data->extent_file);
+ho_pd: ped_free(priv_data);
+ho_mdb: ped_free(mdb);
+ho_fs: ped_free(fs);
+ho: return NULL;
+}
+
+static int
+hfs_close (PedFileSystem *fs)
+{
+ HfsPrivateFSData* priv_data = (HfsPrivateFSData*) fs->type_specific;
+
+ hfs_file_close (priv_data->extent_file);
+ hfs_file_close (priv_data->catalog_file);
+ if (priv_data->bad_blocks_loaded)
+ hfs_free_bad_blocks_list (priv_data->bad_blocks_xtent_list);
+ ped_free (priv_data->mdb);
+ ped_free (priv_data);
+ ped_geometry_destroy (fs->geom);
+ ped_free (fs);
+
+ return 1;
+}
+
+static PedConstraint*
+hfs_get_resize_constraint (const PedFileSystem *fs)
+{
+ PedDevice* dev = fs->geom->dev;
+ PedAlignment start_align;
+ PedGeometry start_sector;
+ PedGeometry full_dev;
+ PedSector min_size;
+
+ if (!ped_alignment_init (&start_align, fs->geom->start, 0))
+ return NULL;
+ if (!ped_geometry_init (&start_sector, dev, fs->geom->start, 1))
+ return NULL;
+ if (!ped_geometry_init (&full_dev, dev, 0, dev->length - 1))
+ return NULL;
+ /* 2 = last two sectors (alternate MDB and unused sector) */
+ min_size = hfs_get_empty_end(fs) + 2;
+ if (min_size == 2) return NULL;
+
+ return ped_constraint_new (&start_align, ped_alignment_any,
+ &start_sector, &full_dev, min_size,
+ fs->geom->length);
+}
+
+static int
+hfs_resize (PedFileSystem* fs, PedGeometry* geom, PedTimer* timer)
+{
+ uint8_t buf[PED_SECTOR_SIZE_DEFAULT];
+ unsigned int nblock, nfree;
+ unsigned int block, to_free;
+ HfsPrivateFSData* priv_data;
+ HfsMasterDirectoryBlock* mdb;
+ int resize = 1;
+ unsigned int hfs_sect_block;
+ PedSector hgee;
+
+ /* check preconditions */
+ PED_ASSERT (fs != NULL, return 0);
+ PED_ASSERT (fs->geom != NULL, return 0);
+ PED_ASSERT (geom != NULL, return 0);
+#ifdef DEBUG
+ PED_ASSERT ((hgee = hfs_get_empty_end(fs)) != 0, return 0);
+#else
+ if ((hgee = hfs_get_empty_end(fs)) == 0)
+ return 0;
+#endif
+
+ PED_ASSERT ((hgee = hfs_get_empty_end(fs)) != 0, return 0);
+
+ if (ped_geometry_test_equal(fs->geom, geom))
+ return 1;
+
+ priv_data = (HfsPrivateFSData*) fs->type_specific;
+ mdb = priv_data->mdb;
+ hfs_sect_block = PED_BE32_TO_CPU (mdb->block_size)
+ / PED_SECTOR_SIZE_DEFAULT;
+
+ if (fs->geom->start != geom->start
+ || geom->length > fs->geom->length
+ || geom->length < hgee + 2) {
+ ped_exception_throw (
+ PED_EXCEPTION_NO_FEATURE,
+ PED_EXCEPTION_CANCEL,
+ _("Sorry, HFS cannot be resized that way yet."));
+ return 0;
+ }
+
+ /* Flush caches */
+ if (!ped_geometry_sync(fs->geom))
+ return 0;
+
+ /* Clear the unmounted bit */
+ mdb->volume_attributes &= PED_CPU_TO_BE16 (~( 1 << HFS_UNMOUNTED ));
+ if (!ped_geometry_read (fs->geom, buf, 2, 1))
+ return 0;
+ memcpy (buf, mdb, sizeof (HfsMasterDirectoryBlock));
+ if ( !ped_geometry_write (fs->geom, buf, 2, 1)
+ || !ped_geometry_sync (fs->geom))
+ return 0;
+
+ ped_timer_reset (timer);
+ ped_timer_set_state_name(timer, _("shrinking"));
+ ped_timer_update(timer, 0.0);
+ /* relocate data */
+ to_free = ( fs->geom->length - geom->length
+ + hfs_sect_block - 1 )
+ / hfs_sect_block ;
+ block = hfs_find_start_pack (fs, to_free);
+ if (!hfs_pack_free_space_from_block (fs, block, timer, to_free)) {
+ resize = 0;
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Data relocation has failed."));
+ goto write_MDB;
+ }
+
+ /* Calculate new block number and other MDB field */
+ nblock = ( geom->length - (PED_BE16_TO_CPU (mdb->start_block) + 2) )
+ / hfs_sect_block;
+ nfree = PED_BE16_TO_CPU (mdb->free_blocks)
+ - ( PED_BE16_TO_CPU (mdb->total_blocks) - nblock );
+
+ /* Check that all block after future end are really free */
+ for (block = nblock;
+ block < PED_BE16_TO_CPU (mdb->total_blocks);
+ block++) {
+ if (TST_BLOC_OCCUPATION(priv_data->alloc_map,block)) {
+ resize = 0;
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Data relocation left some data in the end "
+ "of the volume."));
+ goto write_MDB;
+ }
+ }
+
+ /* Mark out of volume blocks as used
+ (broken implementations compatibility) */
+ for ( block = nblock; block < (1 << 16); ++block)
+ SET_BLOC_OCCUPATION(priv_data->alloc_map,block);
+
+ /* save the allocation map
+ I do not write until start of allocation blocks
+ but only until pre-resize end of bitmap blocks
+ because the specifications do _not_ assert that everything
+ until allocation blocks is boot, mdb and alloc */
+ ped_geometry_write(fs->geom, priv_data->alloc_map,
+ PED_BE16_TO_CPU (priv_data->mdb->volume_bitmap_block),
+ ( PED_BE16_TO_CPU (priv_data->mdb->total_blocks)
+ + PED_SECTOR_SIZE_DEFAULT * 8 - 1)
+ / (PED_SECTOR_SIZE_DEFAULT * 8));
+
+ /* Update geometry */
+ if (resize) {
+ /* update in fs structure */
+ if (PED_BE16_TO_CPU (mdb->next_allocation) >= nblock)
+ mdb->next_allocation = PED_CPU_TO_BE16 (0);
+ mdb->total_blocks = PED_CPU_TO_BE16 (nblock);
+ mdb->free_blocks = PED_CPU_TO_BE16 (nfree);
+ /* update parted structure */
+ fs->geom->length = geom->length;
+ fs->geom->end = fs->geom->start + geom->length - 1;
+ }
+
+ /* Set the unmounted bit */
+ mdb->volume_attributes |= PED_CPU_TO_BE16 ( 1 << HFS_UNMOUNTED );
+
+ /* Effective write */
+ write_MDB:
+ ped_timer_set_state_name(timer,_("writing HFS Master Directory Block"));
+
+ if (!hfs_update_mdb(fs)) {
+ ped_geometry_sync(geom);
+ return 0;
+ }
+
+ if (!ped_geometry_sync(geom))
+ return 0;
+
+ ped_timer_update(timer, 1.0);
+
+ return (resize);
+}
+
+/* ----- HFS+ ----- */
+
+#include "file_plus.h"
+#include "advfs_plus.h"
+#include "reloc_plus.h"
+#include "journal.h"
+
+static int
+hfsplus_clobber (PedGeometry* geom)
+{
+ unsigned int i = 1;
+ uint8_t buf[PED_SECTOR_SIZE_DEFAULT];
+ HfsMasterDirectoryBlock *mdb;
+
+ mdb = (HfsMasterDirectoryBlock *) buf;
+
+ if (!ped_geometry_read (geom, buf, 2, 1))
+ return 0;
+
+ if (PED_BE16_TO_CPU (mdb->signature) == HFS_SIGNATURE) {
+ /* embedded hfs+ */
+ PedGeometry *embedded;
+
+ i = PED_BE32_TO_CPU(mdb->block_size) / PED_SECTOR_SIZE_DEFAULT;
+ embedded = ped_geometry_new (
+ geom->dev,
+ (PedSector) geom->start
+ + PED_BE16_TO_CPU (mdb->start_block)
+ + (PedSector) PED_BE16_TO_CPU (
+ mdb->old_new.embedded.location.start_block ) * i,
+ (PedSector) PED_BE16_TO_CPU (
+ mdb->old_new.embedded.location.block_count ) * i );
+ if (!embedded) i = 0;
+ else {
+ i = hfs_clobber (embedded);
+ ped_geometry_destroy (embedded);
+ }
+ }
+
+ /* non-embedded or envelop destroy as hfs */
+ return ( hfs_clobber (geom) && i );
+}
+
+static int
+hfsplus_close (PedFileSystem *fs)
+{
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+
+ if (priv_data->bad_blocks_loaded)
+ hfsplus_free_bad_blocks_list(priv_data->bad_blocks_xtent_list);
+ ped_free(priv_data->alloc_map);
+ ped_free(priv_data->dirty_alloc_map);
+ hfsplus_file_close (priv_data->allocation_file);
+ hfsplus_file_close (priv_data->attributes_file);
+ hfsplus_file_close (priv_data->catalog_file);
+ hfsplus_file_close (priv_data->extents_file);
+ if (priv_data->free_geom) ped_geometry_destroy (priv_data->plus_geom);
+ if (priv_data->wrapper) hfs_close(priv_data->wrapper);
+ ped_geometry_destroy (fs->geom);
+ ped_free(priv_data->vh);
+ ped_free(priv_data);
+ ped_free(fs);
+
+ return 1;
+}
+
+static PedFileSystem*
+hfsplus_open (PedGeometry* geom)
+{
+ uint8_t buf[PED_SECTOR_SIZE_DEFAULT];
+ PedFileSystem* fs;
+ HfsPVolumeHeader* vh;
+ HfsPPrivateFSData* priv_data;
+ PedGeometry* wrapper_geom;
+ unsigned int map_sectors;
+
+ if (!hfsc_can_use_geom (geom))
+ return NULL;
+
+ fs = (PedFileSystem*) ped_malloc (sizeof (PedFileSystem));
+ if (!fs) goto hpo;
+ vh = (HfsPVolumeHeader*) ped_malloc (sizeof (HfsPVolumeHeader));
+ if (!vh) goto hpo_fs;
+ priv_data = (HfsPPrivateFSData*)ped_malloc (sizeof (HfsPPrivateFSData));
+ if (!priv_data) goto hpo_vh;
+
+ fs->geom = ped_geometry_duplicate (geom);
+ if (!fs->geom) goto hpo_pd;
+ fs->type_specific = (void*) priv_data;
+
+ if ((wrapper_geom = hfs_and_wrapper_probe (geom))) {
+ HfsPrivateFSData* hfs_priv_data;
+ PedSector abs_sect, length;
+ unsigned int bs;
+
+ ped_geometry_destroy (wrapper_geom);
+ priv_data->wrapper = hfs_open(geom);
+ if (!priv_data->wrapper) goto hpo_gm;
+ hfs_priv_data = (HfsPrivateFSData*)
+ priv_data->wrapper->type_specific;
+ bs = PED_BE32_TO_CPU (hfs_priv_data->mdb->block_size)
+ / PED_SECTOR_SIZE_DEFAULT;
+ abs_sect = (PedSector) geom->start
+ + (PedSector) PED_BE16_TO_CPU (
+ hfs_priv_data->mdb->start_block)
+ + (PedSector) PED_BE16_TO_CPU (
+ hfs_priv_data->mdb->old_new
+ .embedded.location.start_block )
+ * bs;
+ length = (PedSector) PED_BE16_TO_CPU (
+ hfs_priv_data->mdb->old_new
+ .embedded.location.block_count)
+ * bs;
+ priv_data->plus_geom = ped_geometry_new (geom->dev, abs_sect,
+ length);
+ if (!priv_data->plus_geom) goto hpo_wr;
+ priv_data->free_geom = 1;
+ } else {
+ priv_data->wrapper = NULL;
+ priv_data->plus_geom = fs->geom;
+ priv_data->free_geom = 0;
+ }
+
+ if (!ped_geometry_read (priv_data->plus_geom, buf, 2, 1)) goto hpo_pg;
+ memcpy (vh, buf, sizeof (HfsPVolumeHeader));
+ priv_data->vh = vh;
+
+ if (vh->signature != PED_CPU_TO_BE16(HFSP_SIGNATURE)
+ && vh->signature != PED_CPU_TO_BE16(HFSX_SIGNATURE)) {
+ ped_exception_throw (
+ PED_EXCEPTION_BUG,
+ PED_EXCEPTION_CANCEL,
+ _("No valid HFS[+X] signature has been found while "
+ "opening."));
+ goto hpo_pg;
+ }
+
+ if (vh->signature == PED_CPU_TO_BE16(HFSP_SIGNATURE)
+ && vh->version != PED_CPU_TO_BE16(HFSP_VERSION)) {
+ if (ped_exception_throw (
+ PED_EXCEPTION_NO_FEATURE,
+ PED_EXCEPTION_IGNORE_CANCEL,
+ _("Version %d of HFS+ isn't supported."),
+ PED_BE16_TO_CPU(vh->version))
+ != PED_EXCEPTION_IGNORE)
+ goto hpo_pg;
+ }
+
+ if (vh->signature == PED_CPU_TO_BE16(HFSX_SIGNATURE)
+ && vh->version != PED_CPU_TO_BE16(HFSX_VERSION)) {
+ if (ped_exception_throw (
+ PED_EXCEPTION_NO_FEATURE,
+ PED_EXCEPTION_IGNORE_CANCEL,
+ _("Version %d of HFSX isn't supported."),
+ PED_BE16_TO_CPU(vh->version))
+ != PED_EXCEPTION_IGNORE)
+ goto hpo_pg;
+ }
+
+ priv_data->jib_start_block = 0;
+ priv_data->jl_start_block = 0;
+ if (vh->attributes & PED_CPU_TO_BE32(1<<HFSP_JOURNALED)) {
+ if (!hfsj_replay_journal(fs))
+ goto hpo_pg;
+ }
+
+ priv_data->bad_blocks_loaded = 0;
+ priv_data->bad_blocks_xtent_nb = 0;
+ priv_data->bad_blocks_xtent_list = NULL;
+ priv_data->extents_file =
+ hfsplus_file_open (fs, PED_CPU_TO_BE32 (HFS_XTENT_ID),
+ vh->extents_file.extents,
+ PED_BE64_TO_CPU (
+ vh->extents_file.logical_size )
+ / PED_SECTOR_SIZE_DEFAULT);
+ if (!priv_data->extents_file) goto hpo_pg;
+ priv_data->catalog_file =
+ hfsplus_file_open (fs, PED_CPU_TO_BE32 (HFS_CATALOG_ID),
+ vh->catalog_file.extents,
+ PED_BE64_TO_CPU (
+ vh->catalog_file.logical_size )
+ / PED_SECTOR_SIZE_DEFAULT);
+ if (!priv_data->catalog_file) goto hpo_ce;
+ priv_data->attributes_file =
+ hfsplus_file_open (fs, PED_CPU_TO_BE32 (HFSP_ATTRIB_ID),
+ vh->attributes_file.extents,
+ PED_BE64_TO_CPU (
+ vh->attributes_file.logical_size)
+ / PED_SECTOR_SIZE_DEFAULT);
+ if (!priv_data->attributes_file) goto hpo_cc;
+
+ map_sectors = ( PED_BE32_TO_CPU (vh->total_blocks)
+ + PED_SECTOR_SIZE_DEFAULT * 8 - 1 )
+ / (PED_SECTOR_SIZE_DEFAULT * 8);
+ priv_data->dirty_alloc_map = (uint8_t*)
+ ped_malloc ((map_sectors + 7) / 8);
+ if (!priv_data->dirty_alloc_map) goto hpo_cl;
+ memset(priv_data->dirty_alloc_map, 0, (map_sectors + 7) / 8);
+ priv_data->alloc_map = (uint8_t*)
+ ped_malloc (map_sectors * PED_SECTOR_SIZE_DEFAULT);
+ if (!priv_data->alloc_map) goto hpo_dm;
+
+ priv_data->allocation_file =
+ hfsplus_file_open (fs, PED_CPU_TO_BE32 (HFSP_ALLOC_ID),
+ vh->allocation_file.extents,
+ PED_BE64_TO_CPU (
+ vh->allocation_file.logical_size)
+ / PED_SECTOR_SIZE_DEFAULT);
+ if (!priv_data->allocation_file) goto hpo_am;
+ if (!hfsplus_file_read (priv_data->allocation_file,
+ priv_data->alloc_map, 0, map_sectors)) {
+ hfsplus_close(fs);
+ return NULL;
+ }
+
+ fs->type = &hfsplus_type;
+ fs->checked = ((PED_BE32_TO_CPU (vh->attributes) >> HFS_UNMOUNTED) & 1)
+ && !((PED_BE32_TO_CPU (vh->attributes) >> HFSP_INCONSISTENT) & 1);
+
+ return fs;
+
+/*--- clean error handling ---*/
+hpo_am: ped_free(priv_data->alloc_map);
+hpo_dm: ped_free(priv_data->dirty_alloc_map);
+hpo_cl: hfsplus_file_close (priv_data->attributes_file);
+hpo_cc: hfsplus_file_close (priv_data->catalog_file);
+hpo_ce: hfsplus_file_close (priv_data->extents_file);
+hpo_pg: if (priv_data->free_geom) ped_geometry_destroy (priv_data->plus_geom);
+hpo_wr: if (priv_data->wrapper) hfs_close(priv_data->wrapper);
+hpo_gm: ped_geometry_destroy (fs->geom);
+hpo_pd: ped_free(priv_data);
+hpo_vh: ped_free(vh);
+hpo_fs: ped_free(fs);
+hpo: return NULL;
+}
+
+static PedConstraint*
+hfsplus_get_resize_constraint (const PedFileSystem *fs)
+{
+ PedDevice* dev = fs->geom->dev;
+ PedAlignment start_align;
+ PedGeometry start_sector;
+ PedGeometry full_dev;
+ PedSector min_size;
+
+ if (!ped_alignment_init (&start_align, fs->geom->start, 0))
+ return NULL;
+ if (!ped_geometry_init (&start_sector, dev, fs->geom->start, 1))
+ return NULL;
+ if (!ped_geometry_init (&full_dev, dev, 0, dev->length - 1))
+ return NULL;
+
+ min_size = hfsplus_get_min_size (fs);
+ if (!min_size) return NULL;
+
+ return ped_constraint_new (&start_align, ped_alignment_any,
+ &start_sector, &full_dev, min_size,
+ fs->geom->length);
+}
+
+static int
+hfsplus_volume_resize (PedFileSystem* fs, PedGeometry* geom, PedTimer* timer)
+{
+ uint8_t buf[PED_SECTOR_SIZE_DEFAULT];
+ unsigned int nblock, nfree, mblock;
+ unsigned int block, to_free, old_blocks;
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+ HfsPVolumeHeader* vh = priv_data->vh;
+ int resize = 1;
+ unsigned int hfsp_sect_block =
+ ( PED_BE32_TO_CPU (vh->block_size)
+ / PED_SECTOR_SIZE_DEFAULT );
+ unsigned int map_sectors;
+
+ old_blocks = PED_BE32_TO_CPU (vh->total_blocks);
+
+ /* Flush caches */
+ if (!ped_geometry_sync(priv_data->plus_geom))
+ return 0;
+
+ /* Clear the unmounted bit */
+ /* and set the implementation code (Apple Creator Code) */
+ vh->attributes &= PED_CPU_TO_BE32 (~( 1 << HFS_UNMOUNTED ));
+ vh->last_mounted_version = PED_CPU_TO_BE32(HFSP_IMPL_Shnk);
+ if (!ped_geometry_read (priv_data->plus_geom, buf, 2, 1))
+ return 0;
+ memcpy (buf, vh, sizeof (HfsPVolumeHeader));
+ if ( !ped_geometry_write (priv_data->plus_geom, buf, 2, 1)
+ || !ped_geometry_sync (priv_data->plus_geom))
+ return 0;
+
+ ped_timer_reset (timer);
+ ped_timer_set_state_name(timer, _("shrinking"));
+ ped_timer_update(timer, 0.0);
+ /* relocate data */
+ to_free = ( priv_data->plus_geom->length
+ - geom->length + hfsp_sect_block
+ - 1 ) / hfsp_sect_block;
+ block = hfsplus_find_start_pack (fs, to_free);
+ if (!hfsplus_pack_free_space_from_block (fs, block, timer, to_free)) {
+ resize = 0;
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Data relocation has failed."));
+ goto write_VH;
+ }
+
+ /* Calculate new block number and other VH field */
+ /* nblock must be rounded _down_ */
+ nblock = geom->length / hfsp_sect_block;
+ nfree = PED_BE32_TO_CPU (vh->free_blocks)
+ - (old_blocks - nblock);
+ /* free block readjustement is only needed when incorrect nblock
+ was used by my previous implementation, so detect the case */
+ if (priv_data->plus_geom->length < old_blocks
+ * ( PED_BE32_TO_CPU (vh->block_size)
+ / PED_SECTOR_SIZE_DEFAULT) ) {
+ if (priv_data->plus_geom->length % hfsp_sect_block == 1)
+ nfree++;
+ }
+
+ /* Check that all block after future end are really free */
+ mblock = ( priv_data->plus_geom->length - 2 )
+ / hfsp_sect_block;
+ if (mblock > old_blocks - 1)
+ mblock = old_blocks - 1;
+ for ( block = nblock;
+ block < mblock;
+ block++ ) {
+ if (TST_BLOC_OCCUPATION(priv_data->alloc_map,block)) {
+ resize = 0;
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Data relocation left some data at the end "
+ "of the volume."));
+ goto write_VH;
+ }
+ }
+
+ /* Mark out of volume blocks as used */
+ map_sectors = ( ( old_blocks + PED_SECTOR_SIZE_DEFAULT * 8 - 1 )
+ / (PED_SECTOR_SIZE_DEFAULT * 8) )
+ * (PED_SECTOR_SIZE_DEFAULT * 8);
+ for ( block = nblock; block < map_sectors; ++block)
+ SET_BLOC_OCCUPATION(priv_data->alloc_map, block);
+
+ /* Update geometry */
+ if (resize) {
+ /* update in fs structure */
+ if (PED_BE32_TO_CPU (vh->next_allocation) >= nblock)
+ vh->next_allocation = PED_CPU_TO_BE32 (0);
+ vh->total_blocks = PED_CPU_TO_BE32 (nblock);
+ vh->free_blocks = PED_CPU_TO_BE32 (nfree);
+ /* update parted structure */
+ priv_data->plus_geom->length = geom->length;
+ priv_data->plus_geom->end = priv_data->plus_geom->start
+ + geom->length - 1;
+ }
+
+ /* Effective write */
+ write_VH:
+ /* lasts two sectors are allocated by the alternate VH
+ and a reserved sector, and last block is always reserved */
+ block = (priv_data->plus_geom->length - 1) / hfsp_sect_block;
+ if (block < PED_BE32_TO_CPU (vh->total_blocks))
+ SET_BLOC_OCCUPATION(priv_data->alloc_map, block);
+ block = (priv_data->plus_geom->length - 2) / hfsp_sect_block;
+ if (block < PED_BE32_TO_CPU (vh->total_blocks))
+ SET_BLOC_OCCUPATION(priv_data->alloc_map, block);
+ SET_BLOC_OCCUPATION(priv_data->alloc_map,
+ PED_BE32_TO_CPU (vh->total_blocks) - 1);
+
+ /* Write the _old_ area to set out of volume blocks as used */
+ map_sectors = ( old_blocks + PED_SECTOR_SIZE_DEFAULT * 8 - 1 )
+ / (PED_SECTOR_SIZE_DEFAULT * 8);
+ if (!hfsplus_file_write (priv_data->allocation_file,
+ priv_data->alloc_map, 0, map_sectors)) {
+ resize = 0;
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Error while writing the allocation file."));
+ } else {
+ /* Write remaining part of allocation bitmap */
+ /* This is necessary to handle pre patch-11 and third party */
+ /* implementations */
+ memset(buf, 0xFF, PED_SECTOR_SIZE_DEFAULT);
+ for (block = map_sectors;
+ block < priv_data->allocation_file->sect_nb;
+ ++block) {
+ if (!hfsplus_file_write_sector (
+ priv_data->allocation_file,
+ buf, block)) {
+ ped_exception_throw (
+ PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_IGNORE,
+ _("Error while writing the "
+ "compatibility part of the "
+ "allocation file."));
+ break;
+ }
+ }
+ }
+ ped_geometry_sync (priv_data->plus_geom);
+
+ if (resize) {
+ /* Set the unmounted bit and clear the inconsistent bit */
+ vh->attributes |= PED_CPU_TO_BE32 ( 1 << HFS_UNMOUNTED );
+ vh->attributes &= ~ PED_CPU_TO_BE32 ( 1 << HFSP_INCONSISTENT );
+ }
+
+ ped_timer_set_state_name(timer, _("writing HFS+ Volume Header"));
+ if (!hfsplus_update_vh(fs)) {
+ ped_geometry_sync(priv_data->plus_geom);
+ return 0;
+ }
+
+ if (!ped_geometry_sync(priv_data->plus_geom))
+ return 0;
+
+ ped_timer_update(timer, 1.0);
+
+ return (resize);
+}
+
+/* Update the HFS wrapper mdb and bad blocks file to reflect
+ the new geometry of the embedded HFS+ volume */
+static int
+hfsplus_wrapper_update (PedFileSystem* fs)
+{
+ uint8_t node[PED_SECTOR_SIZE_DEFAULT];
+ HfsCPrivateLeafRec ref;
+ HfsExtentKey key;
+ HfsNodeDescriptor* node_desc = (HfsNodeDescriptor*) node;
+ HfsExtentKey* ret_key;
+ HfsExtDescriptor* ret_data;
+ unsigned int i;
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+ HfsPrivateFSData* hfs_priv_data = (HfsPrivateFSData*)
+ priv_data->wrapper->type_specific;
+ unsigned int hfs_sect_block =
+ PED_BE32_TO_CPU (hfs_priv_data->mdb->block_size)
+ / PED_SECTOR_SIZE_DEFAULT ;
+ PedSector hfsplus_sect = (PedSector)
+ PED_BE32_TO_CPU (priv_data->vh->total_blocks)
+ * ( PED_BE32_TO_CPU (priv_data->vh->block_size)
+ / PED_SECTOR_SIZE_DEFAULT );
+ unsigned int hfs_blocks_embedded =
+ (hfsplus_sect + hfs_sect_block - 1)
+ / hfs_sect_block;
+ unsigned int hfs_blocks_embedded_old;
+
+ /* update HFS wrapper MDB */
+ hfs_blocks_embedded_old = PED_BE16_TO_CPU (
+ hfs_priv_data->mdb->old_new
+ .embedded.location.block_count );
+ hfs_priv_data->mdb->old_new.embedded.location.block_count =
+ PED_CPU_TO_BE16 (hfs_blocks_embedded);
+ /* maybe macOS will boot with this */
+ /* update : yes it does \o/ :) */
+ hfs_priv_data->mdb->free_blocks =
+ PED_CPU_TO_BE16 ( PED_BE16_TO_CPU (hfs_priv_data->mdb->free_blocks)
+ + hfs_blocks_embedded_old
+ - hfs_blocks_embedded );
+
+ if (!hfs_update_mdb(priv_data->wrapper))
+ return 0;
+
+ /* force reload bad block list */
+ if (hfs_priv_data->bad_blocks_loaded) {
+ hfs_free_bad_blocks_list (hfs_priv_data->bad_blocks_xtent_list);
+ hfs_priv_data->bad_blocks_xtent_list = NULL;
+ hfs_priv_data->bad_blocks_xtent_nb = 0;
+ hfs_priv_data->bad_blocks_loaded = 0;
+ }
+
+ /* clean HFS wrapper allocation map */
+ for (i = PED_BE16_TO_CPU (
+ hfs_priv_data->mdb->old_new.embedded
+ .location.start_block )
+ + hfs_blocks_embedded;
+ i < PED_BE16_TO_CPU (
+ hfs_priv_data->mdb->old_new.embedded
+ .location.start_block )
+ + hfs_blocks_embedded_old;
+ i++ ) {
+ CLR_BLOC_OCCUPATION(hfs_priv_data->alloc_map, i);
+ }
+ /* and save it */
+ if (!ped_geometry_write (fs->geom, hfs_priv_data->alloc_map,
+ PED_BE16_TO_CPU (
+ hfs_priv_data->mdb->volume_bitmap_block ),
+ ( PED_BE16_TO_CPU (
+ hfs_priv_data->mdb->total_blocks )
+ + PED_SECTOR_SIZE_DEFAULT * 8 - 1 )
+ / (PED_SECTOR_SIZE_DEFAULT * 8)))
+ return 0;
+ if (!ped_geometry_sync (fs->geom))
+ return 0;
+
+ /* search and update the bad blocks file */
+ key.key_length = sizeof(key) - 1;
+ key.type = HFS_DATA_FORK;
+ key.file_ID = PED_CPU_TO_BE32 (HFS_BAD_BLOCK_ID);
+ key.start = 0;
+ if (!hfs_btree_search (hfs_priv_data->extent_file,
+ (HfsPrivateGenericKey*) &key, NULL, 0, &ref)) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("An error occurred while looking for the mandatory "
+ "bad blocks file."));
+ return 0;
+ }
+ if (!hfs_file_read_sector (hfs_priv_data->extent_file, node,
+ ref.node_number))
+ return 0;
+ ret_key = (HfsExtentKey*) (node + ref.record_pos);
+ ret_data = (HfsExtDescriptor*) ( node + ref.record_pos
+ + sizeof (HfsExtentKey) );
+
+ while (ret_key->type == key.type && ret_key->file_ID == key.file_ID) {
+ for (i = 0; i < HFS_EXT_NB; i++) {
+ if ( ret_data[i].start_block
+ == hfs_priv_data->mdb->old_new
+ .embedded.location.start_block) {
+ ret_data[i].block_count =
+ hfs_priv_data->mdb->old_new
+ .embedded.location.block_count;
+ /* found ! : update */
+ if (!hfs_file_write_sector (
+ hfs_priv_data->extent_file,
+ node, ref.node_number)
+ || !ped_geometry_sync(fs->geom))
+ return 0;
+ return 1;
+ }
+ }
+
+ if (ref.record_number < PED_BE16_TO_CPU (node_desc->rec_nb)) {
+ ref.record_number++;
+ } else {
+ ref.node_number = PED_BE32_TO_CPU (node_desc->next);
+ if (!ref.node_number
+ || !hfs_file_read_sector(hfs_priv_data->extent_file,
+ node, ref.node_number))
+ goto bb_not_found;
+ ref.record_number = 1;
+ }
+
+ ref.record_pos =
+ PED_BE16_TO_CPU (*((uint16_t *)
+ (node + (PED_SECTOR_SIZE_DEFAULT
+ - 2*ref.record_number))));
+ ret_key = (HfsExtentKey*) (node + ref.record_pos);
+ ret_data = (HfsExtDescriptor*) ( node + ref.record_pos
+ + sizeof (HfsExtentKey) );
+ }
+
+bb_not_found:
+ /* not found : not a valid hfs+ wrapper : failure */
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("It seems there is an error in the HFS wrapper: the bad "
+ "blocks file doesn't contain the embedded HFS+ volume."));
+ return 0;
+}
+
+static int
+hfsplus_resize (PedFileSystem* fs, PedGeometry* geom, PedTimer* timer)
+{
+ HfsPPrivateFSData* priv_data;
+ PedTimer* timer_plus;
+ PedGeometry* embedded_geom;
+ PedSector hgms;
+
+ /* check preconditions */
+ PED_ASSERT (fs != NULL, return 0);
+ PED_ASSERT (fs->geom != NULL, return 0);
+ PED_ASSERT (geom != NULL, return 0);
+ PED_ASSERT (fs->geom->dev == geom->dev, return 0);
+#ifdef DEBUG
+ PED_ASSERT ((hgms = hfsplus_get_min_size (fs)) != 0, return 0);
+#else
+ if ((hgms = hfsplus_get_min_size (fs)) == 0)
+ return 0;
+#endif
+
+ if (ped_geometry_test_equal(fs->geom, geom))
+ return 1;
+
+ priv_data = (HfsPPrivateFSData*) fs->type_specific;
+
+ if (fs->geom->start != geom->start
+ || geom->length > fs->geom->length
+ || geom->length < hgms) {
+ ped_exception_throw (
+ PED_EXCEPTION_NO_FEATURE,
+ PED_EXCEPTION_CANCEL,
+ _("Sorry, HFS+ cannot be resized that way yet."));
+ return 0;
+ }
+
+ if (priv_data->wrapper) {
+ PedSector red, hgee;
+ HfsPrivateFSData* hfs_priv_data = (HfsPrivateFSData*)
+ priv_data->wrapper->type_specific;
+ unsigned int hfs_sect_block =
+ PED_BE32_TO_CPU (hfs_priv_data->mdb->block_size)
+ / PED_SECTOR_SIZE_DEFAULT;
+
+ /* There is a wrapper so we must calculate the new geometry
+ of the embedded HFS+ volume */
+ red = ( (fs->geom->length - geom->length + hfs_sect_block - 1)
+ / hfs_sect_block ) * hfs_sect_block;
+ /* Can't we shrink the hfs+ volume by the desired size ? */
+ hgee = hfsplus_get_empty_end (fs);
+ if (!hgee) return 0;
+ if (red > priv_data->plus_geom->length - hgee) {
+ /* No, shrink hfs+ by the greatest possible value */
+ hgee = ((hgee + hfs_sect_block - 1) / hfs_sect_block)
+ * hfs_sect_block;
+ red = priv_data->plus_geom->length - hgee;
+ }
+ embedded_geom = ped_geometry_new (geom->dev,
+ priv_data->plus_geom->start,
+ priv_data->plus_geom->length
+ - red);
+
+ /* There is a wrapper so the resize process is a two stages
+ process (embedded resizing then wrapper resizing) :
+ we create a sub timer */
+ ped_timer_reset (timer);
+ ped_timer_set_state_name (timer,
+ _("shrinking embedded HFS+ volume"));
+ ped_timer_update(timer, 0.0);
+ timer_plus = ped_timer_new_nested (timer, 0.98);
+ } else {
+ /* No wrapper : the desired geometry is the desired
+ HFS+ volume geometry */
+ embedded_geom = geom;
+ timer_plus = timer;
+ }
+
+ /* Resize the HFS+ volume */
+ if (!hfsplus_volume_resize (fs, embedded_geom, timer_plus)) {
+ if (timer_plus != timer) ped_timer_destroy_nested (timer_plus);
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Resizing the HFS+ volume has failed."));
+ return 0;
+ }
+
+ if (priv_data->wrapper) {
+ ped_geometry_destroy (embedded_geom);
+ ped_timer_destroy_nested (timer_plus);
+ ped_timer_set_state_name(timer, _("shrinking HFS wrapper"));
+ timer_plus = ped_timer_new_nested (timer, 0.02);
+ /* There's a wrapper : second stage = resizing it */
+ if (!hfsplus_wrapper_update (fs)
+ || !hfs_resize (priv_data->wrapper, geom, timer_plus)) {
+ ped_timer_destroy_nested (timer_plus);
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Updating the HFS wrapper has failed."));
+ return 0;
+ }
+ ped_timer_destroy_nested (timer_plus);
+ }
+ ped_timer_update(timer, 1.0);
+
+ return 1;
+}
+
+#ifdef HFS_EXTRACT_FS
+/* The following is for debugging purpose only, NOT for packaging */
+
+#include <stdio.h>
+
+uint8_t* extract_buffer = NULL;
+
+static int
+hfs_extract_file(const char* filename, HfsPrivateFile* hfs_file)
+{
+ FILE* fout;
+ PedSector sect;
+
+ fout = fopen(filename, "w");
+ if (!fout) return 0;
+
+ for (sect = 0; sect < hfs_file->sect_nb; ++sect) {
+ if (!hfs_file_read_sector(hfs_file, extract_buffer, sect))
+ goto err_close;
+ if (!fwrite(extract_buffer, PED_SECTOR_SIZE_DEFAULT, 1, fout))
+ goto err_close;
+ }
+
+ return (fclose(fout) == 0 ? 1 : 0);
+
+err_close:
+ fclose(fout);
+ return 0;
+}
+
+static int
+hfs_extract_bitmap(const char* filename, PedFileSystem* fs)
+{
+ HfsPrivateFSData* priv_data = (HfsPrivateFSData*)
+ fs->type_specific;
+ HfsMasterDirectoryBlock* mdb = priv_data->mdb;
+ unsigned int count;
+ FILE* fout;
+ PedSector sect;
+
+ fout = fopen(filename, "w");
+ if (!fout) return 0;
+
+ for (sect = PED_BE16_TO_CPU(mdb->volume_bitmap_block);
+ sect < PED_BE16_TO_CPU(mdb->start_block);
+ sect += count) {
+ uint16_t st_block = PED_BE16_TO_CPU(mdb->start_block);
+ count = (st_block-sect) < BLOCK_MAX_BUFF ?
+ (st_block-sect) : BLOCK_MAX_BUFF;
+ if (!ped_geometry_read(fs->geom, extract_buffer, sect, count))
+ goto err_close;
+ if (!fwrite (extract_buffer, count * PED_SECTOR_SIZE_DEFAULT,
+ 1, fout))
+ goto err_close;
+ }
+
+ return (fclose(fout) == 0 ? 1 : 0);
+
+err_close:
+ fclose(fout);
+ return 0;
+}
+
+static int
+hfs_extract_mdb (const char* filename, PedFileSystem* fs)
+{
+ FILE* fout;
+
+ fout = fopen(filename, "w");
+ if (!fout) return 0;
+
+ if (!ped_geometry_read(fs->geom, extract_buffer, 2, 1))
+ goto err_close;
+ if (!fwrite(extract_buffer, PED_SECTOR_SIZE_DEFAULT, 1, fout))
+ goto err_close;
+
+ return (fclose(fout) == 0 ? 1 : 0);
+
+err_close:
+ fclose(fout);
+ return 0;
+}
+
+static int
+hfs_extract (PedFileSystem* fs, PedTimer* timer)
+{
+ HfsPrivateFSData* priv_data = (HfsPrivateFSData*)
+ fs->type_specific;
+
+ ped_exception_throw (
+ PED_EXCEPTION_INFORMATION,
+ PED_EXCEPTION_OK,
+ _("This is not a real %s check. This is going to extract "
+ "special low level files for debugging purposes."),
+ "HFS");
+
+ extract_buffer = ped_malloc(BLOCK_MAX_BUFF * PED_SECTOR_SIZE_DEFAULT);
+ if (!extract_buffer) return 0;
+
+ hfs_extract_mdb(HFS_MDB_FILENAME, fs);
+ hfs_extract_file(HFS_CATALOG_FILENAME, priv_data->catalog_file);
+ hfs_extract_file(HFS_EXTENTS_FILENAME, priv_data->extent_file);
+ hfs_extract_bitmap(HFS_BITMAP_FILENAME, fs);
+
+ ped_free(extract_buffer); extract_buffer = NULL;
+ return 0; /* nothing has been fixed by us ! */
+}
+
+static int
+hfsplus_extract_file(const char* filename, HfsPPrivateFile* hfsp_file)
+{
+ FILE* fout;
+ unsigned int cp_sect;
+ PedSector rem_sect;
+
+ fout = fopen(filename, "w");
+ if (!fout) return 0;
+
+ for (rem_sect = hfsp_file->sect_nb; rem_sect; rem_sect -= cp_sect) {
+ cp_sect = rem_sect < BLOCK_MAX_BUFF ? rem_sect : BLOCK_MAX_BUFF;
+ if (!hfsplus_file_read(hfsp_file, extract_buffer,
+ hfsp_file->sect_nb - rem_sect, cp_sect))
+ goto err_close;
+ if (!fwrite (extract_buffer, cp_sect * PED_SECTOR_SIZE_DEFAULT,
+ 1, fout))
+ goto err_close;
+ }
+
+ return (fclose(fout) == 0 ? 1 : 0);
+
+err_close:
+ fclose(fout);
+ return 0;
+}
+
+static int
+hfsplus_extract_vh (const char* filename, PedFileSystem* fs)
+{
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+ FILE* fout;
+ PedGeometry* geom = priv_data->plus_geom;
+
+
+ fout = fopen(filename, "w");
+ if (!fout) return 0;
+
+ if (!ped_geometry_read(geom, extract_buffer, 2, 1))
+ goto err_close;
+ if (!fwrite(extract_buffer, PED_SECTOR_SIZE_DEFAULT, 1, fout))
+ goto err_close;
+
+ return (fclose(fout) == 0 ? 1 : 0);
+
+err_close:
+ fclose(fout);
+ return 0;
+}
+
+/* TODO : use the timer to report what is happening */
+/* TODO : use exceptions to report errors */
+static int
+hfsplus_extract (PedFileSystem* fs, PedTimer* timer)
+{
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+ HfsPVolumeHeader* vh = priv_data->vh;
+ HfsPPrivateFile* startup_file;
+
+ if (priv_data->wrapper) {
+ /* TODO : create nested timer */
+ hfs_extract (priv_data->wrapper, timer);
+ }
+
+ ped_exception_throw (
+ PED_EXCEPTION_INFORMATION,
+ PED_EXCEPTION_OK,
+ _("This is not a real %s check. This is going to extract "
+ "special low level files for debugging purposes."),
+ "HFS+");
+
+ extract_buffer = ped_malloc(BLOCK_MAX_BUFF * PED_SECTOR_SIZE_DEFAULT);
+ if (!extract_buffer) return 0;
+
+ hfsplus_extract_vh(HFSP_VH_FILENAME, fs);
+ hfsplus_extract_file(HFSP_CATALOG_FILENAME, priv_data->catalog_file);
+ hfsplus_extract_file(HFSP_EXTENTS_FILENAME, priv_data->extents_file);
+ hfsplus_extract_file(HFSP_ATTRIB_FILENAME, priv_data->attributes_file);
+ hfsplus_extract_file(HFSP_BITMAP_FILENAME, priv_data->allocation_file);
+
+ startup_file = hfsplus_file_open(fs, PED_CPU_TO_BE32(HFSP_STARTUP_ID),
+ vh->startup_file.extents,
+ PED_BE64_TO_CPU (
+ vh->startup_file.logical_size)
+ / PED_SECTOR_SIZE_DEFAULT);
+ if (startup_file) {
+ hfsplus_extract_file(HFSP_STARTUP_FILENAME, startup_file);
+ hfsplus_file_close(startup_file); startup_file = NULL;
+ }
+
+ ped_free(extract_buffer); extract_buffer = NULL;
+ return 0; /* nothing has been fixed by us ! */
+}
+#endif /* HFS_EXTRACT_FS */
+
+#endif /* !DISCOVER_ONLY */
+
+static PedFileSystemOps hfs_ops = {
+ probe: hfs_probe,
+#ifndef DISCOVER_ONLY
+ clobber: hfs_clobber,
+ open: hfs_open,
+ create: NULL,
+ close: hfs_close,
+#ifndef HFS_EXTRACT_FS
+ check: NULL,
+#else
+ check: hfs_extract,
+#endif
+ copy: NULL,
+ resize: hfs_resize,
+ get_create_constraint: NULL,
+ get_resize_constraint: hfs_get_resize_constraint,
+ get_copy_constraint: NULL,
+#else /* DISCOVER_ONLY */
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ copy: NULL,
+ resize: NULL,
+ get_create_constraint: NULL,
+ get_resize_constraint: NULL,
+ get_copy_constraint: NULL,
+#endif /* DISCOVER_ONLY */
+};
+
+static PedFileSystemOps hfsplus_ops = {
+ probe: hfsplus_probe,
+#ifndef DISCOVER_ONLY
+ clobber: hfsplus_clobber,
+ open: hfsplus_open,
+ create: NULL,
+ close: hfsplus_close,
+#ifndef HFS_EXTRACT_FS
+ check: NULL,
+#else
+ check: hfsplus_extract,
+#endif
+ copy: NULL,
+ resize: hfsplus_resize,
+ get_create_constraint: NULL,
+ get_resize_constraint: hfsplus_get_resize_constraint,
+ get_copy_constraint: NULL,
+#else /* DISCOVER_ONLY */
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ copy: NULL,
+ resize: NULL,
+ get_create_constraint: NULL,
+ get_resize_constraint: NULL,
+ get_copy_constraint: NULL,
+#endif /* DISCOVER_ONLY */
+};
+
+static PedFileSystemOps hfsx_ops = {
+ probe: hfsx_probe,
+#ifndef DISCOVER_ONLY
+ clobber: hfs_clobber, /* NOT hfsplus_clobber !
+ HFSX can't be embedded */
+ open: hfsplus_open,
+ create: NULL,
+ close: hfsplus_close,
+#ifndef HFS_EXTRACT_FS
+ check: NULL,
+#else
+ check: hfsplus_extract,
+#endif
+ copy: NULL,
+ resize: hfsplus_resize,
+ get_create_constraint: NULL,
+ get_resize_constraint: hfsplus_get_resize_constraint,
+ get_copy_constraint: NULL,
+#else /* DISCOVER_ONLY */
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ copy: NULL,
+ resize: NULL,
+ get_create_constraint: NULL,
+ get_resize_constraint: NULL,
+ get_copy_constraint: NULL,
+#endif /* DISCOVER_ONLY */
+};
+
+
+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/parted-1.8.7/libparted/fs/hfs/hfs.h b/parted-1.8.7/libparted/fs/hfs/hfs.h
new file mode 100644
index 0000000..bb6d50d
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/hfs.h
@@ -0,0 +1,648 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2003, 2004, 2005 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#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/parted-1.8.7/libparted/fs/hfs/journal.c b/parted-1.8.7/libparted/fs/hfs/journal.c
new file mode 100644
index 0000000..5d26216
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/journal.c
@@ -0,0 +1,390 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2004, 2005 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef DISCOVER_ONLY
+
+#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 "reloc_plus.h"
+
+#include "journal.h"
+
+static int hfsj_vh_replayed = 0;
+static int is_le = 0;
+
+static uint32_t
+hfsj_calc_checksum(uint8_t *ptr, int len)
+{
+ int i;
+ uint32_t cksum=0;
+
+ for (i=0; i < len; i++, ptr++) {
+ cksum = (cksum << 8) ^ (cksum + *ptr);
+ }
+
+ return (~cksum);
+}
+
+int
+hfsj_update_jib(PedFileSystem* fs, uint32_t block)
+{
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+
+ priv_data->vh->journal_info_block = PED_CPU_TO_BE32(block);
+
+ if (!hfsplus_update_vh (fs))
+ return 0;
+
+ priv_data->jib_start_block = block;
+ return 1;
+}
+
+int
+hfsj_update_jl(PedFileSystem* fs, uint32_t block)
+{
+ uint8_t buf[PED_SECTOR_SIZE_DEFAULT];
+ PedSector sector;
+ uint64_t offset;
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+ HfsJJournalInfoBlock* jib;
+ int binsect;
+
+ binsect = HFS_32_TO_CPU(priv_data->vh->block_size, is_le) / PED_SECTOR_SIZE_DEFAULT;
+ sector = (PedSector) priv_data->jib_start_block * binsect;
+ if (!ped_geometry_read(priv_data->plus_geom, buf, sector, 1))
+ return 0;
+ jib = (HfsJJournalInfoBlock*) buf;
+
+ offset = (uint64_t)block * PED_SECTOR_SIZE_DEFAULT * binsect;
+ jib->offset = HFS_CPU_TO_64(offset, is_le);
+
+ if (!ped_geometry_write(priv_data->plus_geom, buf, sector, 1)
+ || !ped_geometry_sync(priv_data->plus_geom))
+ return 0;
+
+ priv_data->jl_start_block = block;
+ return 1;
+}
+
+/* Return the sector in the journal that is after the area read */
+/* or 0 on error */
+static PedSector
+hfsj_journal_read(PedGeometry* geom, HfsJJournalHeader* jh,
+ PedSector journ_sect, PedSector journ_length,
+ PedSector read_sect, unsigned int nb_sect,
+ void* buf)
+{
+ int r;
+
+ while (nb_sect--) {
+ r = ped_geometry_read(geom, buf, journ_sect + read_sect, 1);
+ if (!r) return 0;
+
+ buf = ((uint8_t*)buf) + PED_SECTOR_SIZE_DEFAULT;
+ read_sect++;
+ if (read_sect == journ_length)
+ read_sect = 1; /* skip journal header
+ which is asserted to be
+ 1 sector long */
+ }
+
+ return read_sect;
+}
+
+static int
+hfsj_replay_transaction(PedFileSystem* fs, HfsJJournalHeader* jh,
+ PedSector jsector, PedSector jlength)
+{
+ PedSector start, sector;
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+ HfsJBlockListHeader* blhdr;
+ uint8_t* block;
+ unsigned int blhdr_nbsect;
+ int i, r;
+ uint32_t cksum, size;
+
+ blhdr_nbsect = HFS_32_TO_CPU(jh->blhdr_size, is_le) / PED_SECTOR_SIZE_DEFAULT;
+ blhdr = (HfsJBlockListHeader*)
+ ped_malloc (blhdr_nbsect * PED_SECTOR_SIZE_DEFAULT);
+ if (!blhdr) return 0;
+
+ start = HFS_64_TO_CPU(jh->start, is_le) / PED_SECTOR_SIZE_DEFAULT;
+ do {
+ start = hfsj_journal_read(priv_data->plus_geom, jh, jsector,
+ jlength, start, blhdr_nbsect, blhdr);
+ if (!start) goto err_replay;
+
+ cksum = HFS_32_TO_CPU(blhdr->checksum, is_le);
+ blhdr->checksum = 0;
+ if (cksum!=hfsj_calc_checksum((uint8_t*)blhdr, sizeof(*blhdr))){
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Bad block list header checksum."));
+ goto err_replay;
+ }
+ blhdr->checksum = HFS_CPU_TO_32(cksum, is_le);
+
+ for (i=1; i < HFS_16_TO_CPU(blhdr->num_blocks, is_le); ++i) {
+ size = HFS_32_TO_CPU(blhdr->binfo[i].bsize, is_le);
+ sector = HFS_64_TO_CPU(blhdr->binfo[i].bnum, is_le);
+ if (!size) continue;
+ if (size % PED_SECTOR_SIZE_DEFAULT) {
+ ped_exception_throw(
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Invalid size of a transaction "
+ "block while replaying the journal "
+ "(%i bytes)."),
+ size);
+ goto err_replay;
+ }
+ block = (uint8_t*) ped_malloc(size);
+ if (!block) goto err_replay;
+ start = hfsj_journal_read(priv_data->plus_geom, jh,
+ jsector, jlength, start,
+ size / PED_SECTOR_SIZE_DEFAULT,
+ block);
+ if (!start) {
+ ped_free (block);
+ goto err_replay;
+ }
+ /* the sector stored in the journal seems to be
+ relative to the begin of the block device which
+ contains the hfs+ journaled volume */
+ if (sector != ~0LL)
+ r = ped_geometry_write (fs->geom, block, sector,
+ size / PED_SECTOR_SIZE_DEFAULT);
+ else
+ r = 1;
+ ped_free (block);
+ /* check if wrapper mdb or vh with no wrapper has
+ changed */
+ if ( (sector != ~0LL)
+ && (2 >= sector)
+ && (2 < sector + size / PED_SECTOR_SIZE_DEFAULT) )
+ hfsj_vh_replayed = 1;
+ /* check if vh of embedded hfs+ has changed */
+ if ( (sector != ~0LL)
+ && (priv_data->plus_geom != fs->geom)
+ && (sector
+ + fs->geom->start
+ - priv_data->plus_geom->start <= 2)
+ && (sector
+ + size / PED_SECTOR_SIZE_DEFAULT
+ + fs->geom->start
+ - priv_data->plus_geom->start > 2) )
+ hfsj_vh_replayed = 1;
+ if (!r) goto err_replay;
+ }
+ } while (blhdr->binfo[0].next);
+
+ jh->start = HFS_CPU_TO_64(start * PED_SECTOR_SIZE_DEFAULT, is_le);
+
+ ped_free (blhdr);
+ return (ped_geometry_sync (fs->geom));
+
+err_replay:
+ ped_free (blhdr);
+ return 0;
+}
+
+/* 0 => Failure, don't continue to open ! */
+/* 1 => Success, the journal has been completly replayed, or don't need to */
+int
+hfsj_replay_journal(PedFileSystem* fs)
+{
+ uint8_t buf[PED_SECTOR_SIZE_DEFAULT];
+ PedSector sector, length;
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+ HfsJJournalInfoBlock* jib;
+ HfsJJournalHeader* jh;
+ int binsect;
+ uint32_t cksum;
+
+ binsect = PED_BE32_TO_CPU(priv_data->vh->block_size) / PED_SECTOR_SIZE_DEFAULT;
+ priv_data->jib_start_block =
+ PED_BE32_TO_CPU(priv_data->vh->journal_info_block);
+ sector = (PedSector) priv_data->jib_start_block * binsect;
+ if (!ped_geometry_read(priv_data->plus_geom, buf, sector, 1))
+ return 0;
+ jib = (HfsJJournalInfoBlock*) buf;
+
+ if ( (jib->flags & PED_CPU_TO_BE32(1 << HFSJ_JOURN_IN_FS))
+ && !(jib->flags & PED_CPU_TO_BE32(1 << HFSJ_JOURN_OTHER_DEV)) ) {
+ priv_data->jl_start_block = HFS_64_TO_CPU(jib->offset, is_le)
+ / ( PED_SECTOR_SIZE_DEFAULT * binsect );
+ }
+
+ if (jib->flags & PED_CPU_TO_BE32(1 << HFSJ_JOURN_NEED_INIT))
+ return 1;
+
+ if ( !(jib->flags & PED_CPU_TO_BE32(1 << HFSJ_JOURN_IN_FS))
+ || (jib->flags & PED_CPU_TO_BE32(1 << HFSJ_JOURN_OTHER_DEV)) ) {
+ ped_exception_throw (
+ PED_EXCEPTION_NO_FEATURE,
+ PED_EXCEPTION_CANCEL,
+ _("Journal stored outside of the volume are "
+ "not supported. Try to desactivate the "
+ "journal and run Parted again."));
+ return 0;
+ }
+
+ if ( (PED_BE64_TO_CPU(jib->offset) % PED_SECTOR_SIZE_DEFAULT)
+ || (PED_BE64_TO_CPU(jib->size) % PED_SECTOR_SIZE_DEFAULT) ) {
+ ped_exception_throw (
+ PED_EXCEPTION_NO_FEATURE,
+ PED_EXCEPTION_CANCEL,
+ _("Journal offset or size is not multiple of "
+ "the sector size."));
+ return 0;
+ }
+
+ sector = PED_BE64_TO_CPU(jib->offset) / PED_SECTOR_SIZE_DEFAULT;
+ length = PED_BE64_TO_CPU(jib->size) / PED_SECTOR_SIZE_DEFAULT;
+
+ jib = NULL;
+ if (!ped_geometry_read(priv_data->plus_geom, buf, sector, 1))
+ return 0;
+ jh = (HfsJJournalHeader*) buf;
+
+ if (jh->endian == PED_LE32_TO_CPU(HFSJ_ENDIAN_MAGIC))
+ is_le = 1;
+
+ if ( (jh->magic != HFS_32_TO_CPU(HFSJ_HEADER_MAGIC, is_le))
+ || (jh->endian != HFS_32_TO_CPU(HFSJ_ENDIAN_MAGIC, is_le)) ) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Incorrect magic values in the journal header."));
+ return 0;
+ }
+
+ if ( (HFS_64_TO_CPU(jh->size, is_le)%PED_SECTOR_SIZE_DEFAULT)
+ || (HFS_64_TO_CPU(jh->size, is_le)/PED_SECTOR_SIZE_DEFAULT
+ != (uint64_t)length) ) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Journal size mismatch between journal info block "
+ "and journal header."));
+ return 0;
+ }
+
+ if ( (HFS_64_TO_CPU(jh->start, is_le) % PED_SECTOR_SIZE_DEFAULT)
+ || (HFS_64_TO_CPU(jh->end, is_le) % PED_SECTOR_SIZE_DEFAULT)
+ || (HFS_32_TO_CPU(jh->blhdr_size, is_le) % PED_SECTOR_SIZE_DEFAULT)
+ || (HFS_32_TO_CPU(jh->jhdr_size, is_le) % PED_SECTOR_SIZE_DEFAULT) ) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Some header fields are not multiple of the sector "
+ "size."));
+ return 0;
+ }
+
+ if (HFS_32_TO_CPU(jh->jhdr_size, is_le) != PED_SECTOR_SIZE_DEFAULT) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("The sector size stored in the journal is not 512 "
+ "bytes. Parted only supports 512 bytes length "
+ "sectors."));
+ return 0;
+ }
+
+ cksum = HFS_32_TO_CPU(jh->checksum, is_le);
+ jh->checksum = 0;
+ if (cksum != hfsj_calc_checksum((uint8_t*)jh, sizeof(*jh))) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Bad journal checksum."));
+ return 0;
+ }
+ jh->checksum = HFS_CPU_TO_32(cksum, is_le);
+
+ /* The 2 following test are in the XNU Darwin source code */
+ /* so I assume they're needed */
+ if (jh->start == jh->size)
+ jh->start = HFS_CPU_TO_64(PED_SECTOR_SIZE_DEFAULT, is_le);
+ if (jh->end == jh->size)
+ jh->start = HFS_CPU_TO_64(PED_SECTOR_SIZE_DEFAULT, is_le);
+
+ if (jh->start == jh->end)
+ return 1;
+
+ if (ped_exception_throw (
+ PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_FIX | PED_EXCEPTION_CANCEL,
+ _("The journal is not empty. Parted must replay the "
+ "transactions before opening the file system. This will "
+ "modify the file system."))
+ != PED_EXCEPTION_FIX)
+ return 0;
+
+ while (jh->start != jh->end) {
+ /* Replay one complete transaction */
+ if (!hfsj_replay_transaction(fs, jh, sector, length))
+ return 0;
+
+ /* Recalculate cksum of the journal header */
+ jh->checksum = 0; /* need to be 0 while calculating the cksum */
+ cksum = hfsj_calc_checksum((uint8_t*)jh, sizeof(*jh));
+ jh->checksum = HFS_CPU_TO_32(cksum, is_le);
+
+ /* Update the Journal Header */
+ if (!ped_geometry_write(priv_data->plus_geom, buf, sector, 1)
+ || !ped_geometry_sync(priv_data->plus_geom))
+ return 0;
+ }
+
+ if (hfsj_vh_replayed) {
+ /* probe could have reported incorrect info ! */
+ /* is there a way to ask parted to quit ? */
+ ped_exception_throw(
+ PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_OK,
+ _("The volume header or the master directory block has "
+ "changed while replaying the journal. You should "
+ "restart Parted."));
+ return 0;
+ }
+
+ return 1;
+}
+
+#endif /* DISCOVER_ONLY */
diff --git a/parted-1.8.7/libparted/fs/hfs/journal.h b/parted-1.8.7/libparted/fs/hfs/journal.h
new file mode 100644
index 0000000..b8bea61
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/journal.h
@@ -0,0 +1,45 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2004 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef _JOURNAL_H
+#define _JOURNAL_H
+
+#include <parted/parted.h>
+#include <parted/endian.h>
+#include <parted/debug.h>
+
+#include "hfs.h"
+
+int
+hfsj_replay_journal(PedFileSystem* fs);
+
+int
+hfsj_update_jib(PedFileSystem* fs, uint32_t block);
+
+int
+hfsj_update_jl(PedFileSystem* fs, uint32_t block);
+
+#define HFS_16_TO_CPU(x, is_little_endian) ((is_little_endian) ? (uint16_t)PED_LE16_TO_CPU(x) : (uint16_t)PED_BE16_TO_CPU(x))
+#define HFS_32_TO_CPU(x, is_little_endian) ((is_little_endian) ? (uint32_t)PED_LE32_TO_CPU(x) : (uint32_t)PED_BE32_TO_CPU(x))
+#define HFS_64_TO_CPU(x, is_little_endian) ((is_little_endian) ? (uint64_t)PED_LE64_TO_CPU(x) : (uint64_t)PED_BE64_TO_CPU(x))
+#define HFS_CPU_TO_16(x, is_little_endian) ((is_little_endian) ? (uint16_t)PED_CPU_TO_LE16(x) : (uint16_t)PED_CPU_TO_BE16(x))
+#define HFS_CPU_TO_32(x, is_little_endian) ((is_little_endian) ? (uint32_t)PED_CPU_TO_LE32(x) : (uint32_t)PED_CPU_TO_BE32(x))
+#define HFS_CPU_TO_64(x, is_little_endian) ((is_little_endian) ? (uint64_t)PED_CPU_TO_LE64(x) : (uint64_t)PED_CPU_TO_BE64(x))
+
+#endif /* _JOURNAL_H */
diff --git a/parted-1.8.7/libparted/fs/hfs/probe.c b/parted-1.8.7/libparted/fs/hfs/probe.c
new file mode 100644
index 0000000..b9232f9
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/probe.c
@@ -0,0 +1,231 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2004, 2005 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#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, return 0);
+ PED_ASSERT (dev != NULL, return 0);
+
+ 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, return NULL);
+ PED_ASSERT (hfsc_can_use_geom (geom), return NULL);
+
+ 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, return 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, return 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, return 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/parted-1.8.7/libparted/fs/hfs/probe.h b/parted-1.8.7/libparted/fs/hfs/probe.h
new file mode 100644
index 0000000..3001006
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/probe.h
@@ -0,0 +1,44 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2004, 2005 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#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/parted-1.8.7/libparted/fs/hfs/reloc.c b/parted-1.8.7/libparted/fs/hfs/reloc.c
new file mode 100644
index 0000000..edd15e7
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/reloc.c
@@ -0,0 +1,671 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2004, 2005, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef DISCOVER_ONLY
+
+#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 "file.h"
+#include "advfs.h"
+#include "cache.h"
+
+#include "reloc.h"
+
+/* This function moves data of size blocks starting
+ at block *ptr_fblock to block *ptr_to_fblock */
+/* return new start or -1 on failure */
+static int
+hfs_effect_move_extent (PedFileSystem *fs, unsigned int *ptr_fblock,
+ unsigned int *ptr_to_fblock, unsigned int size)
+{
+ HfsPrivateFSData* priv_data = (HfsPrivateFSData*)
+ fs->type_specific;
+ unsigned int i, ok = 0;
+ unsigned int next_to_fblock;
+ unsigned int start, stop;
+
+ PED_ASSERT (hfs_block != NULL, return -1);
+ PED_ASSERT (*ptr_to_fblock <= *ptr_fblock, return -1);
+ /* quiet gcc */
+ next_to_fblock = start = stop = 0;
+
+/*
+ Try to fit the extent AT or _BEFORE_ the wanted place,
+ or then in the gap between dest and source.
+ If failed try to fit the extent after source, for 2 pass relocation
+ The extent is always copied in a non overlapping way
+*/
+
+ /* Backward search */
+ /* 1 pass relocation AT or BEFORE *ptr_to_fblock */
+ if (*ptr_to_fblock != *ptr_fblock) {
+ start = stop = *ptr_fblock < *ptr_to_fblock+size ?
+ *ptr_fblock : *ptr_to_fblock+size;
+ while (start && stop-start != size) {
+ --start;
+ if (TST_BLOC_OCCUPATION(priv_data->alloc_map,start))
+ stop = start;
+ }
+ ok = (stop-start == size);
+ }
+
+ /* Forward search */
+ /* 1 pass relocation in the gap merged with 2 pass reloc after source */
+ if (!ok && *ptr_to_fblock != *ptr_fblock) {
+ start = stop = *ptr_to_fblock+1;
+ while (stop < PED_BE16_TO_CPU(priv_data->mdb->total_blocks)
+ && stop-start != size) {
+ if (TST_BLOC_OCCUPATION(priv_data->alloc_map,stop))
+ start = stop + 1;
+ ++stop;
+ }
+ ok = (stop-start == size);
+ }
+
+ /* new non overlapping room has been found ? */
+ if (ok) {
+ /* enough room */
+ unsigned int j;
+ unsigned int start_block =
+ PED_BE16_TO_CPU (priv_data->mdb->start_block );
+ unsigned int block_sz =
+ (PED_BE32_TO_CPU (priv_data->mdb->block_size)
+ / PED_SECTOR_SIZE_DEFAULT);
+
+ if (stop > *ptr_to_fblock && stop <= *ptr_fblock)
+ /* Fit in the gap */
+ next_to_fblock = stop;
+ else
+ /* Before or after the gap */
+ next_to_fblock = *ptr_to_fblock;
+
+ /* move blocks */
+ for (i = 0; i < size; /*i+=j*/) {
+ PedSector abs_sector;
+ unsigned int ai;
+
+ j = size - i; j = (j < hfs_block_count) ?
+ j : hfs_block_count ;
+
+ abs_sector = start_block
+ + (PedSector) (*ptr_fblock + i) * block_sz;
+ if (!ped_geometry_read (fs->geom, hfs_block, abs_sector,
+ block_sz * j))
+ return -1;
+
+ abs_sector = start_block
+ + (PedSector) (start + i) * block_sz;
+ if (!ped_geometry_write (fs->geom,hfs_block,abs_sector,
+ block_sz * j))
+ return -1;
+
+ for (ai = i+j; i < ai; i++) {
+ /* free source block */
+ CLR_BLOC_OCCUPATION(priv_data->alloc_map,
+ *ptr_fblock + i);
+
+ /* set dest block */
+ SET_BLOC_OCCUPATION(priv_data->alloc_map,
+ start + i);
+ }
+ }
+ if (!ped_geometry_sync_fast (fs->geom))
+ return -1;
+
+ *ptr_fblock += size;
+ *ptr_to_fblock = next_to_fblock;
+ } else {
+ if (*ptr_fblock != *ptr_to_fblock)
+ /* not enough room, but try to continue */
+ ped_exception_throw (PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_IGNORE,
+ _("An extent has not been relocated."));
+ start = *ptr_fblock;
+ *ptr_fblock = *ptr_to_fblock = start + size;
+ }
+
+ return start;
+}
+
+/* Update MDB */
+/* Return 0 if an error occurred */
+/* Return 1 if everything ok */
+int
+hfs_update_mdb (PedFileSystem *fs)
+{
+ HfsPrivateFSData* priv_data = (HfsPrivateFSData*)
+ fs->type_specific;
+ uint8_t node[PED_SECTOR_SIZE_DEFAULT];
+
+ if (!ped_geometry_read (fs->geom, node, 2, 1))
+ return 0;
+ memcpy (node, priv_data->mdb, sizeof (HfsMasterDirectoryBlock));
+ if ( !ped_geometry_write (fs->geom, node, 2, 1)
+ || !ped_geometry_write (fs->geom, node, fs->geom->length - 2, 1)
+ || !ped_geometry_sync_fast (fs->geom))
+ return 0;
+ return 1;
+}
+
+/* Generic relocator */
+/* replace previous hfs_do_move_* */
+static int
+hfs_do_move (PedFileSystem* fs, unsigned int *ptr_src,
+ unsigned int *ptr_dest, HfsCPrivateCache* cache,
+ HfsCPrivateExtent* ref)
+{
+ uint8_t node[PED_SECTOR_SIZE_DEFAULT];
+ HfsPrivateFSData* priv_data = (HfsPrivateFSData*)
+ fs->type_specific;
+ HfsPrivateFile* file;
+ HfsExtDescriptor* extent;
+ HfsCPrivateExtent* move;
+ int new_start;
+
+ new_start = hfs_effect_move_extent (fs, ptr_src, ptr_dest,
+ ref->ext_length);
+ if (new_start == -1) return -1;
+
+ if (ref->ext_start != (unsigned) new_start) {
+ /* Load, modify & save */
+ switch (ref->where) {
+ /******** MDB *********/
+ case CR_PRIM_CAT :
+ priv_data->catalog_file
+ ->first[ref->ref_index].start_block =
+ PED_CPU_TO_BE16(new_start);
+ goto CR_PRIM;
+ case CR_PRIM_EXT :
+ priv_data->extent_file
+ ->first[ref->ref_index].start_block =
+ PED_CPU_TO_BE16(new_start);
+ CR_PRIM :
+ extent = ( HfsExtDescriptor* )
+ ( (uint8_t*)priv_data->mdb + ref->ref_offset );
+ extent[ref->ref_index].start_block =
+ PED_CPU_TO_BE16(new_start);
+ if (!hfs_update_mdb(fs)) return -1;
+ break;
+
+ /********* BTREE *******/
+ case CR_BTREE_EXT_CAT :
+ if (priv_data->catalog_file
+ ->cache[ref->ref_index].start_block
+ == PED_CPU_TO_BE16(ref->ext_start))
+ priv_data->catalog_file
+ ->cache[ref->ref_index].start_block =
+ PED_CPU_TO_BE16(new_start);
+ case CR_BTREE_EXT_0 :
+ file = priv_data->extent_file;
+ goto CR_BTREE;
+ case CR_BTREE_CAT :
+ file = priv_data->catalog_file;
+ CR_BTREE:
+ PED_ASSERT(ref->sect_by_block == 1
+ && ref->ref_offset < PED_SECTOR_SIZE_DEFAULT,
+ return -1);
+ if (!hfs_file_read_sector(file, node, ref->ref_block))
+ return -1;
+ extent = ( HfsExtDescriptor* ) (node + ref->ref_offset);
+ extent[ref->ref_index].start_block =
+ PED_CPU_TO_BE16(new_start);
+ if (!hfs_file_write_sector(file, node, ref->ref_block)
+ || !ped_geometry_sync_fast (fs->geom))
+ return -1;
+ break;
+
+ /********** BUG ********/
+ default :
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("A reference to an extent comes from a place "
+ "it should not. You should check the file "
+ "system!"));
+ return -1;
+ break;
+ }
+
+ /* Update the cache */
+ move = hfsc_cache_move_extent(cache, ref->ext_start, new_start);
+ if (!move) return -1; /* "cleanly" fail */
+ PED_ASSERT(move == ref, return -1); /* generate a bug */
+ }
+
+ return new_start;
+}
+
+/* 0 error, 1 ok */
+static int
+hfs_save_allocation(PedFileSystem* fs)
+{
+ HfsPrivateFSData* priv_data = (HfsPrivateFSData*)
+ fs->type_specific;
+ unsigned int map_sectors;
+
+ map_sectors = ( PED_BE16_TO_CPU (priv_data->mdb->total_blocks)
+ + PED_SECTOR_SIZE_DEFAULT * 8 - 1 )
+ / (PED_SECTOR_SIZE_DEFAULT * 8);
+ return ( ped_geometry_write (fs->geom, priv_data->alloc_map,
+ PED_BE16_TO_CPU (priv_data->mdb->volume_bitmap_block),
+ map_sectors) );
+}
+
+/* This function moves an extent starting at block fblock to block to_fblock
+ if there's enough room */
+/* Return 1 if everything was fine */
+/* Return -1 if an error occurred */
+/* Return 0 if no extent was found */
+/* Generic search thanks to the file system cache */
+static int
+hfs_move_extent_starting_at (PedFileSystem *fs, unsigned int *ptr_fblock,
+ unsigned int *ptr_to_fblock,
+ HfsCPrivateCache* cache)
+{
+ HfsCPrivateExtent* ref;
+ unsigned int old_start, new_start;
+
+ /* Reference search powered by the cache... */
+ /* This is the optimisation secret :) */
+ ref = hfsc_cache_search_extent(cache, *ptr_fblock);
+ if (!ref) return 0; /* not found */
+
+ old_start = *ptr_fblock;
+ new_start = hfs_do_move(fs, ptr_fblock, ptr_to_fblock, cache, ref);
+ if (new_start == (unsigned int) -1) return -1;
+ if (new_start > old_start) { /* detect 2 pass reloc */
+ new_start = hfs_do_move(fs,&new_start,ptr_to_fblock,cache,ref);
+ if (new_start == (unsigned int) -1 || new_start > old_start)
+ return -1;
+ }
+
+ /* allocation bitmap save is not atomic with data relocation */
+ /* so we only do it a few times, and without syncing */
+ /* The unmounted bit protect us anyway */
+ hfs_save_allocation(fs);
+ return 1;
+}
+
+static int
+hfs_cache_from_mdb(HfsCPrivateCache* cache, PedFileSystem* fs,
+ PedTimer* timer)
+{
+ HfsPrivateFSData* priv_data = (HfsPrivateFSData*)
+ fs->type_specific;
+ HfsExtDescriptor* extent;
+ unsigned int j;
+
+ extent = priv_data->mdb->extents_file_rec;
+ for (j = 0; j < HFS_EXT_NB; ++j) {
+ if (!extent[j].block_count) break;
+ if (!hfsc_cache_add_extent(
+ cache,
+ PED_BE16_TO_CPU(extent[j].start_block),
+ PED_BE16_TO_CPU(extent[j].block_count),
+ 0, /* unused for mdb */
+ ((uint8_t*)extent) - ((uint8_t*)priv_data->mdb),
+ 1, /* load/save only 1 sector */
+ CR_PRIM_EXT,
+ j )
+ )
+ return 0;
+ }
+
+ extent = priv_data->mdb->catalog_file_rec;
+ for (j = 0; j < HFS_EXT_NB; ++j) {
+ if (!extent[j].block_count) break;
+ if (!hfsc_cache_add_extent(
+ cache,
+ PED_BE16_TO_CPU(extent[j].start_block),
+ PED_BE16_TO_CPU(extent[j].block_count),
+ 0,
+ ((uint8_t*)extent) - ((uint8_t*)priv_data->mdb),
+ 1,
+ CR_PRIM_CAT,
+ j )
+ )
+ return 0;
+ }
+
+ return 1;
+}
+
+static int
+hfs_cache_from_catalog(HfsCPrivateCache* cache, PedFileSystem* fs,
+ PedTimer* timer)
+{
+ HfsPrivateFSData* priv_data = (HfsPrivateFSData*)
+ fs->type_specific;
+ uint8_t node[PED_SECTOR_SIZE_DEFAULT];
+ HfsHeaderRecord* header;
+ HfsNodeDescriptor* desc = (HfsNodeDescriptor*) node;
+ HfsCatalogKey* catalog_key;
+ HfsCatalog* catalog_data;
+ HfsExtDescriptor* extent;
+ unsigned int leaf_node, record_number;
+ unsigned int i, j;
+
+ if (!priv_data->catalog_file->sect_nb) {
+ ped_exception_throw (
+ PED_EXCEPTION_INFORMATION,
+ PED_EXCEPTION_OK,
+ _("This HFS volume has no catalog file. "
+ "This is very unusual!"));
+ return 1;
+ }
+
+ if (!hfs_file_read_sector (priv_data->catalog_file, node, 0))
+ return 0;
+ header = (HfsHeaderRecord*)(node + PED_BE16_TO_CPU(*((uint16_t*)
+ (node+(PED_SECTOR_SIZE_DEFAULT-2)))));
+
+ for (leaf_node = PED_BE32_TO_CPU (header->first_leaf_node);
+ leaf_node;
+ leaf_node = PED_BE32_TO_CPU (desc->next)) {
+ if (!hfs_file_read_sector (priv_data->catalog_file,
+ node, leaf_node))
+ return 0;
+ record_number = PED_BE16_TO_CPU (desc->rec_nb);
+ for (i = 1; i <= record_number; ++i) {
+ /* undocumented alignement */
+ unsigned int skip;
+ catalog_key = (HfsCatalogKey*) (node + PED_BE16_TO_CPU(
+ *((uint16_t*)(node+(PED_SECTOR_SIZE_DEFAULT - 2*i)))));
+ skip = (1 + catalog_key->key_length + 1) & ~1;
+ catalog_data = (HfsCatalog*)( ((uint8_t*)catalog_key)
+ + skip );
+ /* check for obvious error in FS */
+ if (((uint8_t*)catalog_key - node < HFS_FIRST_REC)
+ || ((uint8_t*)catalog_data - node
+ >= PED_SECTOR_SIZE_DEFAULT
+ - 2 * (signed)(record_number+1))) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("The file system contains errors."));
+ return 0;
+ }
+
+ if (catalog_data->type != HFS_CAT_FILE) continue;
+
+ extent = catalog_data->sel.file.extents_data;
+ for (j = 0; j < HFS_EXT_NB; ++j) {
+ if (!extent[j].block_count) break;
+ if (!hfsc_cache_add_extent(
+ cache,
+ PED_BE16_TO_CPU(extent[j].start_block),
+ PED_BE16_TO_CPU(extent[j].block_count),
+ leaf_node,
+ (uint8_t*)extent - node,
+ 1, /* hfs => btree block = 512 b */
+ CR_BTREE_CAT,
+ j )
+ )
+ return 0;
+ }
+
+ extent = catalog_data->sel.file.extents_res;
+ for (j = 0; j < HFS_EXT_NB; ++j) {
+ if (!extent[j].block_count) break;
+ if (!hfsc_cache_add_extent(
+ cache,
+ PED_BE16_TO_CPU(extent[j].start_block),
+ PED_BE16_TO_CPU(extent[j].block_count),
+ leaf_node,
+ (uint8_t*)extent - node,
+ 1, /* hfs => btree block = 512 b */
+ CR_BTREE_CAT,
+ j )
+ )
+ return 0;
+ }
+ }
+ }
+
+ return 1;
+}
+
+static int
+hfs_cache_from_extent(HfsCPrivateCache* cache, PedFileSystem* fs,
+ PedTimer* timer)
+{
+ HfsPrivateFSData* priv_data = (HfsPrivateFSData*)
+ fs->type_specific;
+ uint8_t node[PED_SECTOR_SIZE_DEFAULT];
+ HfsHeaderRecord* header;
+ HfsNodeDescriptor* desc = (HfsNodeDescriptor*) node;
+ HfsExtentKey* extent_key;
+ HfsExtDescriptor* extent;
+ unsigned int leaf_node, record_number;
+ unsigned int i, j;
+
+ if (!priv_data->extent_file->sect_nb) {
+ ped_exception_throw (
+ PED_EXCEPTION_INFORMATION,
+ PED_EXCEPTION_OK,
+ _("This HFS volume has no extents overflow "
+ "file. This is quite unusual!"));
+ return 1;
+ }
+
+ if (!hfs_file_read_sector (priv_data->extent_file, node, 0))
+ return 0;
+ header = ((HfsHeaderRecord*) (node + PED_BE16_TO_CPU(*((uint16_t *)
+ (node+(PED_SECTOR_SIZE_DEFAULT-2))))));
+
+ for (leaf_node = PED_BE32_TO_CPU (header->first_leaf_node);
+ leaf_node;
+ leaf_node = PED_BE32_TO_CPU (desc->next)) {
+ if (!hfs_file_read_sector (priv_data->extent_file, node,
+ leaf_node))
+ return 0;
+ record_number = PED_BE16_TO_CPU (desc->rec_nb);
+ for (i = 1; i <= record_number; i++) {
+ uint8_t where;
+ extent_key = (HfsExtentKey*)
+ (node + PED_BE16_TO_CPU(*((uint16_t *)
+ (node+(PED_SECTOR_SIZE_DEFAULT - 2*i)))));
+ /* size is cst */
+ extent = (HfsExtDescriptor*)(((uint8_t*)extent_key)
+ + sizeof (HfsExtentKey));
+ /* check for obvious error in FS */
+ if (((uint8_t*)extent_key - node < HFS_FIRST_REC)
+ || ((uint8_t*)extent - node
+ >= PED_SECTOR_SIZE_DEFAULT
+ - 2 * (signed)(record_number+1))) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("The file system contains errors."));
+ return 0;
+ }
+
+ switch (extent_key->file_ID) {
+ case PED_CPU_TO_BE32 (HFS_XTENT_ID) :
+ if (ped_exception_throw (
+ PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_IGNORE_CANCEL,
+ _("The extents overflow file should not"
+ " contain its own extents! You "
+ "should check the file system."))
+ != PED_EXCEPTION_IGNORE)
+ return 0;
+ where = CR_BTREE_EXT_EXT;
+ break;
+ case PED_CPU_TO_BE32 (HFS_CATALOG_ID) :
+ where = CR_BTREE_EXT_CAT;
+ break;
+ default :
+ where = CR_BTREE_EXT_0;
+ break;
+ }
+
+ for (j = 0; j < HFS_EXT_NB; ++j) {
+ if (!extent[j].block_count) break;
+ if (!hfsc_cache_add_extent(
+ cache,
+ PED_BE16_TO_CPU(extent[j].start_block),
+ PED_BE16_TO_CPU(extent[j].block_count),
+ leaf_node,
+ (uint8_t*)extent - node,
+ 1, /* hfs => btree block = 512 b */
+ where,
+ j )
+ )
+ return 0;
+ }
+ }
+ }
+
+ return 1;
+}
+
+/* This function cache every extents start and length stored in any
+ fs structure into the adt defined in cache.[ch]
+ Returns NULL on failure */
+static HfsCPrivateCache*
+hfs_cache_extents(PedFileSystem *fs, PedTimer* timer)
+{
+ HfsPrivateFSData* priv_data = (HfsPrivateFSData*)
+ fs->type_specific;
+ HfsCPrivateCache* ret;
+ unsigned int file_number, block_number;
+
+ file_number = PED_BE32_TO_CPU(priv_data->mdb->file_count);
+ block_number = PED_BE16_TO_CPU(priv_data->mdb->total_blocks);
+ ret = hfsc_new_cache(block_number, file_number);
+ if (!ret) return NULL;
+
+ if (!hfs_cache_from_mdb(ret, fs, timer) ||
+ !hfs_cache_from_catalog(ret, fs, timer) ||
+ !hfs_cache_from_extent(ret, fs, timer)) {
+ ped_exception_throw(
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Could not cache the file system in memory."));
+ hfsc_delete_cache(ret);
+ return NULL;
+ }
+
+ return ret;
+}
+
+/* This function moves file's data to compact used and free space,
+ starting at fblock block */
+/* return 0 on error */
+int
+hfs_pack_free_space_from_block (PedFileSystem *fs, unsigned int fblock,
+ PedTimer* timer, unsigned int to_free)
+{
+ PedSector bytes_buff;
+ HfsPrivateFSData* priv_data = (HfsPrivateFSData*)
+ fs->type_specific;
+ HfsMasterDirectoryBlock* mdb = priv_data->mdb;
+ HfsCPrivateCache* cache;
+ unsigned int to_fblock = fblock;
+ unsigned int start = fblock;
+ unsigned int divisor = PED_BE16_TO_CPU (mdb->total_blocks)
+ + 1 - start - to_free;
+ int ret;
+
+ PED_ASSERT (!hfs_block, return 0);
+
+ cache = hfs_cache_extents (fs, timer);
+ if (!cache)
+ return 0;
+
+ /* Calculate the size of the copy buffer :
+ * Takes BLOCK_MAX_BUFF HFS blocks, but if > BYTES_MAX_BUFF
+ * takes the maximum number of HFS blocks so that the buffer
+ * will remain smaller than or equal to BYTES_MAX_BUFF, with
+ * a minimum of 1 HFS block */
+ bytes_buff = PED_BE32_TO_CPU (priv_data->mdb->block_size)
+ * (PedSector) BLOCK_MAX_BUFF;
+ if (bytes_buff > BYTES_MAX_BUFF) {
+ hfs_block_count = BYTES_MAX_BUFF
+ / PED_BE32_TO_CPU (priv_data->mdb->block_size);
+ if (!hfs_block_count)
+ hfs_block_count = 1;
+ bytes_buff = (PedSector) hfs_block_count
+ * PED_BE32_TO_CPU (priv_data->mdb->block_size);
+ } else
+ hfs_block_count = BLOCK_MAX_BUFF;
+
+ /* If the cache code requests more space, give it to him */
+ if (bytes_buff < hfsc_cache_needed_buffer (cache))
+ bytes_buff = hfsc_cache_needed_buffer (cache);
+
+ hfs_block = (uint8_t*) ped_malloc (bytes_buff);
+ if (!hfs_block)
+ goto error_cache;
+
+ if (!hfs_read_bad_blocks (fs)) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Bad blocks list could not be loaded."));
+ goto error_alloc;
+ }
+
+ while (fblock < PED_BE16_TO_CPU (mdb->total_blocks)) {
+ if (TST_BLOC_OCCUPATION(priv_data->alloc_map,fblock)
+ && (!hfs_is_bad_block (fs, fblock))) {
+ if (!(ret = hfs_move_extent_starting_at (fs, &fblock,
+ &to_fblock, cache)))
+ to_fblock = ++fblock;
+ else if (ret == -1) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("An error occurred during extent "
+ "relocation."));
+ goto error_alloc;
+ }
+ } else {
+ fblock++;
+ }
+
+ ped_timer_update(timer, (float)(to_fblock - start)/divisor);
+ }
+
+ ped_free (hfs_block); hfs_block = NULL; hfs_block_count = 0;
+ hfsc_delete_cache (cache);
+ return 1;
+
+error_alloc:
+ ped_free (hfs_block); hfs_block = NULL; hfs_block_count = 0;
+error_cache:
+ hfsc_delete_cache (cache);
+ return 0;
+}
+
+#endif /* !DISCOVER_ONLY */
diff --git a/parted-1.8.7/libparted/fs/hfs/reloc.h b/parted-1.8.7/libparted/fs/hfs/reloc.h
new file mode 100644
index 0000000..627dd0c
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/reloc.h
@@ -0,0 +1,36 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2004 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef _RELOC_H
+#define _RELOC_H
+
+#include <parted/parted.h>
+#include <parted/endian.h>
+#include <parted/debug.h>
+
+#include "hfs.h"
+
+int
+hfs_update_mdb (PedFileSystem *fs);
+
+int
+hfs_pack_free_space_from_block (PedFileSystem *fs, unsigned int fblock,
+ PedTimer* timer, unsigned int to_free);
+
+#endif /* _RELOC_H */
diff --git a/parted-1.8.7/libparted/fs/hfs/reloc_plus.c b/parted-1.8.7/libparted/fs/hfs/reloc_plus.c
new file mode 100644
index 0000000..2274b28
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/reloc_plus.c
@@ -0,0 +1,946 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2004, 2005, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef DISCOVER_ONLY
+
+#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 "file_plus.h"
+#include "advfs_plus.h"
+#include "cache.h"
+#include "journal.h"
+
+#include "reloc_plus.h"
+
+/* This function moves data of size blocks starting at block *ptr_fblock
+ to block *ptr_to_fblock */
+/* return new start or -1 on failure */
+/* -1 is ok because there can only be 2^32-1 blocks, so the max possible
+ last one is 2^32-2 (and anyway it contains Alternate VH), so
+ -1 (== 2^32-1[2^32]) never represent a valid block */
+static int
+hfsplus_effect_move_extent (PedFileSystem *fs, unsigned int *ptr_fblock,
+ unsigned int *ptr_to_fblock, unsigned int size)
+{
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+ unsigned int i, ok = 0;
+ unsigned int next_to_fblock;
+ unsigned int start, stop;
+
+ PED_ASSERT (hfsp_block != NULL, return -1);
+ PED_ASSERT (*ptr_to_fblock <= *ptr_fblock, return -1);
+ /* quiet GCC */
+ next_to_fblock = start = stop = 0;
+
+/*
+ Try to fit the extent AT or _BEFORE_ the wanted place,
+ or then in the gap between dest and source.
+ If failed try to fit the extent after source, for 2 pass relocation
+ The extent is always copied in a non overlapping way
+*/
+
+ /* Backward search */
+ /* 1 pass relocation AT or BEFORE *ptr_to_fblock */
+ if (*ptr_to_fblock != *ptr_fblock) {
+ start = stop = *ptr_fblock < *ptr_to_fblock+size ?
+ *ptr_fblock : *ptr_to_fblock+size;
+ while (start && stop-start != size) {
+ --start;
+ if (TST_BLOC_OCCUPATION(priv_data->alloc_map,start))
+ stop = start;
+ }
+ ok = (stop-start == size);
+ }
+
+ /* Forward search */
+ /* 1 pass relocation in the gap merged with 2 pass reloc after source */
+ if (!ok && *ptr_to_fblock != *ptr_fblock) {
+ start = stop = *ptr_to_fblock+1;
+ while (stop < PED_BE32_TO_CPU(priv_data->vh->total_blocks)
+ && stop-start != size) {
+ if (TST_BLOC_OCCUPATION(priv_data->alloc_map,stop))
+ start = stop + 1;
+ ++stop;
+ }
+ ok = (stop-start == size);
+ }
+
+ /* new non overlapping room has been found ? */
+ if (ok) {
+ /* enough room */
+ PedSector abs_sector;
+ unsigned int ai, j, block;
+ unsigned int block_sz = (PED_BE32_TO_CPU (
+ priv_data->vh->block_size)
+ / PED_SECTOR_SIZE_DEFAULT);
+
+ if (stop > *ptr_to_fblock && stop <= *ptr_fblock)
+ /* Fit in the gap */
+ next_to_fblock = stop;
+ else
+ /* Before or after the gap */
+ next_to_fblock = *ptr_to_fblock;
+
+ /* move blocks */
+ for (i = 0; i < size; /*i++*/) {
+ j = size - i; j = (j < hfsp_block_count) ?
+ j : hfsp_block_count ;
+
+ abs_sector = (PedSector) (*ptr_fblock + i) * block_sz;
+ if (!ped_geometry_read (priv_data->plus_geom,
+ hfsp_block, abs_sector,
+ block_sz * j))
+ return -1;
+
+ abs_sector = (PedSector) (start + i) * block_sz;
+ if (!ped_geometry_write (priv_data->plus_geom,
+ hfsp_block, abs_sector,
+ block_sz * j))
+ return -1;
+
+ for (ai = i+j; i < ai; i++) {
+ /* free source block */
+ block = *ptr_fblock + i;
+ CLR_BLOC_OCCUPATION(priv_data->alloc_map,block);
+ SET_BLOC_OCCUPATION(priv_data->dirty_alloc_map,
+ block/(PED_SECTOR_SIZE_DEFAULT*8));
+
+ /* set dest block */
+ block = start + i;
+ SET_BLOC_OCCUPATION(priv_data->alloc_map,block);
+ SET_BLOC_OCCUPATION(priv_data->dirty_alloc_map,
+ block/(PED_SECTOR_SIZE_DEFAULT*8));
+ }
+ }
+ if (!ped_geometry_sync_fast (priv_data->plus_geom))
+ return -1;
+
+ *ptr_fblock += size;
+ *ptr_to_fblock = next_to_fblock;
+ } else {
+ if (*ptr_fblock != *ptr_to_fblock)
+ /* not enough room */
+ ped_exception_throw (PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_IGNORE,
+ _("An extent has not been relocated."));
+ start = *ptr_fblock;
+ *ptr_fblock = *ptr_to_fblock = start + size;
+ }
+
+ return start;
+}
+
+/* Returns 0 on error */
+/* 1 on succes */
+int
+hfsplus_update_vh (PedFileSystem *fs)
+{
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+ uint8_t node[PED_SECTOR_SIZE_DEFAULT];
+
+ if (!ped_geometry_read (priv_data->plus_geom, node, 2, 1))
+ return 0;
+ memcpy (node, priv_data->vh, sizeof (HfsPVolumeHeader));
+ if (!ped_geometry_write (priv_data->plus_geom, node, 2, 1)
+ || !ped_geometry_write (priv_data->plus_geom, node,
+ priv_data->plus_geom->length - 2, 1)
+ || !ped_geometry_sync_fast (priv_data->plus_geom))
+ return 0;
+ return 1;
+}
+
+static int
+hfsplus_do_move (PedFileSystem* fs, unsigned int *ptr_src,
+ unsigned int *ptr_dest, HfsCPrivateCache* cache,
+ HfsCPrivateExtent* ref)
+{
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+ HfsPPrivateFile* file;
+ HfsPExtDescriptor* extent;
+ HfsCPrivateExtent* move;
+ int new_start;
+
+ new_start = hfsplus_effect_move_extent (fs, ptr_src, ptr_dest,
+ ref->ext_length);
+
+ if (new_start == -1) return -1;
+
+ if (ref->ext_start != (unsigned) new_start) {
+ switch (ref->where) {
+ /************ VH ************/
+ case CR_PRIM_CAT :
+ priv_data->catalog_file
+ ->first[ref->ref_index].start_block =
+ PED_CPU_TO_BE32(new_start);
+ goto CR_PRIM;
+ case CR_PRIM_EXT :
+ priv_data->extents_file
+ ->first[ref->ref_index].start_block =
+ PED_CPU_TO_BE32(new_start);
+ goto CR_PRIM;
+ case CR_PRIM_ATTR :
+ priv_data->attributes_file
+ ->first[ref->ref_index].start_block =
+ PED_CPU_TO_BE32(new_start);
+ goto CR_PRIM;
+ case CR_PRIM_ALLOC :
+ priv_data->allocation_file
+ ->first[ref->ref_index].start_block =
+ PED_CPU_TO_BE32(new_start);
+ goto CR_PRIM;
+ case CR_PRIM_START :
+ /* No startup file opened */
+ CR_PRIM :
+ extent = ( HfsPExtDescriptor* )
+ ( (uint8_t*)priv_data->vh + ref->ref_offset );
+ extent[ref->ref_index].start_block =
+ PED_CPU_TO_BE32(new_start);
+ if (!hfsplus_update_vh(fs))
+ return -1;
+ break;
+
+ /************** BTREE *************/
+ case CR_BTREE_CAT_JIB :
+ if (!hfsj_update_jib(fs, new_start))
+ return -1;
+ goto BTREE_CAT;
+
+ case CR_BTREE_CAT_JL :
+ if (!hfsj_update_jl(fs, new_start))
+ return -1;
+ goto BTREE_CAT;
+
+ BTREE_CAT:
+ case CR_BTREE_CAT :
+ file = priv_data->catalog_file;
+ goto CR_BTREE;
+
+ case CR_BTREE_ATTR :
+ file = priv_data->attributes_file;
+ goto CR_BTREE;
+
+ case CR_BTREE_EXT_ATTR :
+ if (priv_data->attributes_file
+ ->cache[ref->ref_index].start_block
+ == PED_CPU_TO_BE32(ref->ext_start))
+ priv_data->attributes_file
+ ->cache[ref->ref_index].start_block =
+ PED_CPU_TO_BE32(new_start);
+ goto CR_BTREE_EXT;
+ case CR_BTREE_EXT_CAT :
+ if (priv_data->catalog_file
+ ->cache[ref->ref_index].start_block
+ == PED_CPU_TO_BE32(ref->ext_start))
+ priv_data->catalog_file
+ ->cache[ref->ref_index].start_block =
+ PED_CPU_TO_BE32(new_start);
+ goto CR_BTREE_EXT;
+ case CR_BTREE_EXT_ALLOC :
+ if (priv_data->allocation_file
+ ->cache[ref->ref_index].start_block
+ == PED_CPU_TO_BE32(ref->ext_start))
+ priv_data->allocation_file
+ ->cache[ref->ref_index].start_block =
+ PED_CPU_TO_BE32(new_start);
+ goto CR_BTREE_EXT;
+ case CR_BTREE_EXT_START :
+ /* No startup file opened */
+ CR_BTREE_EXT :
+ case CR_BTREE_EXT_0 :
+ file = priv_data->extents_file;
+
+ CR_BTREE :
+ PED_ASSERT(PED_SECTOR_SIZE_DEFAULT * ref->sect_by_block
+ > ref->ref_offset, return -1 );
+ if (!hfsplus_file_read(file, hfsp_block,
+ (PedSector)ref->ref_block * ref->sect_by_block,
+ ref->sect_by_block))
+ return -1;
+ extent = ( HfsPExtDescriptor* )
+ ( hfsp_block + ref->ref_offset );
+ extent[ref->ref_index].start_block =
+ PED_CPU_TO_BE32(new_start);
+ if (!hfsplus_file_write(file, hfsp_block,
+ (PedSector)ref->ref_block * ref->sect_by_block,
+ ref->sect_by_block)
+ || !ped_geometry_sync_fast (priv_data->plus_geom))
+ return -1;
+ break;
+
+ /********** BUG *********/
+ default :
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("A reference to an extent comes from a place "
+ "it should not. You should check the file "
+ "system!"));
+ return -1;
+ break;
+ }
+
+ move = hfsc_cache_move_extent(cache, ref->ext_start, new_start);
+ if (!move) return -1;
+ PED_ASSERT(move == ref, return -1);
+ }
+
+ return new_start;
+}
+
+/* save any dirty sector of the allocation bitmap file */
+static int
+hfsplus_save_allocation(PedFileSystem *fs)
+{
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+ unsigned int map_sectors, i, j;
+ int ret = 1;
+
+ map_sectors = ( PED_BE32_TO_CPU (priv_data->vh->total_blocks)
+ + PED_SECTOR_SIZE_DEFAULT * 8 - 1 ) / (PED_SECTOR_SIZE_DEFAULT * 8);
+
+ for (i = 0; i < map_sectors;) {
+ for (j = i;
+ (TST_BLOC_OCCUPATION(priv_data->dirty_alloc_map,j));
+ ++j)
+ CLR_BLOC_OCCUPATION(priv_data->dirty_alloc_map,j);
+ if (j-i) {
+ ret = hfsplus_file_write(priv_data->allocation_file,
+ priv_data->alloc_map + i * PED_SECTOR_SIZE_DEFAULT,
+ i, j-i) && ret;
+ i = j;
+ } else
+ ++i;
+ }
+
+ return ret;
+}
+
+/* This function moves an extent starting at block fblock
+ to block to_fblock if there's enough room */
+/* Return 1 if everything was fine */
+/* Return -1 if an error occurred */
+/* Return 0 if no extent was found */
+static int
+hfsplus_move_extent_starting_at (PedFileSystem *fs, unsigned int *ptr_fblock,
+ unsigned int *ptr_to_fblock,
+ HfsCPrivateCache* cache)
+{
+ HfsCPrivateExtent* ref;
+ unsigned int old_start, new_start;
+
+ ref = hfsc_cache_search_extent(cache, *ptr_fblock);
+ if (!ref) return 0;
+
+ old_start = *ptr_fblock;
+ new_start = hfsplus_do_move(fs, ptr_fblock, ptr_to_fblock, cache, ref);
+ if (new_start == (unsigned)-1) return -1;
+ if (new_start > old_start) {
+ new_start = hfsplus_do_move(fs, &new_start, ptr_to_fblock,
+ cache, ref);
+ if (new_start == (unsigned)-1 || new_start > old_start)
+ return -1;
+ }
+
+ hfsplus_save_allocation(fs);
+ return 1;
+}
+
+static int
+hfsplus_cache_from_vh(HfsCPrivateCache* cache, PedFileSystem* fs,
+ PedTimer* timer)
+{
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+ HfsPExtDescriptor* extent;
+ unsigned int j;
+
+ extent = priv_data->vh->allocation_file.extents;
+ for (j = 0; j < HFSP_EXT_NB; ++j) {
+ if (!extent[j].block_count) break;
+ if (!hfsc_cache_add_extent(
+ cache,
+ PED_BE32_TO_CPU(extent[j].start_block),
+ PED_BE32_TO_CPU(extent[j].block_count),
+ 0, /* unused for vh */
+ ((uint8_t*)extent) - ((uint8_t*)priv_data->vh),
+ 1, /* load / save 1 sector */
+ CR_PRIM_ALLOC,
+ j )
+ )
+ return 0;
+ }
+
+ extent = priv_data->vh->extents_file.extents;
+ for (j = 0; j < HFSP_EXT_NB; ++j) {
+ if (!extent[j].block_count) break;
+ if (!hfsc_cache_add_extent(
+ cache,
+ PED_BE32_TO_CPU(extent[j].start_block),
+ PED_BE32_TO_CPU(extent[j].block_count),
+ 0, /* unused for vh */
+ ((uint8_t*)extent) - ((uint8_t*)priv_data->vh),
+ 1, /* load / save 1 sector */
+ CR_PRIM_EXT,
+ j )
+ )
+ return 0;
+ }
+
+ extent = priv_data->vh->catalog_file.extents;
+ for (j = 0; j < HFSP_EXT_NB; ++j) {
+ if (!extent[j].block_count) break;
+ if (!hfsc_cache_add_extent(
+ cache,
+ PED_BE32_TO_CPU(extent[j].start_block),
+ PED_BE32_TO_CPU(extent[j].block_count),
+ 0, /* unused for vh */
+ ((uint8_t*)extent) - ((uint8_t*)priv_data->vh),
+ 1, /* load / save 1 sector */
+ CR_PRIM_CAT,
+ j )
+ )
+ return 0;
+ }
+
+ extent = priv_data->vh->attributes_file.extents;
+ for (j = 0; j < HFSP_EXT_NB; ++j) {
+ if (!extent[j].block_count) break;
+ if (!hfsc_cache_add_extent(
+ cache,
+ PED_BE32_TO_CPU(extent[j].start_block),
+ PED_BE32_TO_CPU(extent[j].block_count),
+ 0, /* unused for vh */
+ ((uint8_t*)extent) - ((uint8_t*)priv_data->vh),
+ 1, /* load / save 1 sector */
+ CR_PRIM_ATTR,
+ j )
+ )
+ return 0;
+ }
+
+ extent = priv_data->vh->startup_file.extents;
+ for (j = 0; j < HFSP_EXT_NB; ++j) {
+ if (!extent[j].block_count) break;
+ if (!hfsc_cache_add_extent(
+ cache,
+ PED_BE32_TO_CPU(extent[j].start_block),
+ PED_BE32_TO_CPU(extent[j].block_count),
+ 0, /* unused for vh */
+ ((uint8_t*)extent) - ((uint8_t*)priv_data->vh),
+ 1, /* load / save 1 sector */
+ CR_PRIM_START,
+ j )
+ )
+ return 0;
+ }
+
+ return 1;
+}
+
+static int
+hfsplus_cache_from_catalog(HfsCPrivateCache* cache, PedFileSystem* fs,
+ PedTimer* timer)
+{
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+ uint8_t node_1[PED_SECTOR_SIZE_DEFAULT];
+ uint8_t* node;
+ HfsPHeaderRecord* header;
+ HfsPNodeDescriptor* desc = (HfsPNodeDescriptor*) node_1;
+ HfsPCatalogKey* catalog_key;
+ HfsPCatalog* catalog_data;
+ HfsPExtDescriptor* extent;
+ unsigned int leaf_node, record_number;
+ unsigned int i, j, size, bsize;
+ uint32_t jib = priv_data->jib_start_block,
+ jl = priv_data->jl_start_block;
+
+ if (!priv_data->catalog_file->sect_nb) {
+ ped_exception_throw (
+ PED_EXCEPTION_INFORMATION,
+ PED_EXCEPTION_OK,
+ _("This HFS+ volume has no catalog file. "
+ "This is very unusual!"));
+ return 1;
+ }
+
+ /* Search the extent starting at *ptr_block in the catalog file */
+ if (!hfsplus_file_read_sector (priv_data->catalog_file, node_1, 0))
+ return 0;
+ header = (HfsPHeaderRecord*) (node_1 + HFS_FIRST_REC);
+ leaf_node = PED_BE32_TO_CPU (header->first_leaf_node);
+ bsize = PED_BE16_TO_CPU (header->node_size);
+ size = bsize / PED_SECTOR_SIZE_DEFAULT;
+ PED_ASSERT(size < 256, return 0);
+
+ node = (uint8_t*) ped_malloc(bsize);
+ if (!node) return 0;
+ desc = (HfsPNodeDescriptor*) node;
+
+ for (; leaf_node; leaf_node = PED_BE32_TO_CPU (desc->next)) {
+ if (!hfsplus_file_read (priv_data->catalog_file, node,
+ (PedSector) leaf_node * size, size)) {
+ ped_free (node);
+ return 0;
+ }
+ record_number = PED_BE16_TO_CPU (desc->rec_nb);
+ for (i = 1; i <= record_number; i++) {
+ unsigned int skip;
+ uint8_t where;
+
+ catalog_key = (HfsPCatalogKey*)
+ ( node + PED_BE16_TO_CPU (*((uint16_t *)
+ (node+(bsize - 2*i)))) );
+ skip = ( 2 + PED_BE16_TO_CPU (catalog_key->key_length)
+ + 1) & ~1;
+ catalog_data = (HfsPCatalog*)
+ (((uint8_t*)catalog_key) + skip);
+ /* check for obvious error in FS */
+ if (((uint8_t*)catalog_key - node < HFS_FIRST_REC)
+ || ((uint8_t*)catalog_data - node
+ >= (signed) bsize
+ - 2 * (signed)(record_number+1))) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("The file system contains errors."));
+ ped_free (node);
+ return 0;
+ }
+
+ if (PED_BE16_TO_CPU(catalog_data->type)!=HFS_CAT_FILE)
+ continue;
+
+ extent = catalog_data->sel.file.data_fork.extents;
+ for (j = 0; j < HFSP_EXT_NB; ++j) {
+ if (!extent[j].block_count) break;
+ where = CR_BTREE_CAT;
+ if ( PED_BE32_TO_CPU(extent[j].start_block)
+ == jib ) {
+ jib = 0;
+ where = CR_BTREE_CAT_JIB;
+ } else
+ if ( PED_BE32_TO_CPU(extent[j].start_block)
+ == jl ) {
+ jl = 0;
+ where = CR_BTREE_CAT_JL;
+ }
+ if (!hfsc_cache_add_extent(
+ cache,
+ PED_BE32_TO_CPU(extent[j].start_block),
+ PED_BE32_TO_CPU(extent[j].block_count),
+ leaf_node,
+ (uint8_t*)extent - node,
+ size,
+ where,
+ j )
+ ) {
+ ped_free (node);
+ return 0;
+ }
+ }
+
+ extent = catalog_data->sel.file.res_fork.extents;
+ for (j = 0; j < HFSP_EXT_NB; ++j) {
+ if (!extent[j].block_count) break;
+ if (!hfsc_cache_add_extent(
+ cache,
+ PED_BE32_TO_CPU(extent[j].start_block),
+ PED_BE32_TO_CPU(extent[j].block_count),
+ leaf_node,
+ (uint8_t*)extent - node,
+ size,
+ CR_BTREE_CAT,
+ j )
+ ) {
+ ped_free (node);
+ return 0;
+ }
+ }
+ }
+ }
+
+ ped_free (node);
+ return 1;
+}
+
+static int
+hfsplus_cache_from_extent(HfsCPrivateCache* cache, PedFileSystem* fs,
+ PedTimer* timer)
+{
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+ uint8_t node_1[PED_SECTOR_SIZE_DEFAULT];
+ uint8_t* node;
+ HfsPHeaderRecord* header;
+ HfsPNodeDescriptor* desc = (HfsPNodeDescriptor*) node_1;
+ HfsPExtentKey* extent_key;
+ HfsPExtDescriptor* extent;
+ unsigned int leaf_node, record_number;
+ unsigned int i, j, size, bsize;
+
+ if (!priv_data->extents_file->sect_nb) {
+ ped_exception_throw (
+ PED_EXCEPTION_INFORMATION,
+ PED_EXCEPTION_OK,
+ _("This HFS+ volume has no extents overflow "
+ "file. This is quite unusual!"));
+ return 1;
+ }
+
+ if (!hfsplus_file_read_sector (priv_data->extents_file, node_1, 0))
+ return 0;
+ header = ((HfsPHeaderRecord*) (node_1 + HFS_FIRST_REC));
+ leaf_node = PED_BE32_TO_CPU (header->first_leaf_node);
+ bsize = PED_BE16_TO_CPU (header->node_size);
+ size = bsize / PED_SECTOR_SIZE_DEFAULT;
+ PED_ASSERT(size < 256, return 0);
+
+ node = (uint8_t*) ped_malloc (bsize);
+ if (!node) return -1;
+ desc = (HfsPNodeDescriptor*) node;
+
+ for (; leaf_node; leaf_node = PED_BE32_TO_CPU (desc->next)) {
+ if (!hfsplus_file_read (priv_data->extents_file, node,
+ (PedSector) leaf_node * size, size)) {
+ ped_free (node);
+ return 0;
+ }
+ record_number = PED_BE16_TO_CPU (desc->rec_nb);
+ for (i = 1; i <= record_number; i++) {
+ uint8_t where;
+ extent_key = (HfsPExtentKey*)
+ (node + PED_BE16_TO_CPU(*((uint16_t *)
+ (node+(bsize - 2*i)))));
+ extent = (HfsPExtDescriptor*)
+ (((uint8_t*)extent_key) + sizeof (HfsPExtentKey));
+ /* check for obvious error in FS */
+ if (((uint8_t*)extent_key - node < HFS_FIRST_REC)
+ || ((uint8_t*)extent - node
+ >= (signed)bsize
+ - 2 * (signed)(record_number+1))) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("The file system contains errors."));
+ ped_free (node);
+ return -1;
+ }
+
+ switch (extent_key->file_ID) {
+ case PED_CPU_TO_BE32 (HFS_XTENT_ID) :
+ if (ped_exception_throw (
+ PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_IGNORE_CANCEL,
+ _("The extents overflow file should not"
+ " contain its own extents! You should "
+ "check the file system."))
+ != PED_EXCEPTION_IGNORE)
+ return 0;
+ where = CR_BTREE_EXT_EXT;
+ break;
+ case PED_CPU_TO_BE32 (HFS_CATALOG_ID) :
+ where = CR_BTREE_EXT_CAT;
+ break;
+ case PED_CPU_TO_BE32 (HFSP_ALLOC_ID) :
+ where = CR_BTREE_EXT_ALLOC;
+ break;
+ case PED_CPU_TO_BE32 (HFSP_STARTUP_ID) :
+ where = CR_BTREE_EXT_START;
+ break;
+ case PED_CPU_TO_BE32 (HFSP_ATTRIB_ID) :
+ where = CR_BTREE_EXT_ATTR;
+ break;
+ default :
+ where = CR_BTREE_EXT_0;
+ break;
+ }
+
+ for (j = 0; j < HFSP_EXT_NB; ++j) {
+ if (!extent[j].block_count) break;
+ if (!hfsc_cache_add_extent(
+ cache,
+ PED_BE32_TO_CPU(extent[j].start_block),
+ PED_BE32_TO_CPU(extent[j].block_count),
+ leaf_node,
+ (uint8_t*)extent - node,
+ size,
+ where,
+ j )
+ ) {
+ ped_free (node);
+ return 0;
+ }
+ }
+ }
+ }
+
+ ped_free (node);
+ return 1;
+}
+
+static int
+hfsplus_cache_from_attributes(HfsCPrivateCache* cache, PedFileSystem* fs,
+ PedTimer* timer)
+{
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+ uint8_t node_1[PED_SECTOR_SIZE_DEFAULT];
+ uint8_t* node;
+ HfsPHeaderRecord* header;
+ HfsPNodeDescriptor* desc = (HfsPNodeDescriptor*) node_1;
+ HfsPPrivateGenericKey* generic_key;
+ HfsPForkDataAttr* fork_ext_data;
+ HfsPExtDescriptor* extent;
+ unsigned int leaf_node, record_number;
+ unsigned int i, j, size, bsize;
+
+ /* attributes file is facultative */
+ if (!priv_data->attributes_file->sect_nb)
+ return 1;
+
+ /* Search the extent starting at *ptr_block in the catalog file */
+ if (!hfsplus_file_read_sector (priv_data->attributes_file, node_1, 0))
+ return 0;
+ header = ((HfsPHeaderRecord*) (node_1 + HFS_FIRST_REC));
+ leaf_node = PED_BE32_TO_CPU (header->first_leaf_node);
+ bsize = PED_BE16_TO_CPU (header->node_size);
+ size = bsize / PED_SECTOR_SIZE_DEFAULT;
+ PED_ASSERT(size < 256, return 0);
+
+ node = (uint8_t*) ped_malloc(bsize);
+ if (!node) return 0;
+ desc = (HfsPNodeDescriptor*) node;
+
+ for (; leaf_node; leaf_node = PED_BE32_TO_CPU (desc->next)) {
+ if (!hfsplus_file_read (priv_data->attributes_file, node,
+ (PedSector) leaf_node * size, size)) {
+ ped_free (node);
+ return 0;
+ }
+ record_number = PED_BE16_TO_CPU (desc->rec_nb);
+ for (i = 1; i <= record_number; i++) {
+ unsigned int skip;
+ generic_key = (HfsPPrivateGenericKey*)
+ (node + PED_BE16_TO_CPU(*((uint16_t *)
+ (node+(bsize - 2*i)))));
+ skip = ( 2 + PED_BE16_TO_CPU (generic_key->key_length)
+ + 1 ) & ~1;
+ fork_ext_data = (HfsPForkDataAttr*)
+ (((uint8_t*)generic_key) + skip);
+ /* check for obvious error in FS */
+ if (((uint8_t*)generic_key - node < HFS_FIRST_REC)
+ || ((uint8_t*)fork_ext_data - node
+ >= (signed) bsize
+ - 2 * (signed)(record_number+1))) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("The file system contains errors."));
+ ped_free (node);
+ return 0;
+ }
+
+ if (fork_ext_data->record_type
+ == PED_CPU_TO_BE32 ( HFSP_ATTR_FORK ) ) {
+ extent = fork_ext_data->fork_res.fork.extents;
+ for (j = 0; j < HFSP_EXT_NB; ++j) {
+ if (!extent[j].block_count) break;
+ if (!hfsc_cache_add_extent(
+ cache,
+ PED_BE32_TO_CPU (
+ extent[j].start_block ),
+ PED_BE32_TO_CPU (
+ extent[j].block_count ),
+ leaf_node,
+ (uint8_t*)extent-node,
+ size,
+ CR_BTREE_ATTR,
+ j )
+ ) {
+ ped_free(node);
+ return 0;
+ }
+ }
+ } else if (fork_ext_data->record_type
+ == PED_CPU_TO_BE32 ( HFSP_ATTR_EXTENTS ) ) {
+ extent = fork_ext_data->fork_res.extents;
+ for (j = 0; j < HFSP_EXT_NB; ++j) {
+ if (!extent[j].block_count) break;
+ if (!hfsc_cache_add_extent(
+ cache,
+ PED_BE32_TO_CPU (
+ extent[j].start_block ),
+ PED_BE32_TO_CPU (
+ extent[j].block_count ),
+ leaf_node,
+ (uint8_t*)extent-node,
+ size,
+ CR_BTREE_ATTR,
+ j )
+ ) {
+ ped_free(node);
+ return 0;
+ }
+ }
+ } else continue;
+ }
+ }
+
+ ped_free (node);
+ return 1;
+}
+
+static HfsCPrivateCache*
+hfsplus_cache_extents(PedFileSystem* fs, PedTimer* timer)
+{
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+ HfsCPrivateCache* ret;
+ unsigned int file_number, block_number;
+
+ file_number = PED_BE32_TO_CPU(priv_data->vh->file_count);
+ block_number = PED_BE32_TO_CPU(priv_data->vh->total_blocks);
+ ret = hfsc_new_cache(block_number, file_number);
+ if (!ret) return NULL;
+
+ if (!hfsplus_cache_from_vh(ret, fs, timer) ||
+ !hfsplus_cache_from_catalog(ret, fs, timer) ||
+ !hfsplus_cache_from_extent(ret, fs, timer) ||
+ !hfsplus_cache_from_attributes(ret, fs, timer)) {
+ ped_exception_throw(
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Could not cache the file system in memory."));
+ hfsc_delete_cache(ret);
+ return NULL;
+ }
+
+ return ret;
+}
+
+/* This function moves file's data to compact used and free space,
+ starting at fblock block */
+/* return 0 on error */
+int
+hfsplus_pack_free_space_from_block (PedFileSystem *fs, unsigned int fblock,
+ PedTimer* timer, unsigned int to_free)
+{
+ PedSector bytes_buff;
+ HfsPPrivateFSData* priv_data = (HfsPPrivateFSData*)
+ fs->type_specific;
+ HfsPVolumeHeader* vh = priv_data->vh;
+ HfsCPrivateCache* cache;
+ unsigned int to_fblock = fblock;
+ unsigned int start = fblock;
+ unsigned int divisor = PED_BE32_TO_CPU (vh->total_blocks)
+ + 1 - start - to_free;
+ int ret;
+
+ PED_ASSERT (!hfsp_block, return 0);
+
+ cache = hfsplus_cache_extents (fs, timer);
+ if (!cache)
+ return 0;
+
+ /* Calculate the size of the copy buffer :
+ * Takes BLOCK_MAX_BUFF HFS blocks, but if > BYTES_MAX_BUFF
+ * takes the maximum number of HFS blocks so that the buffer
+ * will remain smaller than or equal to BYTES_MAX_BUFF, with
+ * a minimum of 1 HFS block */
+ bytes_buff = PED_BE32_TO_CPU (priv_data->vh->block_size)
+ * (PedSector) BLOCK_MAX_BUFF;
+ if (bytes_buff > BYTES_MAX_BUFF) {
+ hfsp_block_count = BYTES_MAX_BUFF
+ / PED_BE32_TO_CPU (priv_data->vh->block_size);
+ if (!hfsp_block_count)
+ hfsp_block_count = 1;
+ bytes_buff = (PedSector) hfsp_block_count
+ * PED_BE32_TO_CPU (priv_data->vh->block_size);
+ } else
+ hfsp_block_count = BLOCK_MAX_BUFF;
+
+ /* If the cache code requests more space, give it to him */
+ if (bytes_buff < hfsc_cache_needed_buffer (cache))
+ bytes_buff = hfsc_cache_needed_buffer (cache);
+
+ hfsp_block = (uint8_t*) ped_malloc (bytes_buff);
+ if (!hfsp_block)
+ goto error_cache;
+
+ if (!hfsplus_read_bad_blocks (fs)) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Bad blocks list could not be loaded."));
+ goto error_alloc;
+ }
+
+ while ( fblock < ( priv_data->plus_geom->length - 2 )
+ / ( PED_BE32_TO_CPU (vh->block_size)
+ / PED_SECTOR_SIZE_DEFAULT ) ) {
+ if (TST_BLOC_OCCUPATION (priv_data->alloc_map, fblock)
+ && (!hfsplus_is_bad_block (fs, fblock))) {
+ if (!(ret = hfsplus_move_extent_starting_at (fs,
+ &fblock, &to_fblock, cache)))
+ to_fblock = ++fblock;
+ else if (ret == -1) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("An error occurred during extent "
+ "relocation."));
+ goto error_alloc;
+ }
+ } else {
+ fblock++;
+ }
+
+ ped_timer_update(timer, (float)(to_fblock - start) / divisor);
+ }
+
+ ped_free (hfsp_block); hfsp_block = NULL; hfsp_block_count = 0;
+ hfsc_delete_cache (cache);
+ return 1;
+
+error_alloc:
+ ped_free (hfsp_block); hfsp_block = NULL; hfsp_block_count = 0;
+error_cache:
+ hfsc_delete_cache (cache);
+ return 0;
+}
+
+#endif /* !DISCOVER_ONLY */
diff --git a/parted-1.8.7/libparted/fs/hfs/reloc_plus.h b/parted-1.8.7/libparted/fs/hfs/reloc_plus.h
new file mode 100644
index 0000000..07db0aa
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/hfs/reloc_plus.h
@@ -0,0 +1,37 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2004 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef _RELOC_PLUS_H
+#define _RELOC_PLUS_H
+
+#include <parted/parted.h>
+#include <parted/endian.h>
+#include <parted/debug.h>
+
+#include "hfs.h"
+
+int
+hfsplus_update_vh (PedFileSystem *fs);
+
+int
+hfsplus_pack_free_space_from_block (PedFileSystem *fs, unsigned int fblock,
+ PedTimer* timer, unsigned int to_free);
+
+
+#endif /* _RELOC_PLUS_H */
diff --git a/parted-1.8.7/libparted/fs/jfs/Makefile.am b/parted-1.8.7/libparted/fs/jfs/Makefile.am
new file mode 100644
index 0000000..0218667
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/jfs/Makefile.am
@@ -0,0 +1,8 @@
+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
\ No newline at end of file
diff --git a/parted-1.8.7/libparted/fs/jfs/Makefile.in b/parted-1.8.7/libparted/fs/jfs/Makefile.in
new file mode 100644
index 0000000..c7e2afd
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/jfs/Makefile.in
@@ -0,0 +1,624 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libjfs_la_LIBADD =
+am_libjfs_la_OBJECTS = jfs.lo
+libjfs_la_OBJECTS = $(am_libjfs_la_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)/lib@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libjfs_la_SOURCES)
+DIST_SOURCES = $(libjfs_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/jfs/Makefile'; \
+ 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
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libjfs.la: $(libjfs_la_OBJECTS) $(libjfs_la_DEPENDENCIES)
+ $(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@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+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
+
+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 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/parted-1.8.7/libparted/fs/jfs/jfs.c b/parted-1.8.7/libparted/fs/jfs/jfs.c
new file mode 100644
index 0000000..259158c
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/jfs/jfs.c
@@ -0,0 +1,110 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2001 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#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;
+
+ 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;
+ }
+}
+
+#ifndef DISCOVER_ONLY
+static int
+jfs_clobber (PedGeometry* geom)
+{
+ char buf[512];
+
+ memset (buf, 0, 512);
+ return ped_geometry_write (geom, buf, JFS_SUPER_SECTOR, 1);
+}
+#endif /* !DISCOVER_ONLY */
+
+static PedFileSystemOps jfs_ops = {
+ probe: jfs_probe,
+#ifndef DISCOVER_ONLY
+ clobber: jfs_clobber,
+#else
+ clobber: NULL,
+#endif
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ copy: NULL,
+ resize: NULL,
+ get_create_constraint: NULL,
+ get_resize_constraint: NULL,
+ get_copy_constraint: NULL
+};
+
+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/parted-1.8.7/libparted/fs/jfs/jfs_superblock.h b/parted-1.8.7/libparted/fs/jfs/jfs_superblock.h
new file mode 100644
index 0000000..c61dc24
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/jfs/jfs_superblock.h
@@ -0,0 +1,145 @@
+/*
+ * 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ */
+#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/parted-1.8.7/libparted/fs/jfs/jfs_types.h b/parted-1.8.7/libparted/fs/jfs/jfs_types.h
new file mode 100644
index 0000000..7177f2a
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/jfs/jfs_types.h
@@ -0,0 +1,528 @@
+/*
+ * 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+ */
+
+#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/parted-1.8.7/libparted/fs/linux_swap/Makefile.am b/parted-1.8.7/libparted/fs/linux_swap/Makefile.am
new file mode 100644
index 0000000..a366fc6
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/linux_swap/Makefile.am
@@ -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/parted-1.8.7/libparted/fs/linux_swap/Makefile.in b/parted-1.8.7/libparted/fs/linux_swap/Makefile.in
new file mode 100644
index 0000000..41aac73
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/linux_swap/Makefile.in
@@ -0,0 +1,624 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+liblinuxswap_la_LIBADD =
+am_liblinuxswap_la_OBJECTS = linux_swap.lo
+liblinuxswap_la_OBJECTS = $(am_liblinuxswap_la_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)/lib@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(liblinuxswap_la_SOURCES)
+DIST_SOURCES = $(liblinuxswap_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/linux_swap/Makefile'; \
+ 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
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+liblinuxswap.la: $(liblinuxswap_la_OBJECTS) $(liblinuxswap_la_DEPENDENCIES)
+ $(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@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+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
+
+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 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/parted-1.8.7/libparted/fs/linux_swap/linux_swap.c b/parted-1.8.7/libparted/fs/linux_swap/linux_swap.c
new file mode 100644
index 0000000..a8e95fd
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/linux_swap/linux_swap.c
@@ -0,0 +1,743 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 1999, 2000, 2002, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+/* 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>
+
+#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_v1_type;
+static PedFileSystemType _swap_v2_type;
+static PedFileSystemType _swap_swsusp_type;
+
+static PedFileSystem* _swap_v1_open (PedGeometry* geom);
+static PedFileSystem* _swap_v2_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;
+
+ switch (kind) {
+ /* Check for old style swap partitions. */
+ case 0:
+ fs = _swap_v1_open(geom);
+ break;
+ /* Check for new style swap partitions. */
+ case 1:
+ fs = _swap_v2_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;
+}
+
+#ifndef DISCOVER_ONLY
+static int
+_generic_swap_clobber (PedGeometry* geom, int kind)
+{
+ PedFileSystem* fs;
+ char buf[512];
+
+ switch (kind) {
+ /* Check for old style swap partitions. */
+ case 0:
+ fs = _swap_v1_open(geom);
+ break;
+ /* Check for new style swap partitions. */
+ case 1:
+ fs = _swap_v2_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)
+ return 1;
+
+ memset (buf, 0, 512);
+ if (!ped_geometry_write (geom, buf, getpagesize() / 512 - 1, 1))
+ goto error_close_fs;
+
+ swap_close (fs);
+ return 1;
+
+error_close_fs:
+ swap_close (fs);
+error:
+ return 0;
+}
+#endif /* !DISCOVER_ONLY */
+
+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) {
+ memset (fs_info->header, 0, getpagesize());
+ 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_v2_type;
+ return fs;
+
+error_free_buffer:
+ ped_free (fs_info->buffer);
+error_free_header:
+ ped_free (fs_info->header);
+error_free_type_specific:
+ ped_free (fs->type_specific);
+error_free_fs:
+ ped_free (fs);
+error:
+ return NULL;
+}
+
+static void
+swap_free (PedFileSystem* fs)
+{
+ SwapSpecific* fs_info = SWAP_SPECIFIC (fs);
+
+ ped_free (fs_info->buffer);
+ ped_free (fs_info->header);
+ ped_free (fs->type_specific);
+
+ ped_geometry_destroy (fs->geom);
+ ped_free (fs);
+}
+
+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))
+ 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_v2_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;
+}
+
+#ifndef DISCOVER_ONLY
+static int
+swap_new_find_bad_page (PedFileSystem* fs, unsigned int page)
+{
+ SwapSpecific* fs_info = SWAP_SPECIFIC (fs);
+ unsigned int i;
+
+ for (i=0; i < fs_info->header->new.nr_badpages; i++) {
+ if (fs_info->header->new.badpages [i] == page)
+ return i;
+ }
+
+ return 0;
+}
+
+static int
+swap_new_remove_bad_page (PedFileSystem* fs, unsigned int page)
+{
+ SwapSpecific* fs_info = SWAP_SPECIFIC (fs);
+ unsigned int pos;
+
+ pos = swap_new_find_bad_page (fs, page);
+ if (!pos)
+ return 0;
+
+ for (; pos < fs_info->header->new.nr_badpages; pos++) {
+ fs_info->header->new.badpages [pos - 1]
+ = fs_info->header->new.badpages [pos];
+ }
+
+ return 1;
+}
+
+static int
+swap_mark_page (PedFileSystem* fs, unsigned int page, int ok)
+{
+ SwapSpecific* fs_info = SWAP_SPECIFIC (fs);
+ char* ptr;
+ unsigned int mask;
+
+ if (fs_info->version == 0) {
+ ptr = &fs_info->header->old.page_map [page/8];
+ mask = 1 << (page%8);
+ *ptr = (*ptr & ~mask) + ok * mask;
+ } else {
+ if (ok) {
+ if (swap_new_remove_bad_page (fs, page))
+ fs_info->header->new.nr_badpages--;
+ } else {
+ if (swap_new_find_bad_page (fs, page))
+ return 1;
+
+ if (fs_info->header->new.nr_badpages
+ > fs_info->max_bad_pages) {
+ ped_exception_throw (PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Too many bad pages."));
+ return 0;
+ }
+
+ fs_info->header->new.badpages
+ [fs_info->header->new.nr_badpages] = page;
+ fs_info->header->new.nr_badpages++;
+ }
+ }
+
+ return 1;
+}
+
+static void
+swap_clear_pages (PedFileSystem* fs)
+{
+ SwapSpecific* fs_info = SWAP_SPECIFIC (fs);
+ unsigned int i;
+
+ for (i = 1; i < fs_info->page_count; i++) {
+ swap_mark_page (fs, i, 1);
+ }
+
+ if (fs_info->version == 0) {
+ for (; i < 1024; i++) {
+ swap_mark_page (fs, i, 0);
+ }
+ }
+}
+
+static int
+swap_check_pages (PedFileSystem* fs, PedTimer* timer)
+{
+ SwapSpecific* fs_info = SWAP_SPECIFIC (fs);
+ PedSector result;
+ int first_page = 1;
+ int stop_page = 0;
+ int last_page = fs_info->page_count - 1;
+ PedTimer* nested_timer;
+
+ ped_timer_reset (timer);
+ ped_timer_set_state_name (timer, _("checking for bad blocks"));
+
+ swap_clear_pages (fs);
+ while (first_page <= last_page) {
+ nested_timer = ped_timer_new_nested (
+ timer,
+ 1.0 * (last_page - first_page) / last_page);
+ result = ped_geometry_check (
+ fs->geom,
+ fs_info->buffer,
+ fs_info->buffer_size / 512,
+ first_page * fs_info->page_sectors,
+ fs_info->page_sectors,
+ (last_page - first_page + 1)
+ * fs_info->page_sectors,
+ nested_timer);
+ ped_timer_destroy_nested (nested_timer);
+ if (!result)
+ return 1;
+ stop_page = result / fs_info->page_sectors;
+ if (!swap_mark_page (fs, stop_page, 0))
+ return 0;
+ first_page = stop_page + 1;
+ }
+ return 1;
+}
+
+static int
+swap_write (PedFileSystem* fs)
+{
+ SwapSpecific* fs_info = SWAP_SPECIFIC (fs);
+ char* sig = ((char*) fs_info->header) + getpagesize() - 10;
+
+ if (fs_info->version == 0) {
+ memcpy (sig, "SWAP-SPACE", 10);
+ } else {
+ fs_info->header->new.version = 1;
+ fs_info->header->new.last_page = fs_info->page_count - 1;
+ fs_info->header->new.nr_badpages = 0;
+ memcpy (sig, "SWAPSPACE2", 10);
+ }
+
+ return ped_geometry_write (fs->geom, fs_info->header, 0,
+ fs_info->page_sectors);
+}
+
+static PedFileSystem*
+swap_create (PedGeometry* geom, PedTimer* timer)
+{
+ PedFileSystem* fs;
+
+ fs = swap_alloc (geom);
+ if (!fs)
+ goto error;
+ swap_init (fs, 1);
+ if (!swap_write (fs))
+ goto error_free_fs;
+ return fs;
+
+error_free_fs:
+ swap_free (fs);
+error:
+ return NULL;
+}
+
+static int
+swap_resize (PedFileSystem* fs, PedGeometry* geom, PedTimer* timer)
+{
+ PedGeometry* old_geom = fs->geom;
+
+ fs->geom = ped_geometry_duplicate (geom);
+ swap_init (fs, old_geom->start != geom->start);
+ if (!swap_write (fs))
+ goto error;
+ ped_geometry_destroy (old_geom);
+ return 1;
+
+error:
+ ped_geometry_destroy (fs->geom);
+ fs->geom = old_geom;
+ return 0;
+}
+
+static PedFileSystem*
+swap_copy (const PedFileSystem* fs, PedGeometry* geom, PedTimer* timer)
+{
+ return ped_file_system_create (geom, &_swap_v2_type, timer);
+}
+
+static int
+swap_check (PedFileSystem* fs, PedTimer* timer)
+{
+ return swap_check_pages (fs, timer)
+ && swap_write (fs);
+}
+
+static PedConstraint*
+swap_get_create_constraint (const PedDevice* dev)
+{
+ PedGeometry full_dev;
+
+ if (!ped_geometry_init (&full_dev, dev, 0, dev->length - 1))
+ return NULL;
+
+ return ped_constraint_new (ped_alignment_any, ped_alignment_any,
+ &full_dev, &full_dev,
+ getpagesize() / 512, dev->length);
+}
+
+static PedConstraint*
+swap_get_resize_constraint (const PedFileSystem* fs)
+{
+ return swap_get_create_constraint (fs->geom->dev);
+}
+
+static PedConstraint*
+swap_get_copy_constraint (const PedFileSystem* fs, const PedDevice* dev)
+{
+ return swap_get_create_constraint (dev);
+}
+#endif /* !DISCOVER_ONLY */
+
+static PedGeometry*
+_swap_v1_probe (PedGeometry* geom) {
+ return _generic_swap_probe (geom, 0);
+}
+
+static PedGeometry*
+_swap_v2_probe (PedGeometry* geom) {
+ return _generic_swap_probe (geom, 1);
+}
+
+static PedGeometry*
+_swap_swsusp_probe (PedGeometry* geom) {
+ return _generic_swap_probe (geom, -1);
+}
+
+static int
+_swap_v1_clobber (PedGeometry* geom) {
+ return _generic_swap_clobber (geom, 0);
+}
+
+static int
+_swap_v2_clobber (PedGeometry* geom) {
+ return _generic_swap_clobber (geom, 1);
+}
+
+static int
+_swap_swsusp_clobber (PedGeometry* geom) {
+ return _generic_swap_clobber (geom, -1);
+}
+
+static PedFileSystemOps _swap_v1_ops = {
+ probe: _swap_v1_probe,
+#ifndef DISCOVER_ONLY
+ clobber: _swap_v1_clobber,
+ open: _swap_v1_open,
+ create: swap_create,
+ close: swap_close,
+ check: swap_check,
+ copy: swap_copy,
+ resize: swap_resize,
+ get_create_constraint: swap_get_create_constraint,
+ get_resize_constraint: swap_get_resize_constraint,
+ get_copy_constraint: swap_get_copy_constraint
+#else
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ copy: NULL,
+ resize: NULL,
+ get_create_constraint: NULL,
+ get_resize_constraint: NULL,
+ get_copy_constraint: NULL
+#endif /* !DISCOVER_ONLY */
+};
+
+static PedFileSystemOps _swap_v2_ops = {
+ probe: _swap_v2_probe,
+#ifndef DISCOVER_ONLY
+ clobber: _swap_v2_clobber,
+ open: _swap_v2_open,
+ create: swap_create,
+ close: swap_close,
+ check: swap_check,
+ copy: swap_copy,
+ resize: swap_resize,
+ get_create_constraint: swap_get_create_constraint,
+ get_resize_constraint: swap_get_resize_constraint,
+ get_copy_constraint: swap_get_copy_constraint
+#else
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ copy: NULL,
+ resize: NULL,
+ get_create_constraint: NULL,
+ get_resize_constraint: NULL,
+ get_copy_constraint: NULL
+#endif /* !DISCOVER_ONLY */
+};
+
+static PedFileSystemOps _swap_swsusp_ops = {
+ probe: _swap_swsusp_probe,
+#ifndef DISCOVER_ONLY
+ clobber: _swap_swsusp_clobber,
+ open: _swap_swsusp_open,
+ create: swap_create,
+ close: swap_close,
+ check: swap_check,
+ copy: swap_copy,
+ resize: swap_resize,
+ get_create_constraint: swap_get_create_constraint,
+ get_resize_constraint: swap_get_resize_constraint,
+ get_copy_constraint: swap_get_copy_constraint
+#else
+ clobber: NULL,
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ copy: NULL,
+ resize: NULL,
+ get_create_constraint: NULL,
+ get_resize_constraint: NULL,
+ get_copy_constraint: NULL
+#endif /* !DISCOVER_ONLY */
+};
+
+static PedFileSystemType _swap_v1_type = {
+ next: NULL,
+ ops: &_swap_v1_ops,
+ name: "linux-swap(old)",
+ block_sizes: LINUXSWAP_BLOCK_SIZES
+};
+
+static PedFileSystemType _swap_v2_type = {
+ next: NULL,
+ ops: &_swap_v2_ops,
+ name: "linux-swap(new)",
+ 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_v1_type);
+ ped_file_system_type_register (&_swap_v2_type);
+ ped_file_system_type_register (&_swap_swsusp_type);
+}
+
+void
+ped_file_system_linux_swap_done ()
+{
+ ped_file_system_type_unregister (&_swap_v1_type);
+ ped_file_system_type_unregister (&_swap_v2_type);
+ ped_file_system_type_unregister (&_swap_swsusp_type);
+}
diff --git a/parted-1.8.7/libparted/fs/ntfs/Makefile.am b/parted-1.8.7/libparted/fs/ntfs/Makefile.am
new file mode 100644
index 0000000..30fca41
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/ntfs/Makefile.am
@@ -0,0 +1,8 @@
+partedincludedir = -I$(top_srcdir)/include
+
+noinst_LTLIBRARIES = libntfs.la
+libntfs_la_SOURCES = ntfs.c
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/parted-1.8.7/libparted/fs/ntfs/Makefile.in b/parted-1.8.7/libparted/fs/ntfs/Makefile.in
new file mode 100644
index 0000000..4183403
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/ntfs/Makefile.in
@@ -0,0 +1,624 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libntfs_la_LIBADD =
+am_libntfs_la_OBJECTS = ntfs.lo
+libntfs_la_OBJECTS = $(am_libntfs_la_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)/lib@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libntfs_la_SOURCES)
+DIST_SOURCES = $(libntfs_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/ntfs/Makefile'; \
+ 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
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libntfs.la: $(libntfs_la_OBJECTS) $(libntfs_la_DEPENDENCIES)
+ $(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@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+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
+
+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 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/parted-1.8.7/libparted/fs/ntfs/ntfs.c b/parted-1.8.7/libparted/fs/ntfs/ntfs.c
new file mode 100644
index 0000000..95de441
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/ntfs/ntfs.c
@@ -0,0 +1,102 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#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;
+}
+
+#ifndef DISCOVER_ONLY
+static int
+ntfs_clobber (PedGeometry* geom)
+{
+ char buf[512];
+
+ memset (buf, 0, 512);
+ return ped_geometry_write (geom, buf, 0, 1);
+}
+#endif /* !DISCOVER_ONLY */
+
+static PedFileSystemOps ntfs_ops = {
+ probe: ntfs_probe,
+#ifndef DISCOVER_ONLY
+ clobber: ntfs_clobber,
+#else
+ clobber: NULL,
+#endif
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ copy: NULL,
+ resize: NULL,
+ get_create_constraint: NULL,
+ get_resize_constraint: NULL,
+ get_copy_constraint: NULL
+};
+
+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/parted-1.8.7/libparted/fs/reiserfs/Makefile.am b/parted-1.8.7/libparted/fs/reiserfs/Makefile.am
new file mode 100644
index 0000000..ce65ab4
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/reiserfs/Makefile.am
@@ -0,0 +1,9 @@
+partedincludedir = -I$(top_srcdir)/include
+
+noinst_LTLIBRARIES = libreiserfs.la
+
+libreiserfs_la_SOURCES = reiserfs.c reiserfs.h geom_dal.c geom_dal.h
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/parted-1.8.7/libparted/fs/reiserfs/Makefile.in b/parted-1.8.7/libparted/fs/reiserfs/Makefile.in
new file mode 100644
index 0000000..e842320
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/reiserfs/Makefile.in
@@ -0,0 +1,625 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libreiserfs_la_LIBADD =
+am_libreiserfs_la_OBJECTS = reiserfs.lo geom_dal.lo
+libreiserfs_la_OBJECTS = $(am_libreiserfs_la_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)/lib@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libreiserfs_la_SOURCES)
+DIST_SOURCES = $(libreiserfs_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+partedincludedir = -I$(top_srcdir)/include
+noinst_LTLIBRARIES = libreiserfs.la
+libreiserfs_la_SOURCES = reiserfs.c reiserfs.h geom_dal.c geom_dal.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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/reiserfs/Makefile'; \
+ 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
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libreiserfs.la: $(libreiserfs_la_OBJECTS) $(libreiserfs_la_DEPENDENCIES)
+ $(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)/geom_dal.Plo@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/reiserfs.Plo@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+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
+
+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 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/parted-1.8.7/libparted/fs/reiserfs/geom_dal.c b/parted-1.8.7/libparted/fs/reiserfs/geom_dal.c
new file mode 100644
index 0000000..30acd46
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/reiserfs/geom_dal.c
@@ -0,0 +1,139 @@
+/*
+ geom_dal.c -- parted device abstraction layer
+ Copyright (C) 2001, 2002 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#include <config.h>
+
+#if (DYNAMIC_LOADING || HAVE_LIBREISERFS) && !DISCOVER_ONLY
+
+#include "geom_dal.h"
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+
+static blk_t __len(dal_t *dal) {
+ PED_ASSERT(dal != NULL, return 0);
+
+ return ((PedGeometry *)dal->dev)->length /
+ (dal->block_size / PED_SECTOR_SIZE_DEFAULT);
+}
+
+static int __read(dal_t *dal, void *buff, blk_t block, blk_t count) {
+ blk_t k;
+ PedSector block_pos;
+ PedSector block_count;
+
+ PED_ASSERT(dal != NULL, return 0);
+
+ k = dal->block_size / PED_SECTOR_SIZE_DEFAULT;
+ block_pos = (PedSector)(block * k);
+ block_count = (PedSector)(count * k);
+
+ return ped_geometry_read((PedGeometry *)dal->dev, buff, block_pos, block_count);
+}
+
+static int __write(dal_t *dal, void *buff, blk_t block, blk_t count) {
+ blk_t k;
+ PedSector block_pos;
+ PedSector block_count;
+
+ PED_ASSERT(dal != NULL, return 0);
+
+ k = dal->block_size / PED_SECTOR_SIZE_DEFAULT;
+ block_pos = (PedSector)(block * k);
+ block_count = (PedSector)(count * k);
+
+ return ped_geometry_write((PedGeometry *)dal->dev, buff, block_pos,
+ block_count);
+}
+
+static int __sync(dal_t *dal) {
+ PED_ASSERT(dal != NULL, return 0);
+ return ped_geometry_sync((PedGeometry *)dal->dev);
+}
+
+static int __flags(dal_t *dal) {
+ PED_ASSERT(dal != NULL, return 0);
+ return dal->flags;
+}
+
+static int __equals(dal_t *dal1, dal_t *dal2) {
+ PED_ASSERT(dal1 != NULL, return 0);
+ PED_ASSERT(dal2 != NULL, return 0);
+
+ return ped_geometry_test_equal((PedGeometry *)dal1->dev,
+ (PedGeometry *)dal2->dev);
+}
+
+static int __stat(dal_t *dal, struct stat *st) {
+
+ PED_ASSERT(dal != NULL, return 0);
+ PED_ASSERT(st != NULL, return 0);
+
+ if (stat(((PedGeometry *)dal->dev)->dev->path, st))
+ return 0;
+
+ return 1;
+}
+
+static dev_t __dev(dal_t *dal) {
+ struct stat st;
+
+ if (!__stat(dal, &st))
+ return (dev_t)0;
+
+ return st.st_dev;
+}
+
+static struct dal_ops ops = {
+ __len, __read, __write, __sync,
+ __flags, __equals, __stat, __dev
+};
+
+dal_t *geom_dal_create(PedGeometry *geom, size_t block_size, int flags) {
+ dal_t *dal;
+
+ if (!geom)
+ return NULL;
+
+ if (!(dal = ped_malloc(sizeof(dal_t))))
+ return NULL;
+
+ dal->ops = &ops;
+ dal->dev = geom;
+ dal->block_size = block_size;
+ dal->flags = flags;
+ dal->len = 0;
+
+ return dal;
+}
+
+int geom_dal_reopen(dal_t *dal, int flags) {
+
+ if (!dal) return 0;
+ dal->flags = flags;
+
+ return 1;
+}
+
+void geom_dal_free(dal_t *dal) {
+ PED_ASSERT(dal != NULL, return);
+ ped_free(dal);
+}
+
+#endif
diff --git a/parted-1.8.7/libparted/fs/reiserfs/geom_dal.h b/parted-1.8.7/libparted/fs/reiserfs/geom_dal.h
new file mode 100644
index 0000000..99d0a06
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/reiserfs/geom_dal.h
@@ -0,0 +1,63 @@
+/*
+ geom_dal.h -- parted device abstraction layer
+ Copyright (C) 2001, 2002 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef GEOM_DAL_H
+#define GEOM_DAL_H
+
+#include <config.h>
+
+#include <parted/parted.h>
+
+#if DYNAMIC_LOADING || !DISCOVER_ONLY
+
+#include <sys/stat.h>
+
+typedef unsigned long blk_t;
+
+struct dal_ops;
+
+struct _dal {
+ struct dal_ops *ops;
+ const void *dev;
+ size_t block_size;
+ int flags;
+ void *data;
+ blk_t len;
+};
+
+typedef struct _dal dal_t;
+
+struct dal_ops {
+ blk_t (*len)(dal_t *);
+ int (*read)(dal_t *, void *, blk_t, blk_t);
+ int (*write)(dal_t *, void *, blk_t, blk_t);
+ int (*sync)(dal_t *);
+ int (*flags)(dal_t *);
+ int (*equals)(dal_t *, dal_t *);
+ int (*stat)(dal_t *, struct stat *);
+ dev_t (*dev)(dal_t *);
+};
+
+extern dal_t *geom_dal_create(PedGeometry *geom, size_t block_size, int flags);
+extern int geom_dal_reopen(dal_t *dal, int flags);
+extern void geom_dal_free(dal_t *dal);
+
+#endif
+
+#endif
diff --git a/parted-1.8.7/libparted/fs/reiserfs/reiserfs.c b/parted-1.8.7/libparted/fs/reiserfs/reiserfs.c
new file mode 100644
index 0000000..90faa14
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/reiserfs/reiserfs.c
@@ -0,0 +1,867 @@
+/*
+ reiserfs.c -- libparted / libreiserfs glue
+ Copyright (C) 2001, 2002, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+
+ 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>
+
+#if (HAVE_LIBREISERFS || DYNAMIC_LOADING) && !DISCOVER_ONLY
+# define REISER_FULL_SUPPORT
+#endif
+
+#include <uuid/uuid.h>
+#include <fcntl.h>
+#include <errno.h>
+
+#ifdef DYNAMIC_LOADING
+# include <dlfcn.h>
+#endif
+
+#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"
+#include "geom_dal.h"
+
+#define REISERFS_BLOCK_SIZES ((int[2]){512, 0})
+
+static PedSector reiserfs_super_offset[] = { 128, 16, -1 };
+static PedFileSystemType* reiserfs_type;
+
+#ifdef DYNAMIC_LOADING
+# define FPTR *
+# define FCLASS static
+#else
+# define FPTR
+# define FCLASS extern
+#endif
+
+#ifdef DYNAMIC_LOADING
+
+static int libreiserfs_present;
+
+static void *libdal_handle;
+static void *libreiserfs_handle;
+
+#endif /* DYNAMIC_LOADING */
+
+#ifdef REISER_FULL_SUPPORT
+
+FCLASS blk_t (FPTR reiserfs_fs_probe) (dal_t *);
+
+FCLASS int (FPTR libreiserfs_exception_type) (reiserfs_exception_t *);
+FCLASS int (FPTR libreiserfs_exception_option) (reiserfs_exception_t *);
+FCLASS char *(FPTR libreiserfs_exception_message) (reiserfs_exception_t *);
+FCLASS void (FPTR libreiserfs_exception_set_handler)
+ (int(FPTR)(reiserfs_exception_t *));
+
+FCLASS void (FPTR dal_realize) (dal_t *);
+FCLASS size_t (FPTR dal_block_size) (dal_t *);
+FCLASS blk_t (FPTR dal_len) (dal_t *);
+FCLASS int (FPTR dal_flags) (dal_t *);
+
+FCLASS reiserfs_fs_t* (FPTR reiserfs_fs_open) (dal_t *, dal_t *);
+FCLASS reiserfs_fs_t* (FPTR reiserfs_fs_create) (dal_t *, dal_t *,
+ blk_t, blk_t, blk_t, size_t,
+ int, int, const char *,
+ const char *, blk_t,
+ reiserfs_gauge_t *);
+
+FCLASS int (FPTR reiserfs_fs_resize) (reiserfs_fs_t *, blk_t, reiserfs_gauge_t *);
+#ifdef HAVE_REISERFS_FS_CHECK
+FCLASS int (FPTR reiserfs_fs_check) (reiserfs_fs_t *, reiserfs_gauge_t *);
+#endif
+
+FCLASS reiserfs_fs_t *(FPTR reiserfs_fs_copy) (reiserfs_fs_t *, dal_t *,
+ reiserfs_gauge_t *);
+
+FCLASS int (FPTR reiserfs_fs_clobber) (dal_t *);
+FCLASS void (FPTR reiserfs_fs_close) (reiserfs_fs_t *);
+
+FCLASS int (FPTR reiserfs_fs_is_resizeable) (reiserfs_fs_t *);
+FCLASS int (FPTR reiserfs_fs_is_consistent) (reiserfs_fs_t *);
+
+FCLASS blk_t (FPTR reiserfs_fs_min_size) (reiserfs_fs_t *);
+FCLASS blk_t (FPTR reiserfs_fs_block_size) (reiserfs_fs_t *);
+FCLASS dal_t* (FPTR reiserfs_fs_host_dal) (reiserfs_fs_t *);
+
+FCLASS blk_t (FPTR reiserfs_fs_bitmap_used) (reiserfs_fs_t *);
+FCLASS int (FPTR reiserfs_fs_bitmap_check) (reiserfs_fs_t *);
+
+FCLASS reiserfs_gauge_t *(FPTR libreiserfs_gauge_create) (
+ char *, reiserfs_gauge_handler_t, void *);
+
+FCLASS void (FPTR libreiserfs_gauge_free) (reiserfs_gauge_t *);
+
+static void gauge_handler(const char *name, unsigned int value, void *data,
+ int determined, int update_header,
+ int update_footer)
+{
+ PedTimer *timer = (PedTimer *) data;
+ ped_timer_set_state_name(timer, name);
+ ped_timer_update(timer, 1.0 * value / 100);
+}
+
+static PedExceptionOption
+exopt_libreiserfs_to_parted(reiserfs_exception_option_t option)
+{
+ switch (option) {
+ case EXCEPTION_UNHANDLED:
+ return PED_EXCEPTION_UNHANDLED;
+ case EXCEPTION_FIX:
+ return PED_EXCEPTION_FIX;
+ case EXCEPTION_YES:
+ return PED_EXCEPTION_YES;
+ case EXCEPTION_NO:
+ return PED_EXCEPTION_NO;
+ case EXCEPTION_OK:
+ return PED_EXCEPTION_OK;
+ case EXCEPTION_RETRY:
+ return PED_EXCEPTION_RETRY;
+ case EXCEPTION_IGNORE:
+ return PED_EXCEPTION_IGNORE;
+ case EXCEPTION_CANCEL:
+ return PED_EXCEPTION_CANCEL;
+
+ default:
+ return PED_EXCEPTION_UNHANDLED;
+ }
+}
+
+static PedExceptionType
+extype_libreiserfs_to_parted(reiserfs_exception_type_t type)
+{
+ switch (type) {
+ case EXCEPTION_INFORMATION:
+ return PED_EXCEPTION_INFORMATION;
+ case EXCEPTION_WARNING:
+ return PED_EXCEPTION_WARNING;
+ case EXCEPTION_ERROR:
+ return PED_EXCEPTION_ERROR;
+ case EXCEPTION_FATAL:
+ return PED_EXCEPTION_FATAL;
+ case EXCEPTION_BUG:
+ return PED_EXCEPTION_BUG;
+ case EXCEPTION_NO_FEATURE:
+ return PED_EXCEPTION_NO_FEATURE;
+
+ default:
+ return PED_EXCEPTION_NO_FEATURE;
+ }
+}
+
+static int exception_handler(reiserfs_exception_t *exception)
+{
+ int ex_type = libreiserfs_exception_type(exception);
+ int ex_option = libreiserfs_exception_option(exception);
+ char *ex_message = libreiserfs_exception_message(exception);
+
+ return ped_exception_throw (extype_libreiserfs_to_parted (ex_type),
+ exopt_libreiserfs_to_parted (ex_option),
+ ex_message);
+}
+#endif /* REISER_FULL_SUPPORT */
+
+static PedGeometry *reiserfs_probe(PedGeometry *geom)
+{
+ int i;
+ reiserfs_super_block_t sb;
+
+ PED_ASSERT(geom != NULL, return 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;
+}
+
+#ifndef DISCOVER_ONLY
+static int reiserfs_clobber(PedGeometry *geom)
+{
+ int i;
+ char buf[512];
+
+ PED_ASSERT(geom != NULL, return 0);
+
+ memset(buf, 0, 512);
+ for (i = 0; reiserfs_super_offset[i] != -1; i++) {
+ if (reiserfs_super_offset[i] >= geom->length)
+ continue;
+ if (!ped_geometry_write
+ (geom, buf, reiserfs_super_offset[i], 1))
+ return 0;
+ }
+ return 1;
+}
+#endif /* !DISCOVER_ONLY */
+
+#ifdef REISER_FULL_SUPPORT
+
+static PedFileSystem *reiserfs_open(PedGeometry *geom)
+{
+ PedFileSystem *fs;
+ PedGeometry *fs_geom;
+ dal_t *dal;
+ reiserfs_fs_t *fs_info;
+
+ PED_ASSERT(geom != NULL, return NULL);
+
+ if (!(fs_geom = ped_geometry_duplicate(geom)))
+ goto error;
+
+ if (! (dal = geom_dal_create(fs_geom, DEFAULT_BLOCK_SIZE, O_RDONLY)))
+ goto error_fs_geom_free;
+
+ /*
+ We are passing NULL as DAL for journal. Therefore we let libreiserfs know,
+ that journal not available and parted will be working fine for reiserfs
+ with relocated journal too.
+ */
+ if (!(fs = (PedFileSystem *) ped_malloc(sizeof(PedFileSystem))))
+ goto error_free_dal;
+
+ if (!(fs_info = reiserfs_fs_open(dal, NULL)))
+ goto error_free_fs;
+
+ fs->type = reiserfs_type;
+ fs->geom = fs_geom;
+ fs->type_specific = (void *) fs_info;
+
+ return fs;
+
+error_free_fs:
+ ped_free(fs);
+error_free_dal:
+ geom_dal_free(dal);
+error_fs_geom_free:
+ ped_geometry_destroy(fs_geom);
+error:
+ return NULL;
+}
+
+static PedFileSystem *reiserfs_create(PedGeometry *geom, PedTimer *timer)
+{
+ dal_t *dal;
+ uuid_t uuid;
+ PedFileSystem *fs;
+ PedGeometry *fs_geom;
+ reiserfs_fs_t *fs_info;
+ reiserfs_gauge_t *gauge = NULL;
+
+ PED_ASSERT(geom != NULL, return NULL);
+
+ fs_geom = ped_geometry_duplicate(geom);
+
+ if (!(dal = geom_dal_create(fs_geom, DEFAULT_BLOCK_SIZE, O_RDWR)))
+ goto error_fs_geom_free;
+
+ memset(uuid, 0, sizeof(uuid));
+ uuid_generate(uuid);
+
+ ped_timer_reset(timer);
+ ped_timer_set_state_name(timer, _("creating"));
+
+ if (libreiserfs_gauge_create && libreiserfs_gauge_free) {
+ if (! (gauge =
+ libreiserfs_gauge_create(NULL, gauge_handler, timer)))
+ goto error_free_dal;
+ }
+
+ if (!(fs_info = reiserfs_fs_create(dal, dal, 0, JOURNAL_MAX_TRANS,
+ DEFAULT_JOURNAL_SIZE,
+ DEFAULT_BLOCK_SIZE,
+ FS_FORMAT_3_6, R5_HASH, NULL,
+ (char *) uuid, dal_len(dal),
+ gauge)))
+ goto error_free_gauge;
+
+ ped_timer_update(timer, 1.0);
+
+ if (gauge)
+ libreiserfs_gauge_free(gauge);
+
+ if (!(fs = (PedFileSystem *) ped_malloc(sizeof(PedFileSystem))))
+ goto error_free_fs_info;
+
+ fs->type = reiserfs_type;
+ fs->geom = fs_geom;
+ fs->type_specific = (void *) fs_info;
+
+ return fs;
+
+error_free_fs_info:
+ ped_free(fs_info);
+error_free_gauge:
+ if (gauge)
+ libreiserfs_gauge_free(gauge);
+error_free_dal:
+ geom_dal_free(dal);
+error_fs_geom_free:
+ ped_geometry_destroy(fs_geom);
+ return NULL;
+}
+
+static int reiserfs_close(PedFileSystem *fs)
+{
+ dal_t *dal;
+
+ PED_ASSERT(fs != NULL, return 0);
+
+ dal = reiserfs_fs_host_dal(fs->type_specific);
+ reiserfs_fs_close(fs->type_specific);
+
+ geom_dal_free(dal);
+ ped_geometry_sync(fs->geom);
+
+ ped_free(fs);
+ return 1;
+}
+
+static PedConstraint *reiserfs_get_create_constraint(const PedDevice *dev)
+{
+ PedGeometry full_dev;
+ PedSector min_blks = (SUPER_OFFSET_IN_BYTES / DEFAULT_BLOCK_SIZE)
+ + 2 + DEFAULT_JOURNAL_SIZE + 1 + 100 + 1;
+
+ if (!ped_geometry_init(&full_dev, dev, 0, dev->length - 1))
+ return NULL;
+
+ return ped_constraint_new(ped_alignment_any, ped_alignment_any,
+ &full_dev, &full_dev,
+ min_blks * (DEFAULT_BLOCK_SIZE / 512),
+ dev->length);
+}
+
+static int reiserfs_check(PedFileSystem *fs, PedTimer *timer)
+{
+ reiserfs_fs_t *fs_info;
+#ifdef HAVE_REISERFS_FS_CHECK
+ reiserfs_gauge_t *gauge = NULL;
+#endif
+
+ PED_ASSERT(fs != NULL, return 0);
+
+ fs_info = fs->type_specific;
+
+ if (!reiserfs_fs_is_consistent(fs_info)) {
+ ped_exception_throw(PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("The file system is in an invalid "
+ "state. Perhaps it is mounted?"));
+ return 0;
+ }
+
+ if (!reiserfs_fs_is_resizeable(fs_info))
+ ped_exception_throw(PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_IGNORE,
+ _("The file system is in old "
+ "(unresizeable) format."));
+
+ if (!reiserfs_fs_bitmap_check(fs_info)) {
+ ped_exception_throw(PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Invalid free blocks count. Run "
+ "reiserfsck --check first."));
+ return 0;
+ }
+
+#ifdef HAVE_REISERFS_FS_CHECK
+ ped_timer_reset(timer);
+
+ if (libreiserfs_gauge_create && libreiserfs_gauge_free) {
+ if (!
+ (gauge =
+ libreiserfs_gauge_create(NULL, gauge_handler, timer)))
+ return 0;
+ }
+
+ ped_timer_set_state_name(timer, _("checking"));
+ ped_timer_update(timer, 0.0);
+
+ if (!reiserfs_fs_check(fs_info, gauge)) {
+ ped_exception_throw(PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Reiserfs tree seems to be corrupted. "
+ "Run reiserfsck --check first."));
+ return 0;
+ }
+
+ ped_timer_update(timer, 1.0);
+
+ if (gauge)
+ libreiserfs_gauge_free(gauge);
+#endif
+
+ ped_exception_throw(PED_EXCEPTION_INFORMATION, PED_EXCEPTION_OK,
+ _("The reiserfs file system passed a basic check. "
+ "For a more comprehensive check, run "
+ "reiserfsck --check."));
+
+ return 1;
+}
+
+static int reiserfs_resize(PedFileSystem *fs, PedGeometry *geom,
+ PedTimer *timer)
+{
+ dal_t *dal;
+ blk_t fs_len;
+ PedSector old_length;
+ reiserfs_fs_t *fs_info;
+ reiserfs_gauge_t *gauge = NULL;
+
+ PED_ASSERT(fs != NULL, return 0);
+
+ old_length = fs->geom->length;
+
+ PED_ASSERT (fs->geom->dev == geom->dev, return 0);
+
+ if (fs->geom->start != geom->start) {
+ ped_exception_throw(PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Sorry, can't move the start of "
+ "reiserfs partitions yet."));
+ return 0;
+ }
+
+ fs_info = fs->type_specific;
+
+ fs_len = (blk_t) (geom->length / (reiserfs_fs_block_size(fs_info) /
+ PED_SECTOR_SIZE_DEFAULT));
+
+ dal = reiserfs_fs_host_dal(fs_info);
+
+ if (dal_flags(dal) && O_RDONLY) {
+ if (!geom_dal_reopen(dal, O_RDWR)) {
+ ped_exception_throw(PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Couldn't reopen device "
+ "abstraction layer for "
+ "read/write."));
+ return 0;
+ }
+ }
+
+ ped_timer_reset(timer);
+
+ if (libreiserfs_gauge_create && libreiserfs_gauge_free) {
+ if (!
+ (gauge =
+ libreiserfs_gauge_create(NULL, gauge_handler, timer)))
+ return 0;
+ }
+
+ if (old_length > geom->length) {
+
+ ped_timer_set_state_name(timer, _("shrinking"));
+ ped_timer_update(timer, 0.0);
+
+ if (!reiserfs_fs_resize(fs_info, fs_len, gauge))
+ goto error_free_gauge;
+
+ ped_geometry_set_end (fs->geom, geom->end);
+ dal_realize(dal);
+ } else {
+ ped_geometry_set_end (fs->geom, geom->end);
+ dal_realize(dal);
+
+ ped_timer_set_state_name(timer, _("expanding"));
+ ped_timer_update(timer, 0.0);
+
+ if (!reiserfs_fs_resize(fs_info, fs_len, gauge))
+ goto error_free_gauge;
+ }
+
+ ped_timer_update(timer, 1.0);
+
+ if (gauge)
+ libreiserfs_gauge_free(gauge);
+
+ return 1;
+
+error_free_gauge:
+ if (gauge)
+ libreiserfs_gauge_free(gauge);
+ ped_geometry_set_end (fs->geom, fs->geom->start + old_length - 1);
+ return 0;
+}
+
+static PedConstraint *reiserfs_get_resize_constraint(const PedFileSystem *
+ fs)
+{
+ PedDevice *dev;
+ PedSector min_size;
+ PedGeometry full_disk;
+ reiserfs_fs_t *fs_info;
+ PedAlignment start_align;
+ PedGeometry start_sector;
+
+ PED_ASSERT(fs != NULL, return NULL);
+
+ fs_info = fs->type_specific;
+ dev = fs->geom->dev;
+
+ if (!ped_alignment_init(&start_align, fs->geom->start, 0))
+ return NULL;
+ if (!ped_geometry_init(&full_disk, dev, 0, dev->length - 1))
+ return NULL;
+ if (!ped_geometry_init(&start_sector, dev, fs->geom->start, 1))
+ return NULL;
+
+ /*
+ Minsize for reiserfs is area occupied by data blocks and
+ metadata blocks minus free space blocks and minus bitmap
+ blocks which describes free space blocks.
+ */
+ min_size = reiserfs_fs_min_size(fs_info) *
+ (reiserfs_fs_block_size(fs_info) / PED_SECTOR_SIZE_DEFAULT);
+
+ return ped_constraint_new(&start_align, ped_alignment_any,
+ &start_sector, &full_disk, min_size,
+ dev->length);
+}
+
+static PedFileSystem *reiserfs_copy(const PedFileSystem *fs,
+ PedGeometry *geom, PedTimer *timer)
+{
+ dal_t *dal;
+ PedGeometry *fs_geom;
+ PedFileSystem *new_fs;
+ blk_t fs_len, min_needed_blk;
+
+ reiserfs_fs_t *dest_fs, *src_fs;
+ reiserfs_gauge_t *gauge = NULL;
+
+ fs_geom = ped_geometry_duplicate(geom);
+
+ if (!(dal = geom_dal_create(fs_geom, DEFAULT_BLOCK_SIZE, O_RDWR))) {
+ ped_exception_throw(PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Couldn't create reiserfs device "
+ "abstraction handler."));
+ goto error_free_fs_geom;
+ }
+
+ src_fs = fs->type_specific;
+
+ fs_len =
+ (geom->length / (reiserfs_fs_block_size(src_fs) / PED_SECTOR_SIZE_DEFAULT));
+ min_needed_blk = reiserfs_fs_bitmap_used(src_fs);
+
+ if (fs_len <= min_needed_blk) {
+ ped_exception_throw(PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Device is too small for %lu blocks."),
+ min_needed_blk);
+ goto error_free_dal;
+ }
+
+ if (! (new_fs = (PedFileSystem *) ped_malloc(sizeof(PedFileSystem))))
+ goto error_free_dal;
+
+ ped_timer_reset(timer);
+ ped_timer_set_state_name(timer, _("copying"));
+ ped_timer_update(timer, 0.0);
+
+ if (libreiserfs_gauge_create && libreiserfs_gauge_free) {
+ if (! (gauge =
+ libreiserfs_gauge_create(NULL, gauge_handler, timer)))
+ goto error_free_new_fs;
+ }
+
+ if (!(dest_fs = reiserfs_fs_copy(src_fs, dal, gauge)))
+ goto error_free_gauge;
+
+ ped_timer_update(timer, 1.0);
+
+ if (gauge)
+ libreiserfs_gauge_free(gauge);
+
+ new_fs->type = reiserfs_type;
+ new_fs->geom = fs_geom;
+ new_fs->type_specific = (void *) dest_fs;
+
+ return new_fs;
+
+error_free_gauge:
+ if (gauge)
+ libreiserfs_gauge_free(gauge);
+error_free_new_fs:
+ ped_free(new_fs);
+error_free_dal:
+ geom_dal_free(dal);
+error_free_fs_geom:
+ ped_geometry_destroy(fs_geom);
+ return NULL;
+}
+
+static PedConstraint *reiserfs_get_copy_constraint(const PedFileSystem *fs,
+ const PedDevice *dev)
+{
+ PedGeometry full_dev;
+
+ PED_ASSERT(fs != NULL, return NULL);
+ PED_ASSERT(dev != NULL, return NULL);
+
+ if (!ped_geometry_init(&full_dev, dev, 0, dev->length - 1))
+ return NULL;
+
+ return ped_constraint_new(ped_alignment_any, ped_alignment_any,
+ &full_dev, &full_dev,
+ reiserfs_fs_bitmap_used(fs->type_specific),
+ dev->length);
+}
+
+#endif /* !REISER_FULL_SUPPORT */
+
+#ifdef DYNAMIC_LOADING
+
+#define INIT_SYM(SYM) SYM = getsym (libreiserfs_handle, #SYM)
+
+static void *getsym(void *handle, const char *symbol)
+{
+ void *entry;
+ char *error;
+
+ entry = dlsym(handle, symbol);
+ if ((error = dlerror()) != NULL) {
+ ped_exception_throw(PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_IGNORE,
+ _("Couldn't resolve symbol %s. "
+ "Error: %s."),
+ symbol, error);
+ return NULL;
+ }
+
+ return entry;
+}
+
+static int reiserfs_ops_interface_version_check(void)
+{
+ int min_interface_version, max_interface_version;
+ int (*libreiserfs_get_max_interface_version) (void);
+ int (*libreiserfs_get_min_interface_version) (void);
+
+ INIT_SYM(libreiserfs_get_max_interface_version);
+ INIT_SYM(libreiserfs_get_min_interface_version);
+
+ if (!libreiserfs_get_min_interface_version ||
+ !libreiserfs_get_max_interface_version) {
+ ped_exception_throw(
+ PED_EXCEPTION_WARNING, PED_EXCEPTION_CANCEL,
+ _("GNU Parted found an invalid libreiserfs library."));
+ return 0;
+ }
+
+ min_interface_version = libreiserfs_get_min_interface_version();
+ max_interface_version = libreiserfs_get_max_interface_version();
+
+ if (REISERFS_API_VERSION < min_interface_version ||
+ REISERFS_API_VERSION > max_interface_version) {
+ ped_exception_throw(
+ PED_EXCEPTION_WARNING, PED_EXCEPTION_CANCEL,
+ _("GNU Parted has detected libreiserfs interface "
+ "version mismatch. Found %d-%d, required %d. "
+ "ReiserFS support will be disabled."),
+ min_interface_version,
+ max_interface_version,
+ REISERFS_API_VERSION);
+ return 0;
+ }
+
+ return 1;
+}
+
+static int reiserfs_ops_init(void)
+{
+ if (!(libreiserfs_handle = dlopen("libreiserfs.so", RTLD_NOW)))
+ goto error;
+
+ if (!reiserfs_ops_interface_version_check())
+ goto error_free_libreiserfs_handle;
+
+ if (!(libdal_handle = dlopen("libdal.so", RTLD_NOW)))
+ goto error_free_libreiserfs_handle;
+
+ INIT_SYM(reiserfs_fs_probe);
+ INIT_SYM(libreiserfs_exception_type);
+
+ INIT_SYM(libreiserfs_exception_option);
+ INIT_SYM(libreiserfs_exception_message);
+ INIT_SYM(libreiserfs_exception_set_handler);
+
+ INIT_SYM(reiserfs_fs_clobber);
+ INIT_SYM(reiserfs_fs_open);
+ INIT_SYM(reiserfs_fs_create);
+ INIT_SYM(reiserfs_fs_resize);
+ INIT_SYM(reiserfs_fs_copy);
+
+ INIT_SYM(reiserfs_fs_is_resizeable);
+ INIT_SYM(reiserfs_fs_is_consistent);
+
+ INIT_SYM(reiserfs_fs_bitmap_check);
+ INIT_SYM(reiserfs_fs_bitmap_used);
+
+ INIT_SYM(reiserfs_fs_min_size);
+ INIT_SYM(reiserfs_fs_block_size);
+
+ INIT_SYM(reiserfs_fs_host_dal);
+ INIT_SYM(reiserfs_fs_close);
+
+ INIT_SYM(libreiserfs_gauge_create);
+ INIT_SYM(libreiserfs_gauge_free);
+
+ INIT_SYM(dal_realize);
+ INIT_SYM(dal_flags);
+
+ INIT_SYM(dal_block_size);
+ INIT_SYM(dal_len);
+
+ return 1;
+
+error_free_libreiserfs_handle:
+ dlclose(libreiserfs_handle);
+ libreiserfs_handle = NULL;
+error:
+ return 0;
+}
+
+static void reiserfs_ops_done()
+{
+ if (libdal_handle)
+ dlclose(libdal_handle);
+ if (libreiserfs_handle)
+ dlclose(libreiserfs_handle);
+}
+#endif /* DYNAMIC_LOADING */
+
+#define REISER_BLOCK_SIZES ((int[]){512, 1024, 2048, 4096, 8192, 0})
+
+#ifdef REISER_FULL_SUPPORT
+static PedFileSystemOps reiserfs_full_ops = {
+ probe: reiserfs_probe,
+ clobber: reiserfs_clobber,
+ open: reiserfs_open,
+ create: reiserfs_create,
+ close: reiserfs_close,
+ check: reiserfs_check,
+ copy: reiserfs_copy,
+ resize: reiserfs_resize,
+ get_create_constraint: reiserfs_get_create_constraint,
+ get_resize_constraint: reiserfs_get_resize_constraint,
+ get_copy_constraint: reiserfs_get_copy_constraint
+};
+
+static PedFileSystemType reiserfs_full_type = {
+ next: NULL,
+ ops: &reiserfs_full_ops,
+ name: "reiserfs",
+ block_sizes: REISER_BLOCK_SIZES
+};
+#endif /* REISER_FULL_SUPPORT */
+
+static PedFileSystemOps reiserfs_simple_ops = {
+ probe: reiserfs_probe,
+#ifdef DISCOVER_ONLY
+ clobber: NULL,
+#else
+ clobber: reiserfs_clobber,
+#endif
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ copy: NULL,
+ resize: NULL,
+ get_create_constraint: NULL,
+ get_resize_constraint: NULL,
+ get_copy_constraint: NULL
+};
+
+static PedFileSystemType reiserfs_simple_type = {
+ next: NULL,
+ ops: &reiserfs_simple_ops,
+ name: "reiserfs",
+ block_sizes: REISER_BLOCK_SIZES
+};
+
+void ped_file_system_reiserfs_init()
+{
+#ifdef DYNAMIC_LOADING
+ libreiserfs_present = reiserfs_ops_init();
+ if (libreiserfs_present) {
+ reiserfs_type = &reiserfs_full_type;
+ libreiserfs_exception_set_handler(exception_handler);
+ } else {
+ reiserfs_type = &reiserfs_simple_type;
+ }
+#else /* !DYNAMIC_LOADING */
+#ifdef REISER_FULL_SUPPORT
+ libreiserfs_exception_set_handler(exception_handler);
+ reiserfs_type = &reiserfs_full_type;
+#else
+ reiserfs_type = &reiserfs_simple_type;
+#endif
+#endif /* !DYNAMIC_LOADING */
+ ped_file_system_type_register(reiserfs_type);
+}
+
+void ped_file_system_reiserfs_done()
+{
+ ped_file_system_type_unregister(reiserfs_type);
+#ifdef DYNAMIC_LOADING
+ reiserfs_ops_done();
+#endif /* DYNAMIC_LOADING */
+}
diff --git a/parted-1.8.7/libparted/fs/reiserfs/reiserfs.h b/parted-1.8.7/libparted/fs/reiserfs/reiserfs.h
new file mode 100644
index 0000000..67bf9bf
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/reiserfs/reiserfs.h
@@ -0,0 +1,109 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#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/parted-1.8.7/libparted/fs/ufs/Makefile.am b/parted-1.8.7/libparted/fs/ufs/Makefile.am
new file mode 100644
index 0000000..e913c2d
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/ufs/Makefile.am
@@ -0,0 +1,8 @@
+partedincludedir = -I$(top_srcdir)/include
+
+noinst_LTLIBRARIES = libufs.la
+libufs_la_SOURCES = ufs.c
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/parted-1.8.7/libparted/fs/ufs/Makefile.in b/parted-1.8.7/libparted/fs/ufs/Makefile.in
new file mode 100644
index 0000000..27d889f
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/ufs/Makefile.in
@@ -0,0 +1,624 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libufs_la_LIBADD =
+am_libufs_la_OBJECTS = ufs.lo
+libufs_la_OBJECTS = $(am_libufs_la_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)/lib@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libufs_la_SOURCES)
+DIST_SOURCES = $(libufs_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/ufs/Makefile'; \
+ 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
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libufs.la: $(libufs_la_OBJECTS) $(libufs_la_DEPENDENCIES)
+ $(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@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+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
+
+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 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/parted-1.8.7/libparted/fs/ufs/ufs.c b/parted-1.8.7/libparted/fs/ufs/ufs.c
new file mode 100644
index 0000000..94272e3
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/ufs/ufs.c
@@ -0,0 +1,325 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2001 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+
+ 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;
+}
+
+#ifndef DISCOVER_ONLY
+static int
+ufs_clobber (PedGeometry* geom)
+{
+ char buf[1536];
+
+ if (!ped_geometry_read (geom, buf, 16, 3))
+ return 0;
+
+ memset (buf, 0, sizeof(struct ufs_super_block));
+
+ return ped_geometry_write (geom, buf, 16, 3);
+}
+#endif /* !DISCOVER_ONLY */
+
+static PedFileSystemOps ufs_ops_sun = {
+ probe: ufs_probe_sun,
+#ifndef DISCOVER_ONLY
+ clobber: ufs_clobber,
+#else
+ clobber: NULL,
+#endif
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ copy: NULL,
+ resize: NULL,
+ get_create_constraint: NULL,
+ get_resize_constraint: NULL,
+ get_copy_constraint: NULL
+};
+
+static PedFileSystemOps ufs_ops_hp = {
+ probe: ufs_probe_hp,
+#ifndef DISCOVER_ONLY
+ clobber: ufs_clobber,
+#else
+ clobber: NULL,
+#endif
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ copy: NULL,
+ resize: NULL,
+ get_create_constraint: NULL,
+ get_resize_constraint: NULL,
+ get_copy_constraint: NULL
+};
+
+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, return);
+
+ 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/parted-1.8.7/libparted/fs/xfs/Makefile.am b/parted-1.8.7/libparted/fs/xfs/Makefile.am
new file mode 100644
index 0000000..d5559c2
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/xfs/Makefile.am
@@ -0,0 +1,8 @@
+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/parted-1.8.7/libparted/fs/xfs/Makefile.in b/parted-1.8.7/libparted/fs/xfs/Makefile.in
new file mode 100644
index 0000000..8ba92ee
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/xfs/Makefile.in
@@ -0,0 +1,624 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+libxfs_la_LIBADD =
+am_libxfs_la_OBJECTS = xfs.lo
+libxfs_la_OBJECTS = $(am_libxfs_la_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)/lib@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(libxfs_la_SOURCES)
+DIST_SOURCES = $(libxfs_la_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/fs/xfs/Makefile'; \
+ 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
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+libxfs.la: $(libxfs_la_OBJECTS) $(libxfs_la_DEPENDENCIES)
+ $(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@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+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
+
+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 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/parted-1.8.7/libparted/fs/xfs/platform_defs.h b/parted-1.8.7/libparted/fs/xfs/platform_defs.h
new file mode 100644
index 0000000..a2b45b9
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/xfs/platform_defs.h
@@ -0,0 +1,115 @@
+/* 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 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it would be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * Further, this software is distributed without any warranty that it is
+ * free of the rightful claim of any third person regarding infringement
+ * or the like. Any license provided herein, whether implied or
+ * otherwise, applies only to this software file. Patent licenses, if
+ * any, provided herein do not apply to combinations of this program with
+ * other software, or any other product whatsoever.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston MA 02110-1301, USA.
+ *
+ * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
+ * Mountain View, CA 94043, or:
+ *
+ * http://www.sgi.com
+ *
+ * For further information regarding this notice, see:
+ *
+ * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
+ *
+ * @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
+
+#ifdef __sparc__
+# ifndef O_DIRECT
+# define O_DIRECT 0x100000
+# endif
+#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/parted-1.8.7/libparted/fs/xfs/xfs.c b/parted-1.8.7/libparted/fs/xfs/xfs.c
new file mode 100644
index 0000000..c6d88e8
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/xfs/xfs.c
@@ -0,0 +1,120 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2001 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#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;
+}
+
+#ifndef DISCOVER_ONLY
+static int
+xfs_clobber (PedGeometry* geom)
+{
+ char buf[512];
+
+ memset (buf, 0, 512);
+ return ped_geometry_write (geom, buf, XFS_SB_DADDR, 1);
+}
+#endif /* !DISCOVER_ONLY */
+
+static PedFileSystemOps xfs_ops = {
+ probe: xfs_probe,
+#ifndef DISCOVER_ONLY
+ clobber: xfs_clobber,
+#else
+ clobber: NULL,
+#endif
+ open: NULL,
+ create: NULL,
+ close: NULL,
+ check: NULL,
+ copy: NULL,
+ resize: NULL,
+ get_create_constraint: NULL,
+ get_resize_constraint: NULL,
+ get_copy_constraint: NULL
+};
+
+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/parted-1.8.7/libparted/fs/xfs/xfs_sb.h b/parted-1.8.7/libparted/fs/xfs/xfs_sb.h
new file mode 100644
index 0000000..1411c47
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/xfs/xfs_sb.h
@@ -0,0 +1,490 @@
+/*
+ * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it would be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * Further, this software is distributed without any warranty that it is
+ * free of the rightful claim of any third person regarding infringement
+ * or the like. Any license provided herein, whether implied or
+ * otherwise, applies only to this software file. Patent licenses, if
+ * any, provided herein do not apply to combinations of this program with
+ * other software, or any other product whatsoever.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston MA 02110-1301, USA.
+ *
+ * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
+ * Mountain View, CA 94043, or:
+ *
+ * http://www.sgi.com
+ *
+ * For further information regarding this notice, see:
+ *
+ * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
+ */
+#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/parted-1.8.7/libparted/fs/xfs/xfs_types.h b/parted-1.8.7/libparted/fs/xfs/xfs_types.h
new file mode 100644
index 0000000..e62dd53
--- /dev/null
+++ b/parted-1.8.7/libparted/fs/xfs/xfs_types.h
@@ -0,0 +1,303 @@
+/*
+ * Copyright (c) 2000 Silicon Graphics, Inc. All Rights Reserved.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of version 2 of the GNU General Public License as
+ * published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it would be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+ *
+ * Further, this software is distributed without any warranty that it is
+ * free of the rightful claim of any third person regarding infringement
+ * or the like. Any license provided herein, whether implied or
+ * otherwise, applies only to this software file. Patent licenses, if
+ * any, provided herein do not apply to combinations of this program with
+ * other software, or any other product whatsoever.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write the Free Software Foundation, Inc.,
+ * 51 Franklin St, Fifth Floor, Boston MA 02110-1301, USA.
+ *
+ * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
+ * Mountain View, CA 94043, or:
+ *
+ * http://www.sgi.com
+ *
+ * For further information regarding this notice, see:
+ *
+ * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
+ */
+#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/parted-1.8.7/libparted/labels/Makefile.am b/parted-1.8.7/libparted/labels/Makefile.am
new file mode 100644
index 0000000..f4d7d14
--- /dev/null
+++ b/parted-1.8.7/libparted/labels/Makefile.am
@@ -0,0 +1,33 @@
+# This file is part of GNU Parted
+# Copyright (C) 1999, 2000, 2001, 2007 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
+
+partedincludedir = -I$(top_srcdir)/include
+noinst_LTLIBRARIES = liblabels.la
+
+liblabels_la_SOURCES = rdb.c \
+ bsd.c \
+ $(S390_SRCS) \
+ efi_crc32.c \
+ dos.c \
+ dvh.h \
+ dvh.c \
+ gpt.c \
+ loop.c \
+ mac.c \
+ pc98.c \
+ sun.c \
+ aix.c
+
+liblabels_la_LIBADD = $(OS_LIBS) $(INTLLIBS)
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/parted-1.8.7/libparted/labels/Makefile.in b/parted-1.8.7/libparted/labels/Makefile.in
new file mode 100644
index 0000000..efcf8ed
--- /dev/null
+++ b/parted-1.8.7/libparted/labels/Makefile.in
@@ -0,0 +1,665 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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, 2000, 2001, 2007 Free Software Foundation, Inc.
+#
+# This file may be modified and/or distributed without restriction.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+LTLIBRARIES = $(noinst_LTLIBRARIES)
+am__DEPENDENCIES_1 =
+liblabels_la_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1)
+am__liblabels_la_SOURCES_DIST = rdb.c bsd.c dasd.c fdasd.c vtoc.c \
+ efi_crc32.c dos.c dvh.h dvh.c gpt.c loop.c mac.c pc98.c sun.c \
+ aix.c
+@COMPILE_FOR_S390_TRUE@am__objects_1 = dasd.lo fdasd.lo vtoc.lo
+am_liblabels_la_OBJECTS = rdb.lo bsd.lo $(am__objects_1) efi_crc32.lo \
+ dos.lo dvh.lo gpt.lo loop.lo mac.lo pc98.lo sun.lo aix.lo
+liblabels_la_OBJECTS = $(am_liblabels_la_OBJECTS)
+DEFAULT_INCLUDES = -I. -I$(top_builddir)/lib@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(liblabels_la_SOURCES)
+DIST_SOURCES = $(am__liblabels_la_SOURCES_DIST)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_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
+partedincludedir = -I$(top_srcdir)/include
+noinst_LTLIBRARIES = liblabels.la
+liblabels_la_SOURCES = rdb.c \
+ bsd.c \
+ $(S390_SRCS) \
+ efi_crc32.c \
+ dos.c \
+ dvh.h \
+ dvh.c \
+ gpt.c \
+ loop.c \
+ mac.c \
+ pc98.c \
+ sun.c \
+ aix.c
+
+liblabels_la_LIBADD = $(OS_LIBS) $(INTLLIBS)
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/labels/Makefile'; \
+ 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
+
+clean-noinstLTLIBRARIES:
+ -test -z "$(noinst_LTLIBRARIES)" || rm -f $(noinst_LTLIBRARIES)
+ @list='$(noinst_LTLIBRARIES)'; for p in $$list; do \
+ dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
+ test "$$dir" != "$$p" || dir=.; \
+ echo "rm -f \"$${dir}/so_locations\""; \
+ rm -f "$${dir}/so_locations"; \
+ done
+liblabels.la: $(liblabels_la_OBJECTS) $(liblabels_la_DEPENDENCIES)
+ $(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)/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@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+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
+
+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 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/parted-1.8.7/libparted/labels/aix.c b/parted-1.8.7/libparted/labels/aix.c
new file mode 100644
index 0000000..9e7a3e2
--- /dev/null
+++ b/parted-1.8.7/libparted/labels/aix.c
@@ -0,0 +1,296 @@
+/* -*- 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 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 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
+
+ Contributor: Matt Wilson <msw@redhat.com>
+*/
+
+#include <config.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 */
+
+#define AIX_LABEL_MAGIC 0xc9c2d4c1
+
+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;
+}
+
+/* Read a single sector, of 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, char **buf)
+{
+ char *b = ped_malloc (dev->sector_size);
+ PED_ASSERT (b != NULL, return 0);
+ if (!ped_device_read (dev, b, 0, 1)) {
+ ped_free (b);
+ return 0;
+ }
+ *buf = b;
+ return 1;
+}
+
+static int
+aix_probe (const PedDevice *dev)
+{
+ PED_ASSERT (dev != NULL, return 0);
+
+ char *label;
+ if (!read_sector (dev, &label))
+ return 0;
+ unsigned int magic = aix_label_magic_get (label);
+ ped_free (label);
+ return magic == AIX_LABEL_MAGIC;
+}
+
+#ifndef DISCOVER_ONLY
+static int
+aix_clobber (PedDevice* dev)
+{
+ PED_ASSERT (dev != NULL, return 0);
+
+ if (!aix_probe (dev))
+ return 0;
+
+ char *label;
+ if (!read_sector (dev, &label))
+ return 0;
+
+ aix_label_magic_set (label, 0);
+ int result = ped_device_write (dev, label, 0, 1);
+ ped_free (label);
+ return result;
+}
+#endif /* !DISCOVER_ONLY */
+
+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, return);
+
+ _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 int
+aix_partition_align (PedPartition* part, const PedConstraint* constraint)
+{
+ PED_ASSERT (part != NULL, return 0);
+
+ return 1;
+}
+
+static int
+aix_partition_enumerate (PedPartition* part)
+{
+ return 1;
+}
+
+static int
+aix_alloc_metadata (PedDisk* disk)
+{
+ return 1;
+}
+
+static PedDiskOps aix_disk_ops = {
+ probe: aix_probe,
+#ifndef DISCOVER_ONLY
+ clobber: aix_clobber,
+#else
+ clobber: NULL,
+#endif
+ alloc: aix_alloc,
+ duplicate: aix_duplicate,
+ free: aix_free,
+ read: aix_read,
+#ifndef DISCOVER_ONLY
+ write: aix_write,
+#else
+ write: NULL,
+#endif
+
+ partition_new: aix_partition_new,
+ partition_duplicate: aix_partition_duplicate,
+ partition_destroy: aix_partition_destroy,
+ partition_set_system: aix_partition_set_system,
+ partition_set_flag: aix_partition_set_flag,
+ partition_get_flag: aix_partition_get_flag,
+ partition_is_flag_available: aix_partition_is_flag_available,
+ partition_align: aix_partition_align,
+ partition_enumerate: aix_partition_enumerate,
+ alloc_metadata: aix_alloc_metadata,
+ get_max_primary_partition_count:
+ aix_get_max_primary_partition_count,
+
+ partition_set_name: NULL,
+ partition_get_name: NULL,
+};
+
+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/parted-1.8.7/libparted/labels/bsd.c b/parted-1.8.7/libparted/labels/bsd.c
new file mode 100644
index 0000000..747a9c5
--- /dev/null
+++ b/parted-1.8.7/libparted/labels/bsd.c
@@ -0,0 +1,613 @@
+/* -*- 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 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+
+ Contributor: Matt Wilson <msw@redhat.com>
+*/
+
+#include <config.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 */
+
+/* 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;
+} 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)
+{
+ char boot[512];
+ BSDRawLabel *label;
+
+ PED_ASSERT (dev != NULL, return 0);
+
+ if (dev->sector_size != 512)
+ return 0;
+
+ if (!ped_device_read (dev, boot, 0, 1))
+ return 0;
+
+ label = (BSDRawLabel *) (boot + BSD_LABEL_OFFSET);
+
+ alpha_bootblock_checksum(boot);
+
+ /* check magic */
+ if (PED_LE32_TO_CPU (label->d_magic) != BSD_DISKMAGIC)
+ return 0;
+
+ return 1;
+}
+
+static PedDisk*
+bsd_alloc (const PedDevice* dev)
+{
+ PedDisk* disk;
+ BSDDiskData* bsd_specific;
+ BSDRawLabel* label;
+
+ PED_ASSERT(dev->sector_size % PED_SECTOR_SIZE_DEFAULT == 0, return 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;
+
+ label = (BSDRawLabel*) (bsd_specific->boot_code + BSD_LABEL_OFFSET);
+ memset(label, 0, sizeof(BSDRawLabel));
+
+ 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:
+ ped_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)
+{
+ ped_free (disk->disk_specific);
+ _ped_disk_free (disk);
+}
+
+#ifndef DISCOVER_ONLY
+static int
+bsd_clobber (PedDevice* dev)
+{
+ char boot [512];
+ BSDRawLabel* label = (BSDRawLabel *) (boot + BSD_LABEL_OFFSET);
+
+ if (!ped_device_read (dev, boot, 0, 1))
+ return 0;
+ label->d_magic = 0;
+ return ped_device_write (dev, (void*) boot, 0, 1);
+}
+#endif /* !DISCOVER_ONLY */
+
+static int
+bsd_read (PedDisk* disk)
+{
+ BSDDiskData* bsd_specific = (BSDDiskData*) disk->disk_specific;
+ BSDRawLabel* label;
+ int i;
+
+ ped_disk_delete_all (disk);
+
+ if (!ped_device_read (disk->dev, bsd_specific->boot_code, 0, 1))
+ goto error;
+ 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;
+ PedConstraint* constraint_exact;
+
+ 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, 0, 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);
+
+ constraint_exact = ped_constraint_exact (&part->geom);
+ if (!ped_disk_add_partition (disk, part, constraint_exact))
+ goto error;
+ ped_constraint_destroy (constraint_exact);
+ }
+
+ return 1;
+
+error:
+ return 0;
+}
+
+static void
+_probe_and_add_boot_code (const PedDisk* disk)
+{
+ BSDDiskData* bsd_specific;
+ BSDRawLabel* old_label;
+ char old_boot_code [512];
+
+ bsd_specific = (BSDDiskData*) disk->disk_specific;
+ old_label = (BSDRawLabel*) (old_boot_code + BSD_LABEL_OFFSET);
+
+ if (!ped_device_read (disk->dev, old_boot_code, 0, 1))
+ return;
+ if (old_boot_code [0]
+ && old_label->d_magic == PED_CPU_TO_LE32 (BSD_DISKMAGIC))
+ memcpy (bsd_specific->boot_code, old_boot_code, 512);
+}
+
+#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, return 0);
+ PED_ASSERT (disk->dev != NULL, return 0);
+
+ 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 (!ped_device_write (disk->dev, (void*) bsd_specific->boot_code,
+ 0, 1))
+ 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;
+ } else {
+ part->disk_specific = NULL;
+ }
+ return part;
+
+ ped_free (bsd_data);
+error_free_part:
+ ped_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;
+ return new_part;
+}
+
+static void
+bsd_partition_destroy (PedPartition* part)
+{
+ PED_ASSERT (part != NULL, return);
+
+ if (ped_partition_is_active (part))
+ ped_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 (!strcmp (fs_type->name, "linux-swap"))
+ bsd_data->type = 0x1;
+ else
+ bsd_data->type = 0x8;
+
+ return 1;
+}
+
+static int
+bsd_partition_set_flag (PedPartition* part, PedPartitionFlag flag, int state)
+{
+ /* no flags for bsd */
+ return 0;
+}
+
+static int
+bsd_partition_get_flag (const PedPartition* part, PedPartitionFlag flag)
+{
+ /* no flags for bsd */
+ return 0;
+}
+
+static int
+bsd_partition_is_flag_available (const PedPartition* part,
+ PedPartitionFlag flag)
+{
+ /* no flags for bsd */
+ return 0;
+}
+
+
+static int
+bsd_get_max_primary_partition_count (const PedDisk* disk)
+{
+ return BSD_MAXPARTITIONS;
+}
+
+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, goto error);
+ PED_ASSERT (disk->dev != NULL, goto error);
+
+ 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;
+}
+
+static PedDiskOps bsd_disk_ops = {
+ probe: bsd_probe,
+#ifndef DISCOVER_ONLY
+ clobber: bsd_clobber,
+#else
+ clobber: NULL,
+#endif
+ alloc: bsd_alloc,
+ duplicate: bsd_duplicate,
+ free: bsd_free,
+ read: bsd_read,
+#ifndef DISCOVER_ONLY
+ write: bsd_write,
+#else
+ write: NULL,
+#endif
+
+ partition_new: bsd_partition_new,
+ partition_duplicate: bsd_partition_duplicate,
+ partition_destroy: bsd_partition_destroy,
+ partition_set_system: bsd_partition_set_system,
+ partition_set_flag: bsd_partition_set_flag,
+ partition_get_flag: bsd_partition_get_flag,
+ partition_is_flag_available: bsd_partition_is_flag_available,
+ partition_set_name: NULL,
+ partition_get_name: NULL,
+ partition_align: bsd_partition_align,
+ partition_enumerate: bsd_partition_enumerate,
+
+ alloc_metadata: bsd_alloc_metadata,
+ get_max_primary_partition_count:
+ bsd_get_max_primary_partition_count
+};
+
+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, return);
+ PED_ASSERT (sizeof (BSDRawLabel) == 276, return);
+
+ ped_disk_type_register (&bsd_disk_type);
+}
+
+void
+ped_disk_bsd_done ()
+{
+ ped_disk_type_unregister (&bsd_disk_type);
+}
diff --git a/parted-1.8.7/libparted/labels/dasd.c b/parted-1.8.7/libparted/labels/dasd.c
new file mode 100644
index 0000000..f11bc52
--- /dev/null
+++ b/parted-1.8.7/libparted/labels/dasd.c
@@ -0,0 +1,864 @@
+/* -*- 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 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 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
+
+ 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 <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 <parted/linux.h>
+
+#include <libintl.h>
+#if ENABLE_NLS
+# define _(String) dgettext (PACKAGE, String)
+#else
+# define _(String) (String)
+#endif /* ENABLE_NLS */
+
+#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;
+ void *part_info;
+} DasdPartitionData;
+
+typedef struct {
+ unsigned int real_sector_size;
+ unsigned int format_type;
+ /* IBM internal dasd structure (i guess ;), required. */
+ struct fdasd_anchor *anchor;
+} DasdDiskSpecific;
+
+static int dasd_probe (const PedDevice *dev);
+static int dasd_clobber (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 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 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);
+
+static PedDiskOps dasd_disk_ops = {
+ probe: dasd_probe,
+ clobber: dasd_clobber,
+ read: dasd_read,
+ write: dasd_write,
+
+ alloc: dasd_alloc,
+ duplicate: dasd_duplicate,
+ free: dasd_free,
+ partition_set_system: dasd_partition_set_system,
+
+ partition_new: dasd_partition_new,
+ partition_destroy: dasd_partition_destroy,
+ partition_set_flag: dasd_partition_set_flag,
+ partition_get_flag: dasd_partition_get_flag,
+ partition_is_flag_available: dasd_partition_is_flag_available,
+ partition_set_name: NULL,
+ partition_get_name: NULL,
+ partition_align: dasd_partition_align,
+ partition_enumerate: dasd_partition_enumerate,
+
+ alloc_metadata: dasd_alloc_metadata,
+ get_max_primary_partition_count: dasd_get_max_primary_partition_count,
+
+ partition_duplicate: NULL
+};
+
+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;
+
+ PED_ASSERT (dev != NULL, return 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) {
+ ped_free (disk);
+ return NULL;
+ }
+
+ /* because we lie to parted we have to compensate with the
+ real sector size. Record that now. */
+ if (ioctl(arch_specific->fd, BLKSSZGET,
+ &disk_specific->real_sector_size) == -1) {
+ ped_exception_throw(PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+ _("Unable to determine the block "
+ "size of this dasd"));
+ ped_free(disk_specific);
+ ped_free(disk);
+ return NULL;
+ }
+
+ 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;
+
+ new_disk->disk_specific = NULL;
+
+ return new_disk;
+}
+
+static void
+dasd_free (PedDisk* disk)
+{
+ PED_ASSERT(disk != NULL, return);
+
+ _ped_disk_free(disk);
+}
+
+
+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)
+{
+ char *errstr = 0;
+ LinuxSpecific* arch_specific;
+ struct fdasd_anchor anchor;
+
+ PED_ASSERT(dev != NULL, return 0);
+ PED_ASSERT((dev->type == PED_DEVICE_DASD
+ || dev->type == PED_DEVICE_VIODASD), return 0);
+
+ arch_specific = LINUX_SPECIFIC(dev);
+
+ /* add partition test here */
+ fdasd_initialize_anchor(&anchor);
+
+ fdasd_get_geometry(&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,errstr);
+
+ return 0;
+}
+
+static int
+dasd_clobber (PedDevice* dev)
+{
+ LinuxSpecific* arch_specific;
+ struct fdasd_anchor anchor;
+
+ PED_ASSERT(dev != NULL, return 0);
+
+ arch_specific = LINUX_SPECIFIC(dev);
+
+ fdasd_initialize_anchor(&anchor);
+ fdasd_get_geometry(&anchor, arch_specific->fd);
+
+ fdasd_recreate_vtoc(&anchor);
+ fdasd_write_labels(&anchor, arch_specific->fd);
+
+ return 1;
+}
+
+static int
+dasd_read (PedDisk* disk)
+{
+ int i;
+ char str[20];
+ PedDevice* dev;
+ PedPartition* part;
+ PedSector start, end;
+ PedConstraint* constraint_exact;
+ partition_info_t *p;
+ LinuxSpecific* arch_specific;
+ DasdDiskSpecific* disk_specific;
+
+ PDEBUG;
+
+ PED_ASSERT (disk != NULL, return 0);
+ PDEBUG;
+ PED_ASSERT (disk->dev != NULL, return 0);
+ PDEBUG;
+
+ dev = disk->dev;
+
+ arch_specific = LINUX_SPECIFIC(dev);
+ disk_specific = disk->disk_specific;
+
+ disk_specific->anchor = ped_malloc(sizeof(fdasd_anchor_t));
+
+ PDEBUG;
+
+ fdasd_initialize_anchor(disk_specific->anchor);
+
+ fdasd_get_geometry(disk_specific->anchor, arch_specific->fd);
+
+ /* check dasd for labels and vtoc */
+ if (fdasd_check_volume(disk_specific->anchor, arch_specific->fd))
+ goto error_close_dev;
+
+ if ((disk_specific->anchor->geo.cylinders
+ * disk_specific->anchor->geo.heads) > BIG_DISK_SIZE)
+ disk_specific->anchor->big_disk++;
+
+ ped_disk_delete_all (disk);
+
+ if (strncmp(disk_specific->anchor->vlabel->volkey,
+ vtoc_ebcdic_enc ("LNX1", str, 4), 4) == 0) {
+ DasdPartitionData* dasd_data;
+
+ /* LDL format, old one */
+ disk_specific->format_type = 1;
+ start = 24;
+ end = (long long)(long long) disk_specific->anchor->geo.cylinders
+ * (long long)disk_specific->anchor->geo.heads
+ * (long long)disk->dev->hw_geom.sectors
+ * (long long)disk_specific->real_sector_size
+ / (long long)disk->dev->sector_size - 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;
+
+ return 1;
+ }
+
+ /* CDL format, newer */
+ disk_specific->format_type = 2;
+
+ p = disk_specific->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) disk_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) disk_specific->real_sector_size
+ / (long long) disk->dev->sector_size - 1;
+ part = ped_partition_new(disk, 0, 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_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_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) {
+ dasd_data->system = PARTITION_LINUX_SWAP;
+ PDEBUG;
+ }
+
+ vtoc_ebcdic_enc(p->f1->DS1DSNAM, p->f1->DS1DSNAM, 44);
+
+ dasd_data->part_info = (void *) p;
+ 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))
+ 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) disk_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) disk_specific->real_sector_size
+ / (long long) disk->dev->sector_size - 1;
+ part = ped_partition_new (disk, 0, 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))
+ goto error_close_dev;
+
+ ped_constraint_destroy (constraint_exact);
+ }
+
+ p = p->next;
+ }
+
+ PDEBUG;
+ return 1;
+
+error_close_dev:
+ PDEBUG;
+ return 0;
+}
+
+static int
+dasd_update_type (const PedDisk* disk)
+{
+ PedPartition* part;
+ LinuxSpecific* arch_specific;
+ DasdDiskSpecific* disk_specific;
+
+ arch_specific = LINUX_SPECIFIC(disk->dev);
+ disk_specific = disk->disk_specific;
+
+ PDEBUG;
+
+ for (part = ped_disk_next_partition(disk, NULL); part;
+ part = ped_disk_next_partition(disk, part)) {
+ partition_info_t *p;
+ char *ch = NULL;
+ DasdPartitionData* dasd_data;
+
+ PDEBUG;
+
+ if (part->type & PED_PARTITION_FREESPACE
+ || part->type & PED_PARTITION_METADATA)
+ continue;
+
+ PDEBUG;
+
+ dasd_data = part->disk_specific;
+ p = dasd_data->part_info;
+
+ 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;
+ }
+
+ disk_specific->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;
+ PED_ASSERT(disk != NULL, return 0);
+ PED_ASSERT(disk->dev != NULL, return 0);
+
+ arch_specific = LINUX_SPECIFIC (disk->dev);
+ disk_specific = disk->disk_specific;
+
+ PDEBUG;
+
+ /* If formated in LDL, don't write anything. */
+ if (disk_specific->format_type == 1)
+ return 1;
+
+ /* XXX re-initialize anchor? */
+ fdasd_initialize_anchor(disk_specific->anchor);
+ fdasd_get_geometry(disk_specific->anchor, arch_specific->fd);
+
+ /* check dasd for labels and vtoc */
+ if (fdasd_check_volume(disk_specific->anchor, arch_specific->fd))
+ goto error;
+
+ if ((disk_specific->anchor->geo.cylinders
+ * disk_specific->anchor->geo.heads) > BIG_DISK_SIZE)
+ disk_specific->anchor->big_disk++;
+
+ fdasd_recreate_vtoc(disk_specific->anchor);
+
+ for (i = 1; i <= USABLE_PARTITIONS; i++) {
+ unsigned int start, stop;
+ int type;
+
+ PDEBUG;
+ part = ped_disk_get_partition(disk, i);
+ if (!part)
+ continue;
+
+ PDEBUG;
+
+ start = part->geom.start * disk->dev->sector_size
+ / disk_specific->real_sector_size / disk->dev->hw_geom.sectors;
+ stop = (part->geom.end + 1)
+ * disk->dev->sector_size / disk_specific->real_sector_size
+ / disk->dev->hw_geom.sectors - 1;
+
+ PDEBUG;
+ dasd_data = part->disk_specific;
+
+ type = dasd_data->type;
+ PDEBUG;
+
+ p = fdasd_add_partition(disk_specific->anchor, start, stop);
+ if (!p) {
+ PDEBUG;
+ return 0;
+ }
+ dasd_data->part_info = (void *) p;
+ p->type = dasd_data->system;
+ }
+
+ PDEBUG;
+
+ if (!fdasd_prepare_labels(disk_specific->anchor, arch_specific->fd))
+ return 0;
+
+ dasd_update_type(disk);
+ PDEBUG;
+
+ if (!fdasd_write_labels(disk_specific->anchor, arch_specific->fd))
+ return 0;
+
+ return 1;
+
+error:
+ PDEBUG;
+ 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 void
+dasd_partition_destroy (PedPartition* part)
+{
+ PED_ASSERT(part != NULL, return);
+
+ if (ped_partition_is_active(part))
+ ped_free(part->disk_specific);
+ ped_free(part);
+}
+
+static int
+dasd_partition_set_flag (PedPartition* part, PedPartitionFlag flag, int state)
+{
+ DasdPartitionData* dasd_data;
+
+ PED_ASSERT(part != NULL, return 0);
+ PED_ASSERT(part->disk_specific != NULL, return 0);
+ 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, return 0);
+ PED_ASSERT (part->disk_specific != NULL, return 0);
+ 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 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 = disk_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, return 0);
+
+ 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 (!strcmp (fs_type->name, "linux-swap")) {
+ 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;
+
+ PED_ASSERT (disk != NULL, goto error);
+ PED_ASSERT (disk->dev != NULL, goto error);
+
+ arch_specific = LINUX_SPECIFIC (disk->dev);
+ disk_specific = disk->disk_specific;
+
+ constraint_any = ped_constraint_any (disk->dev);
+
+ /* If formated in LDL, the real partition starts at sector 24. */
+ if (disk_specific->format_type == 1)
+ vtoc_end = 23;
+ else
+ /* Mark the start of the disk as metadata. */
+ vtoc_end = (FIRST_USABLE_TRK * (long long) disk->dev->hw_geom.sectors
+ * (long long) disk_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;
+ }
+
+ ped_constraint_destroy (constraint_any);
+ return 1;
+
+error:
+ ped_constraint_destroy (constraint_any);
+ return 0;
+}
diff --git a/parted-1.8.7/libparted/labels/dos.c b/parted-1.8.7/libparted/labels/dos.c
new file mode 100644
index 0000000..9a31fc1
--- /dev/null
+++ b/parted-1.8.7/libparted/labels/dos.c
@@ -0,0 +1,2237 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 1999, 2000, 2001, 2004, 2005, 2007
+ 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#include <config.h>
+
+#include <sys/time.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 */
+
+/* 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
+
+#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_LDM 0x42
+#define PARTITION_LINUX_SWAP 0x82
+#define PARTITION_LINUX 0x83
+#define PARTITION_LINUX_EXT 0x85
+#define PARTITION_LINUX_LVM 0x8e
+#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
+
+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 [4];
+ 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 {
+ unsigned char system;
+ int boot;
+ int hidden;
+ int raid;
+ int lvm;
+ int lba;
+ int palo;
+ int prep;
+ OrigState* orig; /* used for CHS stuff */
+} DosPartitionData;
+
+static PedDiskType msdos_disk_type;
+
+static int
+msdos_probe (const PedDevice *dev)
+{
+ PedDiskType* disk_type;
+ DosRawTable part_table;
+ int i;
+
+ PED_ASSERT (dev != NULL, return 0);
+
+ if (dev->sector_size != 512)
+ return 0;
+
+ if (!ped_device_read (dev, &part_table, 0, 1))
+ return 0;
+
+ /* check magic */
+ if (PED_LE16_TO_CPU (part_table.magic) != MSDOS_MAGIC)
+ return 0;
+
+ /* if this is a FAT fs, fail here. Note that the Smart Boot Manager
+ * Loader (SBML) signature indicates a partition table, not a file
+ * system.
+ */
+ /* check below commented out to allow FAT fs images without a MBR */
+/* if ((!strncmp (part_table.boot_code + 0x36, "FAT", 3)
+ && strncmp (part_table.boot_code + 0x40, "SBML", 4) != 0)
+ || !strncmp (part_table.boot_code + 0x52, "FAT", 3))
+ return 0;
+*/
+
+ /* If this is a GPT disk, fail here */
+ for (i = 0; i < 4; i++) {
+ if (part_table.partitions[i].type == PARTITION_GPT)
+ return 0;
+ }
+
+ /* 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)
+ return 0;
+
+#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))
+ return 0;
+#endif /* ENABLE_PC98 */
+
+ return 1;
+}
+
+static PedDisk*
+msdos_alloc (const PedDevice* dev)
+{
+ PedDisk* disk;
+ PED_ASSERT (dev != NULL, return NULL);
+
+ disk = _ped_disk_alloc ((PedDevice*)dev, &msdos_disk_type);
+ if (disk)
+ disk->disk_specific = NULL;
+ 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;
+ new_disk->disk_specific = NULL;
+ return new_disk;
+}
+
+static void
+msdos_free (PedDisk* disk)
+{
+ PED_ASSERT (disk != NULL, return);
+
+ _ped_disk_free (disk);
+}
+
+#ifndef DISCOVER_ONLY
+static int
+msdos_clobber (PedDevice* dev)
+{
+ DosRawTable table;
+
+ PED_ASSERT (dev != NULL, return 0);
+ PED_ASSERT (msdos_probe (dev), return 0);
+
+ if (!ped_device_read (dev, &table, 0, 1))
+ return 0;
+ table.magic = 0;
+ return ped_device_write (dev, (void*) &table, 0, 1);
+}
+#endif /* !DISCOVER_ONLY */
+
+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, return 0);
+ PED_ASSERT (chs != NULL, return 0);
+
+ 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)
+ * (dev->sector_size / 512);
+}
+
+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, return);
+ PED_ASSERT (chs != NULL, return);
+
+ if (!bios_geom)
+ bios_geom = &dev->bios_geom;
+
+ sector /= (dev->sector_size / 512);
+
+ 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, return 0);
+ PED_ASSERT (raw_part != NULL, return 0);
+
+ 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, return 0);
+ PED_ASSERT (raw_part != NULL, return 0);
+
+ 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, return 0);
+ PED_ASSERT (raw_part != NULL, return 0);
+
+ return offset
+ + PED_LE32_TO_CPU (raw_part->start)
+ * (disk->dev->sector_size / 512);
+}
+
+static PedSector
+linear_end (const PedDisk* disk, const DosRawPartition* raw_part,
+ PedSector offset)
+{
+ PED_ASSERT (disk != NULL, return 0);
+ PED_ASSERT (raw_part != NULL, return 0);
+
+ return linear_start (disk, raw_part, offset)
+ + (PED_LE32_TO_CPU (raw_part->length) - 1)
+ * (disk->dev->sector_size / 512);
+}
+
+#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, return 0);
+ PED_ASSERT (part->disk != NULL, return 0);
+ PED_ASSERT (part->disk_specific != NULL, return 0);
+ 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, return 0);
+
+ 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, return 0);
+ PED_ASSERT (part != NULL, return 0);
+ PED_ASSERT (part->disk != NULL, return 0);
+ PED_ASSERT (part->disk->dev != NULL, return 0);
+ PED_ASSERT (part->disk->dev->sector_size % PED_SECTOR_SIZE_DEFAULT == 0,
+ return 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:
+ ped_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, return 0);
+ PED_ASSERT (part->disk_specific != NULL, return 0);
+ PED_ASSERT (bios_geom != NULL, return 0);
+
+ 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;
+
+ PED_ASSERT (cyl_size > 0, return 0);
+ PED_ASSERT (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 */
+ head_size = 0;
+ PED_ASSERT (0, return 0);
+ }
+
+ PED_ASSERT (head_size > 0, return 0);
+ PED_ASSERT (head_size <= 63, return 0);
+
+ cylinders = part->disk->dev->length / cyl_size;
+ heads = cyl_size / head_size;
+ sectors = head_size;
+
+ PED_ASSERT (heads > 0, return 0);
+ PED_ASSERT (heads < 256, return 0);
+
+ PED_ASSERT (sectors > 0, return 0);
+ PED_ASSERT (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++;
+
+ PED_ASSERT ((c * heads + h) * sectors + s == a, return 0);
+ PED_ASSERT ((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, return);
+ PED_ASSERT (part->disk != NULL, return);
+ PED_ASSERT (bios_geom != NULL, return);
+
+ 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, return);
+ 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, return 0);
+
+ 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, return 0);
+
+ 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, return 0);
+
+ 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, return NULL);
+ PED_ASSERT (raw_part != NULL, return 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->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;
+ PedConstraint* constraint_exact;
+
+ PED_ASSERT (disk != NULL, return 0);
+ PED_ASSERT (disk->dev != NULL, return 0);
+
+ if (!ped_device_read (disk->dev, (void*) &table, sector, 1))
+ goto error;
+
+ /* weird: empty extended partitions are filled with 0xf6 by PM */
+ if (is_extended_table
+ && PED_LE16_TO_CPU (table.magic) == PARTITION_MAGIC_MAGIC)
+ return 1;
+
+#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;
+ return 1;
+ }
+#endif
+
+ /* parse the partitions from this table */
+ for (i = 0; i < 4; 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);
+
+ constraint_exact = ped_constraint_exact (&part->geom);
+ if (!ped_disk_add_partition (disk, part, constraint_exact))
+ goto error;
+ ped_constraint_destroy (constraint_exact);
+
+ /* 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 < 4; 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;
+ }
+ }
+
+ return 1;
+
+error:
+ ped_disk_delete_all (disk);
+ return 0;
+}
+
+static int
+msdos_read (PedDisk* disk)
+{
+ PED_ASSERT (disk != NULL, return 0);
+ PED_ASSERT (disk->dev != NULL, return 0);
+
+ 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, return 0);
+ PED_ASSERT (part != NULL, return 0);
+
+ 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)
+ / (part->disk->dev->sector_size / 512));
+ raw_part->length = PED_CPU_TO_LE32 (part->geom.length
+ / (part->disk->dev->sector_size / 512));
+
+ 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, return 0);
+ PED_ASSERT (geom != NULL, return 0);
+ PED_ASSERT (geom->dev != NULL, return 0);
+
+ raw_part->boot_ind = 0;
+ raw_part->type = PARTITION_DOS_EXT;
+ raw_part->start = PED_CPU_TO_LE32 ((geom->start - offset)
+ / (geom->dev->sector_size / 512));
+ raw_part->length = PED_CPU_TO_LE32 (geom->length
+ / (geom->dev->sector_size / 512));
+
+ 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)
+{
+ DosRawTable table;
+ PedPartition* part;
+ PedSector lba_offset;
+
+ PED_ASSERT (disk != NULL, return 0);
+ PED_ASSERT (ped_disk_extended_partition (disk) != NULL, return 0);
+ PED_ASSERT (logical != NULL, return 0);
+
+ lba_offset = ped_disk_extended_partition (disk)->geom.start;
+
+ memset (&table, 0, sizeof (DosRawTable));
+ table.magic = PED_CPU_TO_LE16 (MSDOS_MAGIC);
+
+ if (!fill_raw_part (&table.partitions[0], logical, sector))
+ return 0;
+
+ 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)
+ return 0;
+ 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))
+ return 0;
+ }
+
+ return ped_device_write (disk->dev, (void*) &table, sector, 1);
+}
+
+static int
+write_empty_table (const PedDisk* disk, PedSector sector)
+{
+ DosRawTable table;
+
+ PED_ASSERT (disk != NULL, return 0);
+
+ memset (&table, 0, sizeof (DosRawTable));
+ 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, return 0);
+
+ 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)
+{
+ DosRawTable table;
+ PedPartition* part;
+ int i;
+
+ PED_ASSERT (disk != NULL, return 0);
+ PED_ASSERT (disk->dev != NULL, return 0);
+
+ ped_device_read (disk->dev, &table, 0, 1);
+
+ 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 (DosRawPartition) * 4);
+ table.magic = PED_CPU_TO_LE16 (MSDOS_MAGIC);
+
+ for (i=1; i<=4; i++) {
+ part = ped_disk_get_partition (disk, i);
+ if (!part)
+ continue;
+
+ if (!fill_raw_part (&table.partitions [i - 1], part, 0))
+ return 0;
+
+ if (part->type == PED_PARTITION_EXTENDED) {
+ if (!write_extended_partitions (disk))
+ return 0;
+ }
+ }
+
+ if (!ped_device_write (disk->dev, (void*) &table, 0, 1))
+ return 0;
+ return ped_device_sync (disk->dev);
+}
+#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->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;
+
+ ped_free (dos_data);
+error_free_part:
+ ped_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->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, return);
+
+ if (ped_partition_is_active (part)) {
+ DosPartitionData* dos_data;
+ dos_data = (DosPartitionData*) part->disk_specific;
+ if (dos_data->orig)
+ ped_free (dos_data->orig);
+ ped_free (part->disk_specific);
+ }
+ ped_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->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->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, "sun-ufs"))
+ dos_data->system = PARTITION_SUN_UFS;
+ else if (!strcmp (fs_type->name, "linux-swap"))
+ dos_data->system = PARTITION_LINUX_SWAP;
+ else
+ dos_data->system = PARTITION_LINUX;
+
+ return 1;
+}
+
+static int
+msdos_partition_set_flag (PedPartition* part,
+ PedPartitionFlag flag, int state)
+{
+ PedDisk* disk;
+ PedPartition* walk;
+ DosPartitionData* dos_data;
+
+ PED_ASSERT (part != NULL, return 0);
+ PED_ASSERT (part->disk_specific != NULL, return 0);
+ PED_ASSERT (part->disk != NULL, return 0);
+
+ 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_RAID:
+ if (state) {
+ dos_data->hidden = 0;
+ dos_data->lvm = 0;
+ dos_data->palo = 0;
+ dos_data->prep = 0;
+ }
+ dos_data->raid = state;
+ return ped_partition_set_system (part, part->fs_type);
+
+ case PED_PARTITION_LVM:
+ if (state) {
+ dos_data->hidden = 0;
+ dos_data->raid = 0;
+ dos_data->palo = 0;
+ dos_data->prep = 0;
+ }
+ 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) {
+ dos_data->hidden = 0;
+ dos_data->raid = 0;
+ dos_data->lvm = 0;
+ }
+ dos_data->palo = state;
+ return ped_partition_set_system (part, part->fs_type);
+
+ case PED_PARTITION_PREP:
+ if (state) {
+ dos_data->hidden = 0;
+ dos_data->raid = 0;
+ dos_data->lvm = 0;
+ }
+ 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, return 0);
+ PED_ASSERT (part->disk_specific != NULL, return 0);
+
+ dos_data = part->disk_specific;
+ switch (flag) {
+ case PED_PARTITION_HIDDEN:
+ return dos_data->hidden;
+
+ case PED_PARTITION_BOOT:
+ return dos_data->boot;
+
+ 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:
+ case PED_PARTITION_BOOT:
+ case PED_PARTITION_RAID:
+ case PED_PARTITION_LVM:
+ case PED_PARTITION_LBA:
+ case PED_PARTITION_PALO:
+ case PED_PARTITION_PREP:
+ 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 {
+ if (!ped_geometry_init (&start_geom, dev, cylinder_size,
+ dev->length - cylinder_size))
+ 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, return 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;
+ ped_geometry_set_start (min_geom, walk->geom.start - 1 * head_size);
+
+ 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 ride 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, return 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, return 0);
+
+ 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, return 0);
+ PED_ASSERT (part->disk_specific != NULL, return 0);
+
+ 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);
+
+ if (_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, return 0);
+
+ 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 0);
+
+ return add_metadata_part (disk, PED_PARTITION_LOGICAL,
+ metadata_start, metadata_end);
+}
+
+static PedPartition*
+get_last_part (const PedDisk* disk)
+{
+ PedPartition* first_part = disk->part_list;
+ PedPartition* walk;
+
+ if (!first_part)
+ return NULL;
+ for (walk = first_part; walk->next; walk = walk->next);
+ return walk;
+}
+
+/* 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;
+ PedPartition* first_part = disk->part_list;
+ PedPartition* last_part = get_last_part (disk);
+ PedSector start, end;
+
+ if (!first_part)
+ return 1;
+
+ start = 0;
+ end = PED_MIN (dev->bios_geom.sectors - 1, first_part->geom.start - 1);
+ if (!add_metadata_part (disk, PED_PARTITION_NORMAL, start, end))
+ return 0;
+
+ start = PED_MAX (last_part->geom.end + 1,
+ ped_round_down_to (dev->length, cyl_size));
+ end = dev->length - 1;
+ if (start < end) {
+ if (!add_metadata_part (disk, PED_PARTITION_NORMAL, start, end))
+ return 0;
+ }
+
+ return 1;
+}
+
+static int
+msdos_alloc_metadata (PedDisk* disk)
+{
+ PedPartition* ext_part;
+
+ PED_ASSERT (disk != NULL, return 0);
+ PED_ASSERT (disk->dev != NULL, return 0);
+
+ 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<=4; 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, return 0);
+ PED_ASSERT (part->disk != NULL, return 0);
+
+ /* don't re-number a primary partition */
+ if (part->num != -1 && part->num <= 4)
+ 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 4;
+}
+
+static PedDiskOps msdos_disk_ops = {
+ probe: msdos_probe,
+#ifndef DISCOVER_ONLY
+ clobber: msdos_clobber,
+#else
+ clobber: NULL,
+#endif
+ alloc: msdos_alloc,
+ duplicate: msdos_duplicate,
+ free: msdos_free,
+ read: msdos_read,
+#ifndef DISCOVER_ONLY
+ write: msdos_write,
+#else
+ write: NULL,
+#endif
+
+ partition_new: msdos_partition_new,
+ partition_duplicate: msdos_partition_duplicate,
+ partition_destroy: msdos_partition_destroy,
+ partition_set_system: msdos_partition_set_system,
+ partition_set_flag: msdos_partition_set_flag,
+ partition_get_flag: msdos_partition_get_flag,
+ partition_is_flag_available: msdos_partition_is_flag_available,
+ partition_set_name: NULL,
+ partition_get_name: NULL,
+ partition_align: msdos_partition_align,
+ partition_enumerate: msdos_partition_enumerate,
+
+ alloc_metadata: msdos_alloc_metadata,
+ get_max_primary_partition_count:
+ msdos_get_max_primary_partition_count
+};
+
+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, return);
+ PED_ASSERT (sizeof (DosRawTable) == 512, return);
+
+ ped_disk_type_register (&msdos_disk_type);
+}
+
+void
+ped_disk_msdos_done ()
+{
+ ped_disk_type_unregister (&msdos_disk_type);
+}
diff --git a/parted-1.8.7/libparted/labels/dvh.c b/parted-1.8.7/libparted/labels/dvh.c
new file mode 100644
index 0000000..dce8e5c
--- /dev/null
+++ b/parted-1.8.7/libparted/labels/dvh.c
@@ -0,0 +1,912 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2001, 2002, 2005, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#include <config.h>
+#include <parted/parted.h>
+#include <parted/debug.h>
+#include <parted/endian.h>
+
+#include "dvh.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;
+
+static int
+dvh_probe (const PedDevice *dev)
+{
+ struct volume_header vh;
+
+ if (dev->sector_size != 512)
+ return 0;
+
+ if (!ped_device_read (dev, &vh, 0, 1))
+ return 0;
+
+ return PED_BE32_TO_CPU (vh.vh_magic) == VHMAGIC;
+}
+
+#ifndef DISCOVER_ONLY
+static int
+dvh_clobber (PedDevice* dev)
+{
+ char zeros[512];
+
+ memset (zeros, 0, 512);
+ return ped_device_write (dev, zeros, 0, 1);
+}
+#endif /* !DISCOVER_ONLY */
+
+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:
+ ped_free (disk->disk_specific);
+error_free_disk:
+ ped_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, goto error);
+
+ new_disk = _ped_disk_alloc (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:
+ ped_free (new_disk);
+error:
+ return NULL;
+}
+
+static void
+dvh_free (PedDisk* disk)
+{
+ ped_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, return 0);
+
+ ped_disk_delete_all (disk);
+
+ if (!ped_device_read (disk->dev, &vh, 0, 1))
+ return 0;
+
+ 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, return 0);
+
+ 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;
+ PedConstraint* constraint_exact;
+
+ 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);
+
+ constraint_exact = ped_constraint_exact (&part->geom);
+ if (!ped_disk_add_partition(disk, part, constraint_exact)) {
+ ped_partition_destroy (part);
+ goto error_delete_all;
+ }
+ ped_constraint_destroy (constraint_exact);
+ }
+
+ 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;
+ PedConstraint* constraint_exact;
+
+ 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);
+
+ constraint_exact = ped_constraint_exact (&part->geom);
+ if (!ped_disk_add_partition(disk, part, constraint_exact)) {
+ ped_partition_destroy (part);
+ goto error_delete_all;
+ }
+ ped_constraint_destroy (constraint_exact);
+ }
+#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, return);
+
+ 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, return);
+
+ 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, return 0);
+
+ _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 ped_device_write (disk->dev, &vh, 0, 1)
+ && 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, return);
+ ped_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,
+ _("Only logical partitions (boot files) have a 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, return 0);
+
+ 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, return 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 int
+dvh_alloc_metadata (PedDisk* disk)
+{
+ PedPartition* part;
+ PedPartition* extended_part;
+ PedConstraint* constraint_exact;
+ PedPartitionType metadata_type;
+ PED_ASSERT(disk != NULL, return 0);
+
+ /* 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;
+
+ constraint_exact = ped_constraint_exact (&part->geom);
+ if (!ped_disk_add_partition (disk, part, constraint_exact))
+ goto error_destroy_part;
+ ped_constraint_destroy (constraint_exact);
+ return 1;
+
+ ped_constraint_destroy (constraint_exact);
+error_destroy_part:
+ ped_partition_destroy (part);
+error:
+ return 0;
+}
+
+static PedDiskOps dvh_disk_ops = {
+ probe: dvh_probe,
+#ifndef DISCOVER_ONLY
+ clobber: dvh_clobber,
+#else
+ clobber: NULL,
+#endif
+ alloc: dvh_alloc,
+ duplicate: dvh_duplicate,
+ free: dvh_free,
+ read: dvh_read,
+#ifndef DISCOVER_ONLY
+ write: dvh_write,
+#else
+ write: NULL,
+#endif
+
+ partition_new: dvh_partition_new,
+ partition_duplicate: dvh_partition_duplicate,
+ partition_destroy: dvh_partition_destroy,
+ partition_set_system: dvh_partition_set_system,
+ partition_set_flag: dvh_partition_set_flag,
+ partition_get_flag: dvh_partition_get_flag,
+ partition_is_flag_available: dvh_partition_is_flag_available,
+ partition_set_name: dvh_partition_set_name,
+ partition_get_name: dvh_partition_get_name,
+ partition_align: dvh_partition_align,
+ partition_enumerate: dvh_partition_enumerate,
+
+ alloc_metadata: dvh_alloc_metadata,
+ get_max_primary_partition_count:
+ dvh_get_max_primary_partition_count
+};
+
+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, return);
+
+ ped_disk_type_register (&dvh_disk_type);
+}
+
+void
+ped_disk_dvh_done ()
+{
+ ped_disk_type_unregister (&dvh_disk_type);
+}
diff --git a/parted-1.8.7/libparted/labels/dvh.h b/parted-1.8.7/libparted/labels/dvh.h
new file mode 100644
index 0000000..a075da8
--- /dev/null
+++ b/parted-1.8.7/libparted/labels/dvh.h
@@ -0,0 +1,179 @@
+/*
+ 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#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/parted-1.8.7/libparted/labels/efi_crc32.c b/parted-1.8.7/libparted/labels/efi_crc32.c
new file mode 100644
index 0000000..327fb2d
--- /dev/null
+++ b/parted-1.8.7/libparted/labels/efi_crc32.c
@@ -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/parted-1.8.7/libparted/labels/fdasd.c b/parted-1.8.7/libparted/labels/fdasd.c
new file mode 100644
index 0000000..198bce2
--- /dev/null
+++ b/parted-1.8.7/libparted/labels/fdasd.c
@@ -0,0 +1,1051 @@
+/*
+ * 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 <parted/vtoc.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;
+
+ if (anchor->f4 != NULL)
+ free(anchor->f4);
+
+ if (anchor->f5 != NULL)
+ free(anchor->f5);
+
+ if (anchor->f7 != NULL)
+ free(anchor->f7);
+
+ if (anchor->vlabel != NULL)
+ 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 * str)
+{
+ PDEBUG
+ char error[2*LINE_LENGTH], *message = error;
+
+ switch (why) {
+ case unable_to_open_disk:
+ sprintf(error, _("%s open error\n%s\n"),
+ FDASD_ERROR, str);
+ break;
+ case unable_to_seek_disk:
+ sprintf(error, _("%s seek error\n%s\n"), FDASD_ERROR, str);
+ break;
+ case unable_to_read_disk:
+ sprintf(error, _("%s read error\n%s\n"), FDASD_ERROR, str);
+ break;
+ case read_only_disk:
+ sprintf(error, _("%s write error\n%s\n"), FDASD_ERROR, str);
+ break;
+ case unable_to_ioctl:
+ sprintf(error, _("%s IOCTL error\n%s\n"), FDASD_ERROR, str);
+ break;
+ case api_version_mismatch:
+ sprintf(error, _("%s API version mismatch\n%s\n"), FDASD_ERROR,str);
+ break;
+ case wrong_disk_type:
+ sprintf(error, _("%s Unsupported disk type\n%s\n"),
+ FDASD_ERROR, str);
+ break;
+ case wrong_disk_format:
+ sprintf(error, _("%s Unsupported disk format\n%s\n"),
+ FDASD_ERROR, str);
+ break;
+ case disk_in_use:
+ sprintf(error, _("%s Disk in use\n%s\n"), FDASD_ERROR, str);
+ break;
+ case config_syntax_error:
+ sprintf(error, _("%s Config file syntax error\n%s\n"),
+ FDASD_ERROR, str);
+ break;
+ case vlabel_corrupted:
+ sprintf(error, _("%s Volume label is corrupted.\n%s\n"),
+ FDASD_ERROR, str);
+ break;
+ case dsname_corrupted:
+ sprintf(error, _("%s a data set name is corrupted.\n%s\n"),
+ FDASD_ERROR, str);
+ break;
+ case malloc_failed:
+ sprintf(error, _("%s space allocation\n%s\n"),
+ FDASD_ERROR, str);
+ break;
+ case device_verification_failed:
+ sprintf(error, _("%s device verification failed\n" \
+ "The specified device is not a valid DASD device\n"),
+ FDASD_ERROR);
+ break;
+ default:
+ sprintf(error, _("%s Fatal error\n%s\n"), FDASD_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 memory allocation failed.");
+
+ anc->f5 = malloc(sizeof(format5_label_t));
+ if (anc->f5 == NULL)
+ fdasd_error(anc, malloc_failed,
+ "FMT5 DSCB memory allocation failed.");
+
+ anc->f7 = malloc(sizeof(format7_label_t));
+ if (anc->f7 == NULL)
+ fdasd_error(anc, malloc_failed,
+ "FMT7 DSCB memory allocation failed.");
+
+ 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,
+ "Volume label memory allocation failed.");
+ 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,
+ "Partition info memory allocation failed.");
+ 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 memory allocation failed.");
+ 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) {
+ if (strncmp(anc->vlabel->volkey,vtoc_ebcdic_enc("LNX1",str,4),4) == 0)
+ return 0;
+ fdasd_error(anc, wrong_disk_format, "Invalid VTOC");
+ } else {
+ fdasd_process_valid_vtoc (anc, b, fd);
+ }
+
+ return 0;
+}
+
+/*
+ * 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) {
+ 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[LINE_LENGTH];
+
+ 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 (fdasd_anchor_t *anc, int f)
+{
+ PDEBUG
+ int blksize = 0;
+ dasd_information_t dasd_info;
+ char s[LINE_LENGTH];
+
+ 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.");
+
+ if (strncmp(dasd_info.type, "ECKD", 4) != 0) {
+ sprintf(s, "This is not an ECKD disk! This disk type " \
+ "is not supported!");
+ fdasd_error(anc,wrong_disk_type, s);
+ }
+
+ 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 partitons 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/parted-1.8.7/libparted/labels/gpt.c b/parted-1.8.7/libparted/labels/gpt.c
new file mode 100644
index 0000000..86c31c7
--- /dev/null
+++ b/parted-1.8.7/libparted/labels/gpt.c
@@ -0,0 +1,1504 @@
+/*
+ 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, 2002, 2003, 2005, 2006, 2007
+ 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#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>
+
+#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 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_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 }})
+
+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 Reserved:47;
+ uint64_t GuidSpecific:16;
+#else
+# warning "Using crippled partition entry type"
+ uint32_t RequiredToFunction:1;
+ uint32_t Reserved:32;
+ 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 hp_service;
+ int hidden;
+ int msftres;
+} 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, return 0);
+
+ 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)
+{
+ PED_ASSERT (pth != NULL, return);
+ PED_ASSERT (pth->Reserved2 != NULL, return);
+
+ ped_free (pth->Reserved2);
+ ped_free (pth);
+}
+
+static uint8_t*
+pth_get_raw (const PedDevice* dev, const GuidPartitionTableHeader_t* pth)
+{
+ uint8_t* pth_raw = ped_malloc (pth_get_size (dev));
+ int size_static = pth_get_size_static (dev);
+
+ PED_ASSERT (pth != NULL, return 0);
+ PED_ASSERT (pth->Reserved2 != NULL, return 0);
+
+ 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, return);
+ 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);
+}
+
+static inline uint32_t
+pth_crc32(const PedDevice* dev, const GuidPartitionTableHeader_t* pth)
+{
+ uint8_t* pth_raw = pth_get_raw (dev, pth);
+ uint32_t crc32 = 0;
+
+ PED_ASSERT (dev != NULL, return 0);
+ PED_ASSERT (pth != NULL, return 0);
+
+ crc32 = efi_crc32 (pth_raw, pth_get_size_static (dev));
+
+ ped_free (pth_raw);
+
+ return crc32;
+}
+
+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, return 0);
+
+ 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;
+ uint8_t* pth_raw = ped_malloc (pth_get_size (dev));
+ LegacyMBR_t legacy_mbr;
+ int gpt_sig_found = 0;
+
+ PED_ASSERT (dev != NULL, return 0);
+
+ 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;
+ }
+
+ ped_free (pth_raw);
+
+ if (gpt)
+ pth_free (gpt);
+
+
+ if (!gpt_sig_found)
+ return 0;
+
+ if (ped_device_read(dev, &legacy_mbr, 0, GPT_HEADER_SECTORS)) {
+ if (!_pmbr_is_valid (&legacy_mbr)) {
+ 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)
+ return 0;
+ }
+ }
+
+ return 1;
+}
+
+#ifndef DISCOVER_ONLY
+/* writes zeros to the PMBR and the primary and alternate GPTHs and PTEs */
+static int
+gpt_clobber(PedDevice * dev)
+{
+ LegacyMBR_t pmbr;
+ uint8_t* zeroed_pth_raw = ped_malloc (pth_get_size (dev));
+ uint8_t* pth_raw = ped_malloc (pth_get_size (dev));
+ GuidPartitionTableHeader_t* gpt;
+
+ PED_ASSERT (dev != NULL, return 0);
+
+ memset(&pmbr, 0, sizeof(pmbr));
+ memset(zeroed_pth_raw, 0, pth_get_size (dev));
+
+ /*
+ * TO DISCUSS: check whether checksum is correct?
+ * If not, we might get a wrong AlternateLBA field and destroy
+ * one sector of random data.
+ */
+ if (!ped_device_read(dev, pth_raw,
+ GPT_PRIMARY_HEADER_LBA, GPT_HEADER_SECTORS))
+ goto error_free;
+
+ gpt = pth_new_from_raw (dev, pth_raw);
+
+ if (!ped_device_write(dev, &pmbr, GPT_PMBR_LBA, GPT_PMBR_SECTORS))
+ goto error_free_with_gpt;
+ if (!ped_device_write(dev, &zeroed_pth_raw,
+ GPT_PRIMARY_HEADER_LBA, GPT_HEADER_SECTORS))
+ goto error_free_with_gpt;
+ if (!ped_device_write(dev, &zeroed_pth_raw, dev->length - GPT_HEADER_SECTORS,
+ GPT_HEADER_SECTORS))
+ goto error_free_with_gpt;
+
+ if ((PedSector) PED_LE64_TO_CPU (gpt->AlternateLBA) < dev->length - 1) {
+ if (!ped_device_write(dev, gpt,
+ PED_LE64_TO_CPU (gpt->AlternateLBA),
+ GPT_HEADER_SECTORS))
+ return 0;
+ }
+
+ pth_free (gpt);
+
+ return 1;
+
+error_free_with_gpt:
+ pth_free (gpt);
+error_free:
+ ped_free (pth_raw);
+ ped_free (zeroed_pth_raw);
+ return 0;
+}
+#endif /* !DISCOVER_ONLY */
+
+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:
+ ped_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);
+ ped_free (disk->disk_specific);
+ _ped_disk_free (disk);
+}
+
+static int
+_header_is_valid (const PedDevice* dev, GuidPartitionTableHeader_t* gpt)
+{
+ uint32_t crc, origcrc;
+
+ if (PED_LE64_TO_CPU (gpt->Signature) != GPT_HEADER_SIGNATURE)
+ return 0;
+ if (PED_LE32_TO_CPU (gpt->HeaderSize)
+ > pth_get_size_static (dev))
+ return 0;
+
+ origcrc = gpt->HeaderCRC32;
+ gpt->HeaderCRC32 = 0;
+ crc = pth_crc32 (dev, gpt);
+ gpt->HeaderCRC32 = origcrc;
+
+ return crc == PED_LE32_TO_CPU (origcrc);
+}
+
+static int
+_read_header (const PedDevice* dev, GuidPartitionTableHeader_t** gpt,
+ PedSector where)
+{
+ uint8_t* pth_raw = ped_malloc (pth_get_size (dev));
+
+ PED_ASSERT (dev != NULL, return 0);
+
+ if (!ped_device_read (dev, pth_raw, where, GPT_HEADER_SECTORS)) {
+ ped_free (pth_raw);
+ return 0;
+ }
+
+ *gpt = pth_new_from_raw (dev, pth_raw);
+
+ ped_free (pth_raw);
+
+ if (_header_is_valid (dev, *gpt))
+ return 1;
+
+ pth_free (*gpt);
+ return 0;
+}
+
+static int
+_parse_header (PedDisk* disk, 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;
+
+ PED_ASSERT (_header_is_valid (disk->dev, gpt), return 0);
+
+#ifndef DISCOVER_ONLY
+ if (PED_LE32_TO_CPU (gpt->Revision) > GPT_HEADER_REVISION_V1_02
+ || PED_LE32_TO_CPU (gpt->HeaderSize) != pth_get_size_static (
+ disk->dev)) {
+ 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 tell us! bug-parted@gnu.org"),
+ 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
+ = PED_CPU_TO_LE64 (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, return 0);
+ PED_ASSERT (last_usable <= disk->dev->length, return 0);
+
+ PED_ASSERT (last_usable_if_grown > first_usable, return 0);
+ PED_ASSERT (last_usable_if_grown <= disk->dev->length, return 0);
+
+ 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, return 0);
+ PED_ASSERT (gpt_disk_data->entry_count <= 8192, return 0);
+
+ 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, 0, 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 = 0;
+
+ if (pte->Attributes.RequiredToFunction & 0x1)
+ gpt_part_data->hidden = 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_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;
+
+ return part;
+}
+
+/************************************************************
+ * 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;
+ GuidPartitionTableHeader_t* gpt;
+ GuidPartitionEntry_t* ptes;
+ int ptes_size;
+ 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;
+
+ if (_read_header (disk->dev, &gpt, 1)) {
+ PED_ASSERT ((PedSector) PED_LE64_TO_CPU (gpt->AlternateLBA)
+ <= disk->dev->length - 1, goto error_free_gpt);
+ if ((PedSector) PED_LE64_TO_CPU (gpt->AlternateLBA)
+ < disk->dev->length - 1) {
+ char* zeros = ped_malloc (pth_get_size (disk->dev));
+
+#ifndef DISCOVER_ONLY
+ if (ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_FIX | PED_EXCEPTION_CANCEL,
+ _("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)?"))
+ == PED_EXCEPTION_CANCEL)
+ goto error_free_gpt;
+
+ write_back = 1;
+ memset (zeros, 0, disk->dev->sector_size);
+ ped_device_write (disk->dev, zeros,
+ PED_LE64_TO_CPU (gpt->AlternateLBA),
+ 1);
+#endif /* !DISCOVER_ONLY */
+ }
+ } else { /* primary GPT *not* ok */
+ int alternate_ok = 0;
+
+#ifndef DISCOVER_ONLY
+ write_back = 1;
+#endif
+
+ if ((PedSector) PED_LE64_TO_CPU (gpt->AlternateLBA)
+ < disk->dev->length - 1) {
+ alternate_ok = _read_header (disk->dev, &gpt,
+ PED_LE64_TO_CPU(gpt->AlternateLBA));
+ }
+ if (!alternate_ok) {
+ alternate_ok = _read_header (disk->dev, &gpt,
+ disk->dev->length - 1);
+ }
+
+ if (alternate_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;
+ } else {
+ 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;
+ }
+ }
+
+ if (!_parse_header (disk, gpt, &write_back))
+ goto error_free_gpt;
+
+
+ ptes_size = sizeof (GuidPartitionEntry_t) * gpt_disk_data->entry_count;
+ ptes = (GuidPartitionEntry_t*) ped_malloc (ptes_size);
+ if (!ped_device_read (disk->dev, ptes,
+ PED_LE64_TO_CPU(gpt->PartitionEntryLBA),
+ ptes_size / disk->dev->sector_size))
+ goto error_free_ptes;
+
+ for (i = 0; i < gpt_disk_data->entry_count; i++) {
+ PedPartition* part;
+ PedConstraint* constraint_exact;
+
+ if (!guid_cmp (ptes[i].PartitionTypeGuid, UNUSED_ENTRY_GUID))
+ continue;
+
+ part = _parse_part_entry (disk, &ptes[i]);
+ if (!part)
+ goto error_delete_all;
+
+ part->fs_type = ped_file_system_probe (&part->geom);
+ part->num = i + 1;
+
+ constraint_exact = ped_constraint_exact (&part->geom);
+ if (!ped_disk_add_partition(disk, part, constraint_exact)) {
+ ped_partition_destroy (part);
+ goto error_delete_all;
+ }
+ ped_constraint_destroy (constraint_exact);
+ }
+ ped_free (ptes);
+
+#ifndef DISCOVER_ONLY
+ if (write_back)
+ ped_disk_commit_to_dev (disk);
+#endif
+
+ return 1;
+
+error_delete_all:
+ ped_disk_delete_all (disk);
+error_free_ptes:
+ ped_free (ptes);
+error_free_gpt:
+ pth_free (gpt);
+error:
+ return 0;
+}
+
+#ifndef DISCOVER_ONLY
+/* Writes the protective MBR (to keep DOS happy) */
+static int
+_write_pmbr (PedDevice * dev)
+{
+ LegacyMBR_t pmbr;
+
+ memset(&pmbr, 0, sizeof(pmbr));
+ 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);
+
+ return ped_device_write (dev, &pmbr, GPT_PMBR_LBA, GPT_PMBR_SECTORS);
+}
+
+static void
+_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);
+ gpt->HeaderCRC32 = PED_CPU_TO_LE32 (pth_crc32 (disk->dev, gpt));
+}
+
+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, return);
+
+ 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;
+
+ 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 = ped_malloc (pth_get_size (disk->dev));
+ GuidPartitionTableHeader_t* gpt;
+ PedPartition* part;
+ int ptes_size;
+
+ PED_ASSERT (disk != NULL, goto error);
+ PED_ASSERT (disk->dev != NULL, goto error);
+ PED_ASSERT (disk->disk_specific != NULL, goto error);
+
+ 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 */
+ _generate_header (disk, 0, ptes_crc, &gpt);
+ pth_raw = pth_get_raw (disk->dev, gpt);
+ if (!ped_device_write (disk->dev, pth_raw, 1, 1))
+ 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 */
+ _generate_header (disk, 1, ptes_crc, &gpt);
+ pth_raw = pth_get_raw (disk->dev, gpt);
+ if (!ped_device_write (disk->dev, pth_raw, disk->dev->length - 1, 1))
+ 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;
+
+ ped_free (ptes);
+ return ped_device_sync (disk->dev);
+
+error_free_ptes:
+ ped_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, return 0);
+
+ 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->hp_service = 0;
+ gpt_part_data->hidden = 0;
+ gpt_part_data->msftres = 0;
+ uuid_generate ((unsigned char*) &gpt_part_data->uuid);
+ swap_uuid_and_efi_guid((unsigned char*)(&gpt_part_data->uuid));
+ strcpy (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, return);
+ ped_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, return 0);
+
+ 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->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 (fs_type) {
+ if (strncmp (fs_type->name, "fat", 3) == 0
+ || strcmp (fs_type->name, "ntfs") == 0) {
+ gpt_part_data->type = PARTITION_MSFT_RESERVED_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, return 0);
+ PED_ASSERT(disk->dev != NULL, return 0);
+ PED_ASSERT(disk->disk_specific != NULL, return 0);
+ 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);
+
+ 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, return 0);
+ PED_ASSERT(part->disk_specific != NULL, return 0);
+ 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->hp_service
+ = gpt_part_data->msftres = 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->hp_service
+ = gpt_part_data->msftres = 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->hp_service
+ = gpt_part_data->msftres = 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->msftres = 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->hp_service = 0;
+ return gpt_partition_set_system (part, part->fs_type);
+ case PED_PARTITION_HIDDEN:
+ gpt_part_data->hidden = 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, return 0);
+ 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_HPSERVICE:
+ return gpt_part_data->hp_service;
+ case PED_PARTITION_MSFT_RESERVED:
+ return gpt_part_data->msftres;
+ case PED_PARTITION_HIDDEN:
+ return gpt_part_data->hidden;
+ 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_HPSERVICE:
+ case PED_PARTITION_MSFT_RESERVED:
+ case PED_PARTITION_HIDDEN:
+ 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;
+}
+
+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, return 0);
+
+ 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;
+}
+
+static PedDiskOps gpt_disk_ops = {
+ probe: gpt_probe,
+#ifndef DISCOVER_ONLY
+ clobber: gpt_clobber,
+#else
+ clobber: NULL,
+#endif
+ alloc: gpt_alloc,
+ duplicate: gpt_duplicate,
+ free: gpt_free,
+ read: gpt_read,
+#ifndef DISCOVER_ONLY
+ write: gpt_write,
+#else
+ write: NULL,
+#endif
+ partition_new: gpt_partition_new,
+ partition_duplicate: gpt_partition_duplicate,
+ partition_destroy: gpt_partition_destroy,
+ partition_set_system: gpt_partition_set_system,
+ partition_set_flag: gpt_partition_set_flag,
+ partition_get_flag: gpt_partition_get_flag,
+ partition_is_flag_available: gpt_partition_is_flag_available,
+ partition_set_name: gpt_partition_set_name,
+ partition_get_name: gpt_partition_get_name,
+ partition_align: gpt_partition_align,
+ partition_enumerate: gpt_partition_enumerate,
+ alloc_metadata: gpt_alloc_metadata,
+ get_max_primary_partition_count: gpt_get_max_primary_partition_count
+};
+
+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_ASSERT (sizeof (GuidPartitionEntryAttributes_t) == 8, return);
+ PED_ASSERT (sizeof (GuidPartitionEntry_t) == 128, return);
+
+ ped_disk_type_register (&gpt_disk_type);
+}
+
+void
+ped_disk_gpt_done()
+{
+ ped_disk_type_unregister (&gpt_disk_type);
+}
diff --git a/parted-1.8.7/libparted/labels/loop.c b/parted-1.8.7/libparted/labels/loop.c
new file mode 100644
index 0000000..9a7e0d6
--- /dev/null
+++ b/parted-1.8.7/libparted/labels/loop.c
@@ -0,0 +1,334 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 1999, 2000, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#include <config.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 */
+
+#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;
+ char buf [512];
+ int result;
+
+ if (dev->sector_size != 512)
+ return 0;
+
+ disk = loop_alloc (dev);
+ if (!disk)
+ goto error;
+
+ if (!ped_device_read (dev, buf, 0, 1))
+ goto error_destroy_disk;
+ if (strncmp (buf, LOOP_SIGNATURE, strlen (LOOP_SIGNATURE)) == 0) {
+ 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;
+}
+
+#ifndef DISCOVER_ONLY
+static int
+loop_clobber (PedDevice* dev)
+{
+ char buf [512];
+ PedSector i = 0;
+
+ PED_ASSERT (dev != NULL, return 0);
+
+ memset (buf, 0, 512);
+
+ while (loop_probe (dev)) {
+ if (!ped_device_write (dev, buf, i++, 1))
+ return 0;
+ }
+ return 1;
+}
+#endif /* !DISCOVER_ONLY */
+
+static PedDisk*
+loop_alloc (const PedDevice* dev)
+{
+ PED_ASSERT (dev != NULL, return 0);
+
+ 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, return);
+
+ _ped_disk_free (disk);
+}
+
+static int
+loop_read (PedDisk* disk)
+{
+ PedDevice* dev = NULL;
+ char buf [512];
+ PedGeometry* geom;
+ PedFileSystemType* fs_type;
+ PedPartition* part;
+ PedConstraint* constraint_any;
+
+ PED_ASSERT (disk != NULL, return 0);
+ dev = disk->dev;
+ constraint_any = ped_constraint_any (dev);
+
+ ped_disk_delete_all (disk);
+
+ if (!ped_device_read (dev, buf, 0, 1))
+ goto error;
+ if (!strncmp (buf, LOOP_SIGNATURE, strlen (LOOP_SIGNATURE)))
+ 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, 0, 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)
+{
+ char buf [512];
+
+ if (ped_disk_get_partition (disk, 1)) {
+ if (!ped_device_read (disk->dev, buf, 0, 1))
+ return 0;
+ if (strncmp (buf, LOOP_SIGNATURE, strlen (LOOP_SIGNATURE)) != 0)
+ return 1;
+ memset (buf, 0, strlen (LOOP_SIGNATURE));
+ return ped_device_write (disk->dev, buf, 0, 1);
+ }
+
+ memset (buf, 0, 512);
+ strcpy (buf, LOOP_SIGNATURE);
+
+ return ped_device_write (disk->dev, buf, 0, 1);
+}
+#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);
+ result->num = part->num;
+ return result;
+}
+
+static void
+loop_partition_destroy (PedPartition* part)
+{
+ ped_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 PedDiskOps loop_disk_ops = {
+ probe: loop_probe,
+#ifndef DISCOVER_ONLY
+ clobber: loop_clobber,
+#else
+ clobber: NULL,
+#endif
+ alloc: loop_alloc,
+ duplicate: loop_duplicate,
+ free: loop_free,
+ read: loop_read,
+#ifndef DISCOVER_ONLY
+ write: loop_write,
+#else
+ write: NULL,
+#endif
+
+ partition_new: loop_partition_new,
+ partition_duplicate: loop_partition_duplicate,
+ partition_destroy: loop_partition_destroy,
+ partition_set_system: loop_partition_set_system,
+ partition_set_flag: loop_partition_set_flag,
+ partition_get_flag: loop_partition_get_flag,
+ partition_is_flag_available: loop_partition_is_flag_available,
+ partition_set_name: NULL,
+ partition_get_name: NULL,
+ partition_align: loop_partition_align,
+ partition_enumerate: loop_partition_enumerate,
+
+ alloc_metadata: loop_alloc_metadata,
+ get_max_primary_partition_count:
+ loop_get_max_primary_partition_count
+};
+
+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/parted-1.8.7/libparted/labels/mac.c b/parted-1.8.7/libparted/labels/mac.c
new file mode 100644
index 0000000..618f70e
--- /dev/null
+++ b/parted-1.8.7/libparted/labels/mac.c
@@ -0,0 +1,1620 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2000, 2002, 2004, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#include <config.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 */
+
+/* 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* 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)
+{
+ MacRawDisk buf;
+
+ PED_ASSERT (dev != NULL, return 0);
+
+ if (dev->sector_size != 512)
+ return 0;
+
+ if (!ped_device_read (dev, &buf, 0, 1))
+ return 0;
+
+ return _check_signature (&buf);
+}
+
+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, 0, 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, return 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;
+ PedPartition* partition_map;
+
+ new_disk = ped_disk_new_fresh (disk->dev, &mac_disk_type);
+ if (!new_disk)
+ goto error;
+
+ new_mac_data = (MacDiskData*) new_disk->disk_specific;
+
+ /* remove the partition map partition - it will be duplicated
+ * later.
+ */
+ 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);
+
+ /* ugly, but C is ugly :p */
+ memcpy (new_mac_data, old_mac_data, sizeof (MacDiskData));
+ return new_disk;
+
+ _ped_disk_free (new_disk);
+error:
+ return NULL;
+}
+
+static void
+mac_free (PedDisk* disk)
+{
+ MacDiskData* mac_disk_data = disk->disk_specific;
+
+ _ped_disk_free (disk);
+ ped_free (mac_disk_data);
+}
+
+#ifndef DISCOVER_ONLY
+static int
+_clobber_part_map (PedDevice* dev)
+{
+ MacRawPartition raw_part;
+ PedSector sector;
+
+ for (sector=1; 1; sector++) {
+ if (!ped_device_read (dev, &raw_part, sector, 1))
+ return 0;
+ if (!_rawpart_check_signature (&raw_part))
+ return 1;
+ memset (&raw_part, 0, 512);
+ if (!ped_device_write (dev, &raw_part, sector, 1))
+ return 0;
+ }
+}
+
+static int
+mac_clobber (PedDevice* dev)
+{
+ MacRawDisk raw_disk;
+
+ if (!ped_device_read (dev, &raw_disk, 0, 1))
+ return 0;
+ if (!_check_signature (&raw_disk))
+ return 0;
+ memset (&raw_disk, 0, 512);
+ if (!ped_device_write (dev, &raw_disk, 0, 1))
+ return 0;
+
+ return _clobber_part_map (dev);
+}
+#endif /* !DISCOVER_ONLY */
+
+static int
+_rawpart_cmp_type (MacRawPartition* raw_part, char* type)
+{
+ return strncasecmp (raw_part->type, type, 32) == 0;
+}
+
+static int
+_rawpart_cmp_name (MacRawPartition* raw_part, char* name)
+{
+ return strncasecmp (raw_part->name, name, 32) == 0;
+}
+
+static int
+_rawpart_is_partition_map (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 (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 (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 (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, 0, 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;
+ MacRawPartition raw_part;
+ int i;
+
+ for (i = 1; i < 64; i *= 2) {
+ if (!ped_device_read (disk->dev, &raw_part, i, 1))
+ return 0;
+ if (_rawpart_check_signature (&raw_part)
+ && !_rawpart_is_void (&raw_part)) {
+ mac_disk_data->ghost_size = i;
+ PED_ASSERT (i <= disk->dev->sector_size / 512,
+ return 0);
+ return 1;
+ }
+ }
+
+#ifndef DISCOVER_ONLY
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("No valid partition map found."));
+#endif
+ return 0;
+}
+
+static int
+mac_read (PedDisk* disk)
+{
+ MacRawDisk raw_disk;
+ MacRawPartition raw_part;
+ MacDiskData* mac_disk_data;
+ PedPartition* part;
+ int num;
+ PedSector ghost_size;
+ PedConstraint* constraint_exact;
+ int last_part_entry_num = 0;
+
+ PED_ASSERT (disk != NULL, return 0);
+
+ mac_disk_data = disk->disk_specific;
+ mac_disk_data->part_map_entry_num = 0; /* 0 == none */
+
+ if (!ped_device_read (disk->dev, &raw_disk, 0, 1))
+ goto error;
+ 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++) {
+ 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);
+ constraint_exact = ped_constraint_exact (&part->geom);
+ if (!ped_disk_add_partition (disk, part, constraint_exact))
+ goto error_delete_all;
+ ped_constraint_destroy (constraint_exact);
+
+ 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);
+ }
+ return 1;
+
+error_delete_all:
+ ped_disk_delete_all (disk);
+error:
+ 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;
+ MacRawPartition ghost_entry;
+ int i;
+
+ memset (&ghost_entry, 0, sizeof (ghost_entry));
+ 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++)
+ memcpy (&part_map [i + (num - 1) * mac_disk_data->ghost_size],
+ &ghost_entry, sizeof (MacRawPartition));
+
+ 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 int
+_generate_raw_part (PedDisk* disk, PedPartition* part,
+ MacRawPartition* part_map, MacDiskData *mac_driverdata)
+{
+ MacDiskData* mac_disk_data;
+ MacPartitionData* mac_part_data;
+ MacRawPartition* part_map_entry;
+ PedSector block_size = disk->dev->sector_size / 512;
+
+ PED_ASSERT (part->num > 0, goto error);
+
+ mac_disk_data = disk->disk_specific;
+ mac_part_data = part->disk_specific;
+
+ part_map_entry = &part_map [part->num * mac_disk_data->ghost_size - 1];
+
+ 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;
+ MacRawPartition* part_map_entry;
+ PedSector block_size = disk->dev->sector_size / 512;
+
+ PED_ASSERT (num > 0, goto error);
+
+ part_map_entry = &part_map [num * mac_disk_data->ghost_size - 1];
+
+ 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;
+ MacRawPartition* part_map_entry;
+
+ PED_ASSERT (num > 0, return 0);
+
+ part_map_entry = &part_map [num * mac_disk_data->ghost_size - 1];
+ 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++) {
+ if (!part_map[i * mac_disk_data->ghost_size - 1].signature)
+ return i;
+ }
+
+ return 0;
+}
+
+static int
+write_block_zero (PedDisk* disk, MacDiskData* mac_driverdata)
+{
+ PedDevice* dev = disk->dev;
+ MacRawDisk raw_disk;
+
+ if (!ped_device_read (dev, &raw_disk, 0, 1))
+ return 0;
+
+ 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));
+
+ return ped_device_write (dev, &raw_disk, 0, 1);
+}
+
+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, return 0);
+ PED_ASSERT (disk->disk_specific != NULL, return 0);
+ PED_ASSERT (disk->dev != NULL, return 0);
+ PED_ASSERT (!disk->update_mode, return 0);
+
+ 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));
+
+ part_map = (MacRawPartition*)
+ ped_malloc (mac_disk_data->part_map_entry_count * 512);
+ if (!part_map)
+ goto error_free_driverdata;
+ memset (part_map, 0, mac_disk_data->part_map_entry_count * 512);
+
+/* 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;
+ ped_free (part_map);
+ return write_block_zero (disk, mac_driverdata);
+
+error_free_part_map:
+ ped_free (part_map);
+error_free_driverdata:
+ ped_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;
+
+ ped_free (mac_data);
+error_free_part:
+ ped_free (part);
+error:
+ return 0;
+}
+
+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, return);
+
+ if (ped_partition_is_active (part))
+ ped_free (part->disk_specific);
+ ped_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 && !strcmp (fs_type->name, "linux-swap"))
+ 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, return 0);
+ PED_ASSERT (part->disk_specific != NULL, return 0);
+
+ 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, return 0);
+ PED_ASSERT (part->disk_specific != NULL, return 0);
+
+ 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, return);
+ PED_ASSERT (part->disk_specific != NULL, return);
+ 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, return NULL);
+ PED_ASSERT (part->disk_specific != NULL, return NULL);
+ mac_data = part->disk_specific;
+
+ return mac_data->volume_name;
+}
+
+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, return 0);
+
+ 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, return 0);
+ PED_ASSERT (part->disk != NULL, return 0);
+
+ 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, return 0);
+
+ 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, return 0);
+
+ 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)
+{
+ MacDiskData* mac_disk_data;
+
+ PED_ASSERT (disk != NULL, return 0);
+ PED_ASSERT (disk->disk_specific != NULL, return 0);
+ PED_ASSERT (disk->dev != NULL, return 0);
+
+ mac_disk_data = disk->disk_specific;
+
+ 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 PedDiskOps mac_disk_ops = {
+ probe: mac_probe,
+#ifndef DISCOVER_ONLY
+ clobber: mac_clobber,
+#else
+ clobber: NULL,
+#endif
+ alloc: mac_alloc,
+ duplicate: mac_duplicate,
+ free: mac_free,
+ read: mac_read,
+#ifndef DISCOVER_ONLY
+ /* FIXME: remove this cast, once mac_write is fixed not to
+ modify its *DISK parameter. */
+ write: (int (*) (const PedDisk*)) mac_write,
+#else
+ write: NULL,
+#endif
+
+ partition_new: mac_partition_new,
+ partition_duplicate: mac_partition_duplicate,
+ partition_destroy: mac_partition_destroy,
+ partition_set_system: mac_partition_set_system,
+ partition_set_flag: mac_partition_set_flag,
+ partition_get_flag: mac_partition_get_flag,
+ partition_is_flag_available: mac_partition_is_flag_available,
+ partition_set_name: mac_partition_set_name,
+ partition_get_name: mac_partition_get_name,
+ partition_align: mac_partition_align,
+ partition_enumerate: mac_partition_enumerate,
+
+ alloc_metadata: mac_alloc_metadata,
+ get_max_primary_partition_count:
+ mac_get_max_primary_partition_count
+};
+
+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, return);
+ PED_ASSERT (sizeof (MacRawDisk) == 512, return);
+
+ ped_disk_type_register (&mac_disk_type);
+}
+
+void
+ped_disk_mac_done ()
+{
+ ped_disk_type_unregister (&mac_disk_type);
+}
+
diff --git a/parted-1.8.7/libparted/labels/pc98.c b/parted-1.8.7/libparted/labels/pc98.c
new file mode 100644
index 0000000..27f84a5
--- /dev/null
+++ b/parted-1.8.7/libparted/labels/pc98.c
@@ -0,0 +1,887 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2000, 2001, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#include <config.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 */
+
+/* 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, return 0);
+
+ 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;
+}
+
+#ifndef DISCOVER_ONLY
+static int
+pc98_clobber (PedDevice* dev)
+{
+ PC98RawTable table;
+
+ PED_ASSERT (dev != NULL, return 0);
+ PED_ASSERT (pc98_probe (dev), return 0);
+
+ if (!ped_device_read (dev, &table, 0, 1))
+ return 0;
+
+ memset (table.partitions, 0, sizeof (table.partitions));
+ table.magic = PED_CPU_TO_LE16(0);
+
+ if (pc98_check_ipl_signature (&table))
+ memset (table.boot_code, 0, sizeof (table.boot_code));
+
+ if (!ped_device_write (dev, (void*) &table, 0, 1))
+ return 0;
+ return ped_device_sync (dev);
+}
+#endif /* !DISCOVER_ONLY */
+
+static PedDisk*
+pc98_alloc (const PedDevice* dev)
+{
+ PED_ASSERT (dev != NULL, return 0);
+
+ 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, return);
+
+ _ped_disk_free (disk);
+}
+
+static PedSector
+chs_to_sector (const PedDevice* dev, int c, int h, int s)
+{
+ PED_ASSERT (dev != NULL, return 0);
+ 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, return);
+ PED_ASSERT (c != NULL, return);
+ PED_ASSERT (h != NULL, return);
+ PED_ASSERT (s != NULL, return);
+
+ 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, return 0);
+ PED_ASSERT (raw_part != NULL, return 0);
+
+ 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, return 0);
+ PED_ASSERT (raw_part != NULL, return 0);
+
+ 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, return 0);
+ PED_ASSERT (disk->dev != NULL, return 0);
+
+ 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, 0, NULL, part_start, part_end);
+ if (!part)
+ goto error;
+ pc98_data = part->disk_specific;
+ PED_ASSERT (pc98_data != NULL, goto error);
+
+ 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, return 0);
+ PED_ASSERT (disk->dev != NULL, return 0);
+
+ 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, return 0);
+ PED_ASSERT (part != NULL, return 0);
+ PED_ASSERT (part->disk_specific != NULL, return 0);
+
+ 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, return 0);
+ PED_ASSERT (strlen (name) <= 16, return 0);
+ 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)
+{
+ PC98RawTable table;
+ PedPartition* part;
+ int i;
+
+ PED_ASSERT (disk != NULL, return 0);
+ PED_ASSERT (disk->dev != NULL, return 0);
+
+ if (!ped_device_read (disk->dev, &table, 0, 2))
+ return 0;
+
+ 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;
+ }
+
+ if (!ped_device_write (disk->dev, (void*) &table, 0, 2))
+ 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;
+
+ ped_free (pc98_data);
+error_free_part:
+ ped_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, return);
+
+ if (ped_partition_is_active (part))
+ ped_free (part->disk_specific);
+ ped_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, return 0);
+ PED_ASSERT (part->disk_specific != NULL, return 0);
+
+ 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, return 0);
+ PED_ASSERT (part->disk_specific != NULL, return 0);
+
+ 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, return);
+ PED_ASSERT (part->disk_specific != NULL, return);
+ 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, return NULL);
+ PED_ASSERT (part->disk_specific != NULL, return NULL);
+ pc98_data = part->disk_specific;
+
+ return pc98_data->name;
+}
+
+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, return 0);
+
+ 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, return 0);
+ PED_ASSERT (part->disk != NULL, return 0);
+
+ /* don't re-number a partition */
+ if (part->num != -1)
+ return 1;
+
+ PED_ASSERT (ped_partition_is_active (part), return 0);
+
+ 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, goto error);
+ PED_ASSERT (disk->dev != NULL, goto error);
+
+ 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 PedDiskOps pc98_disk_ops = {
+ probe: pc98_probe,
+#ifndef DISCOVER_ONLY
+ clobber: pc98_clobber,
+#else
+ clobber: NULL,
+#endif
+ alloc: pc98_alloc,
+ duplicate: pc98_duplicate,
+ free: pc98_free,
+ read: pc98_read,
+#ifndef DISCOVER_ONLY
+ write: pc98_write,
+#else
+ write: NULL,
+#endif
+
+ partition_new: pc98_partition_new,
+ partition_duplicate: pc98_partition_duplicate,
+ partition_destroy: pc98_partition_destroy,
+ partition_set_system: pc98_partition_set_system,
+ partition_set_flag: pc98_partition_set_flag,
+ partition_get_flag: pc98_partition_get_flag,
+ partition_is_flag_available: pc98_partition_is_flag_available,
+ partition_set_name: pc98_partition_set_name,
+ partition_get_name: pc98_partition_get_name,
+ partition_align: pc98_partition_align,
+ partition_enumerate: pc98_partition_enumerate,
+
+ alloc_metadata: pc98_alloc_metadata,
+ get_max_primary_partition_count:
+ pc98_get_max_primary_partition_count
+};
+
+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, return);
+ ped_disk_type_register (&pc98_disk_type);
+}
+
+void
+ped_disk_pc98_done ()
+{
+ ped_disk_type_unregister (&pc98_disk_type);
+}
diff --git a/parted-1.8.7/libparted/labels/rdb.c b/parted-1.8.7/libparted/labels/rdb.c
new file mode 100644
index 0000000..35ed156
--- /dev/null
+++ b/parted-1.8.7/libparted/labels/rdb.c
@@ -0,0 +1,1168 @@
+/* -*- 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 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+
+ Contributor: Sven Luther <luther@debian.org>
+*/
+
+#include <config.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 */
+
+/* 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;
+ ped_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, return 0);
+
+ if ((rdb=RDSK(ped_malloc(dev->sector_size)))==NULL)
+ return 0;
+ found = _amiga_find_rdb (dev, rdb);
+ ped_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, return 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 (PED_SECTOR_SIZE_DEFAULT))) {
+ ped_free (disk);
+ return NULL;
+ }
+ rdb = disk->disk_specific;
+
+ memset(rdb, 0, sizeof(struct RigidDiskBlock));
+
+ 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 (PED_SECTOR_SIZE_DEFAULT);
+ 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, return NULL);
+ PED_ASSERT(disk->dev != NULL, return NULL);
+ PED_ASSERT(disk->disk_specific != NULL, return 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, return);
+ PED_ASSERT(disk->disk_specific != NULL, return);
+
+ ped_free (disk->disk_specific);
+ _ped_disk_free (disk);
+}
+
+#ifndef DISCOVER_ONLY
+static int
+amiga_clobber (PedDevice* dev)
+{
+ struct RigidDiskBlock *rdb;
+ uint32_t i;
+ int result = 0;
+ PED_ASSERT(dev != NULL, return 0);
+
+ if ((rdb=RDSK(ped_malloc(PED_SECTOR_SIZE_DEFAULT)))==NULL)
+ return 0;
+
+ while ((i = _amiga_find_rdb (dev, rdb)) != AMIGA_RDB_NOT_FOUND) {
+ rdb->rdb_ID = PED_CPU_TO_BE32 (0);
+ result = ped_device_write (dev, (void*) rdb, i, 1);
+ }
+
+ ped_free (rdb);
+
+ return result;
+}
+#endif /* !DISCOVER_ONLY */
+
+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, return 0);
+ PED_ASSERT(disk->dev != NULL, return 0);
+ PED_ASSERT(disk->dev->sector_size % PED_SECTOR_SIZE_DEFAULT == 0,
+ return 0);
+ PED_ASSERT(disk->disk_specific != NULL, return 0);
+ 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;
+ PedConstraint *constraint_exact;
+
+ /* 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)) {
+ ped_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, 0, NULL, start, end))) {
+ ped_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);
+
+ constraint_exact = ped_constraint_exact (&part->geom);
+ if (!ped_disk_add_partition (disk, part, constraint_exact)) {
+ ped_partition_destroy(part);
+ ped_free(partition);
+ return 0;
+ }
+ ped_constraint_destroy (constraint_exact);
+ }
+ 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, return 0);
+ PED_ASSERT(disk->dev != NULL, return 0);
+
+ 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, last_used_hb;
+ uint32_t * table;
+ uint32_t i;
+ uint32_t rdb_num, part_num, block_num, next_num;
+
+ PED_ASSERT (disk != NULL, return 0);
+ PED_ASSERT (disk->dev != NULL, return 0);
+ PED_ASSERT (disk->disk_specific != NULL, return 0);
+
+ if (!(rdb = ped_malloc (PED_SECTOR_SIZE_DEFAULT)))
+ return 0;
+
+ /* Let's read the rdb */
+ if ((rdb_num = _amiga_find_rdb (disk->dev, rdb)) == AMIGA_RDB_NOT_FOUND) {
+ rdb_num = 2;
+ } else {
+ memcpy (RDSK(disk->disk_specific), rdb, PED_SECTOR_SIZE_DEFAULT);
+ }
+ ped_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);
+ last_used_hb = (PedSector) PED_BE32_TO_CPU (rdb->rdb_HighRDSKBlock);
+
+ /* let's allocate a free block table and initialize it */
+ if (!(table = ped_malloc ((last_hb - first_hb + 1) * sizeof(uint32_t))))
+ return 0;
+
+ memset(table, 0xff, (last_hb - first_hb + 1) * sizeof(uint32_t));
+ for (i = 0; i<=rdb_num; i++) table[i] = IDNAME_RIGIDDISK;
+
+ /* Let's allocate a partition block */
+ if (!(block = ped_malloc (PED_SECTOR_SIZE_DEFAULT))) {
+ ped_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 = next_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, return 0);
+ PED_ASSERT(part->geom.start % cylblocks == 0, return 0);
+ PED_ASSERT((part->geom.end + 1) % cylblocks == 0, return 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;
+
+ ped_free (table);
+ ped_free (block);
+ return ped_device_sync (disk->dev);
+
+error_free_table:
+ ped_free (table);
+ ped_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, return NULL);
+ PED_ASSERT(disk->dev != NULL, return NULL);
+ PED_ASSERT(disk->disk_specific != NULL, return 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 (PED_SECTOR_SIZE_DEFAULT))) {
+ ped_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, return NULL);
+ PED_ASSERT(part->disk != NULL, return NULL);
+ PED_ASSERT(part->disk_specific != NULL, return 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, return);
+
+ if (ped_partition_is_active (part)) {
+ PED_ASSERT (part->disk_specific != NULL, return);
+ ped_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, return 0);
+ PED_ASSERT (part->disk_specific != NULL, return 0);
+ 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 (!strcmp (fs_type->name, "linux-swap"))
+ 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, return 0);
+ PED_ASSERT (part->disk_specific != NULL, return 0);
+
+ 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, return 0);
+ PED_ASSERT (part->disk_specific != NULL, return 0);
+
+ 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, return);
+ PED_ASSERT (part->disk_specific != NULL, return);
+
+ 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, return 0);
+ PED_ASSERT (part->disk_specific != NULL, return 0);
+
+ partition = PART(part->disk_specific);
+
+ return _amiga_get_bstr(partition->pb_DriveName);
+}
+
+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, return 0);
+ PED_ASSERT (part->disk != NULL, return 0);
+
+ 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, return 0);
+ PED_ASSERT (part->disk != NULL, return 0);
+
+ /* 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, goto error);
+ PED_ASSERT (disk->dev != NULL, goto error);
+
+ 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 PedDiskOps amiga_disk_ops = {
+ probe: amiga_probe,
+#ifndef DISCOVER_ONLY
+ clobber: amiga_clobber,
+#else
+ clobber: NULL,
+#endif
+ alloc: amiga_alloc,
+ duplicate: amiga_duplicate,
+ free: amiga_free,
+ read: amiga_read,
+#ifndef DISCOVER_ONLY
+ write: amiga_write,
+#else
+ write: NULL,
+#endif
+
+ partition_new: amiga_partition_new,
+ partition_duplicate: amiga_partition_duplicate,
+ partition_destroy: amiga_partition_destroy,
+ partition_set_system: amiga_partition_set_system,
+ partition_set_flag: amiga_partition_set_flag,
+ partition_get_flag: amiga_partition_get_flag,
+ partition_is_flag_available:
+ amiga_partition_is_flag_available,
+ partition_set_name: amiga_partition_set_name,
+ partition_get_name: amiga_partition_get_name,
+ partition_align: amiga_partition_align,
+ partition_enumerate: amiga_partition_enumerate,
+
+
+ alloc_metadata: amiga_alloc_metadata,
+ get_max_primary_partition_count:
+ amiga_get_max_primary_partition_count
+};
+
+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, return);
+ PED_ASSERT (sizeof (struct RigidDiskBlock) != 64, return);
+ PED_ASSERT (sizeof (struct PartitionBlock) != 64, return);
+ PED_ASSERT (sizeof (struct LinkedBlock) != 5, return);
+ PED_ASSERT (sizeof (struct Linked2Block) != 18, return);
+
+ ped_disk_type_register (&amiga_disk_type);
+}
+
+void
+ped_disk_amiga_done ()
+{
+ ped_disk_type_unregister (&amiga_disk_type);
+}
diff --git a/parted-1.8.7/libparted/labels/sun.c b/parted-1.8.7/libparted/labels/sun.c
new file mode 100644
index 0000000..feb4123
--- /dev/null
+++ b/parted-1.8.7/libparted/labels/sun.c
@@ -0,0 +1,853 @@
+/* -*- 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 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+
+ Contributor: Ben Collins <bcollins@debian.org>
+*/
+
+#include <config.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 */
+
+/* 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 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_int8_t spare0[14];
+ SunPartitionInfo infos[SUN_DISK_MAXPARTITIONS];
+ u_int8_t spare1[246]; /* Boot information etc. */
+ 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;
+};
+
+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 *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)
+{
+ SunRawLabel label;
+
+ PED_ASSERT (dev != NULL, return 0);
+
+ if (dev->sector_size != 512)
+ return 0;
+
+ if (!ped_device_read (dev, &label, 0, 1))
+ return 0;
+
+ /* check magic */
+ if (PED_BE16_TO_CPU (label.magic) != SUN_DISK_MAGIC)
+ return 0;
+
+#ifndef DISCOVER_ONLY
+ if (!sun_verify_checksum(&label)) {
+ ped_exception_throw (
+ PED_EXCEPTION_ERROR,
+ PED_EXCEPTION_CANCEL,
+ _("Corrupted Sun disk label detected."));
+ return 0;
+ }
+#endif
+
+ return 1;
+}
+
+#ifndef DISCOVER_ONLY
+static int
+sun_clobber (PedDevice* dev)
+{
+ SunRawLabel label;
+
+ PED_ASSERT (dev != NULL, return 0);
+ PED_ASSERT (sun_probe (dev), return 0);
+
+ if (!ped_device_read (dev, &label, 0, 1))
+ return 0;
+
+ label.magic = 0;
+ return ped_device_write (dev, &label, 0, 1);
+}
+#endif /* !DISCOVER_ONLY */
+
+static PedDisk*
+sun_alloc (const PedDevice* dev)
+{
+ PedDisk* disk;
+ SunRawLabel* label;
+ SunDiskData* sun_specific;
+ PedCHSGeometry* bios_geom = &((PedDevice*)dev)->bios_geom;
+ PedSector cyl_size = bios_geom->sectors * bios_geom->heads;
+
+ 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;
+
+ bios_geom->cylinders = dev->length / cyl_size;
+ sun_specific->length = bios_geom->cylinders * 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 (bios_geom->cylinders - 0);
+
+ /* 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(bios_geom->cylinders * cyl_size);
+
+ /* 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)
+{
+ ped_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->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)
+{
+ SunRawLabel* label;
+ SunPartitionData* sun_data;
+ SunDiskData* disk_data;
+ int i;
+ PedPartition* part;
+ PedSector end, start, block;
+ PedConstraint* constraint_exact;
+
+ PED_ASSERT (disk != NULL, return 0);
+ PED_ASSERT (disk->dev != NULL, return 0);
+ PED_ASSERT (disk->disk_specific != NULL, return 0);
+
+ disk_data = (SunDiskData*) disk->disk_specific;
+ label = &disk_data->raw_label;
+
+ ped_disk_delete_all (disk);
+
+ if (!ped_device_read (disk->dev, label, 0, 1))
+ goto error;
+ 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, 0, 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;
+
+ part->num = i + 1;
+ part->fs_type = ped_file_system_probe (&part->geom);
+
+ constraint_exact = ped_constraint_exact (&part->geom);
+ if (!ped_disk_add_partition (disk, part, constraint_exact))
+ goto error;
+ ped_constraint_destroy (constraint_exact);
+ }
+
+ return 1;
+
+ error:
+ return 0;
+}
+
+#ifndef DISCOVER_ONLY
+static void
+_probe_and_use_old_info (const PedDisk* disk)
+{
+ SunDiskData* sun_specific;
+ SunRawLabel old_label;
+
+ sun_specific = (SunDiskData*) disk->disk_specific;
+
+ if (!ped_device_read (disk->dev, &old_label, 0, 1))
+ return;
+ if (old_label.info [0]
+ && PED_BE16_TO_CPU (old_label.magic) == SUN_DISK_MAGIC)
+ memcpy (&sun_specific->raw_label, &old_label, 512);
+}
+
+static int
+sun_write (const PedDisk* disk)
+{
+ SunRawLabel* label;
+ SunPartitionData* sun_data;
+ SunDiskData* disk_data;
+ PedPartition* part;
+ int i;
+
+ PED_ASSERT (disk != NULL, return 0);
+ PED_ASSERT (disk->dev != NULL, return 0);
+
+ _probe_and_use_old_info (disk);
+
+ 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);
+
+ if (!ped_device_write (disk->dev, label, 0, 1))
+ goto error;
+ return ped_device_sync (disk->dev);
+
+error:
+ 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;
+ } else {
+ part->disk_specific = NULL;
+ }
+
+ return part;
+
+ ped_free (sun_data);
+error_free_part:
+ ped_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;
+ return new_part;
+}
+
+static void
+sun_partition_destroy (PedPartition* part)
+{
+ PED_ASSERT (part != NULL, return);
+
+ if (ped_partition_is_active (part))
+ ped_free (part->disk_specific);
+ ped_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;
+ }
+
+ sun_data->type = 0x83;
+ if (fs_type) {
+ if (!strcmp (fs_type->name, "linux-swap"))
+ 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, return 0);
+ PED_ASSERT (part->disk_specific != NULL, return 0);
+ PED_ASSERT (ped_partition_is_flag_available (part, flag), return 0);
+
+ sun_data = part->disk_specific;
+
+ switch (flag) {
+ case PED_PARTITION_BOOT:
+ sun_data->is_boot = state;
+ if (state)
+ sun_data->is_root = sun_data->is_lvm = 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 = sun_data->is_lvm = 0;
+ return ped_partition_set_system (part, part->fs_type);
+
+ case PED_PARTITION_LVM:
+ sun_data->is_lvm = state;
+ if (state)
+ sun_data->is_root = sun_data->is_boot = 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, return 0);
+ PED_ASSERT (part->disk_specific != NULL, return 0);
+
+ 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;
+
+ 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:
+ return 1;
+
+ default:
+ return 0;
+ }
+}
+
+
+static int
+sun_get_max_primary_partition_count (const PedDisk* disk)
+{
+ return SUN_DISK_MAXPARTITIONS;
+}
+
+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, return 0);
+
+ 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, return 0);
+ PED_ASSERT (disk->disk_specific != NULL, return 0);
+ PED_ASSERT (disk->dev != NULL, return 0);
+
+ 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;
+}
+
+static PedDiskOps sun_disk_ops = {
+ probe: sun_probe,
+#ifndef DISCOVER_ONLY
+ clobber: sun_clobber,
+#else
+ clobber: NULL,
+#endif
+ alloc: sun_alloc,
+ duplicate: sun_duplicate,
+ free: sun_free,
+ read: sun_read,
+#ifndef DISCOVER_ONLY
+ write: sun_write,
+#else
+ write: NULL,
+#endif
+
+ partition_new: sun_partition_new,
+ partition_duplicate: sun_partition_duplicate,
+ partition_destroy: sun_partition_destroy,
+ partition_set_system: sun_partition_set_system,
+ partition_set_flag: sun_partition_set_flag,
+ partition_get_flag: sun_partition_get_flag,
+ partition_is_flag_available: sun_partition_is_flag_available,
+ partition_align: sun_partition_align,
+ partition_enumerate: sun_partition_enumerate,
+ alloc_metadata: sun_alloc_metadata,
+ get_max_primary_partition_count:
+ sun_get_max_primary_partition_count,
+
+ partition_set_name: NULL,
+ partition_get_name: NULL,
+};
+
+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, return);
+ ped_disk_type_register (&sun_disk_type);
+}
+
+void
+ped_disk_sun_done ()
+{
+ ped_disk_type_unregister (&sun_disk_type);
+}
diff --git a/parted-1.8.7/libparted/labels/vtoc.c b/parted-1.8.7/libparted/labels/vtoc.c
new file mode 100644
index 0000000..bd2c905
--- /dev/null
+++ b/parted-1.8.7/libparted/labels/vtoc.c
@@ -0,0 +1,1154 @@
+#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[85];
+
+static void
+vtoc_error (enum failure why, char *s1, char *s2)
+{
+ PDEBUG
+ char error[8192];
+
+ switch (why) {
+ case unable_to_open:
+ sprintf(error, _("%s opening device '%s' failed.\n%s\n"),
+ VTOC_ERROR, s1, s2);
+ break;
+ case unable_to_seek:
+ sprintf(error, _("%s seeking device '%s' failed.\n%s\n"),
+ VTOC_ERROR, s1, s2);
+ break;
+ case unable_to_write:
+ sprintf(error, _("%s writing to device '%s' failed,\n%s\n"),
+ VTOC_ERROR, s1, s2);
+ break;
+ case unable_to_read:
+ sprintf(error, _("%s reading from device '%s' failed.\n%s\n"),
+ VTOC_ERROR, s1, s2);
+ break;
+ default:
+ sprintf(error, _("Fatal error\n"));
+ }
+
+ ped_exception_throw(PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL, error);
+}
+
+char *
+vtoc_ebcdic_enc (char source[LINE_LENGTH],
+ char target[LINE_LENGTH],
+ 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 source[LINE_LENGTH],
+ char target[LINE_LENGTH],
+ 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, "%84s", " ");
+ vtoc_ebcdic_enc(buffer, buffer, 84);
+ strncpy(vlabel->volkey, buffer, 84);
+}
+
+/*
+ * reads the volume label from dasd
+ */
+int
+vtoc_read_volume_label (int f, unsigned long vlabel_start,
+ volume_label_t *vlabel)
+{
+ 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)) {
+ vtoc_error(unable_to_read, "vtoc_read_volume_label",
+ "Could not read volume label.");
+ return 1;
+ }
+
+ return 0;
+}
+
+/*
+ * writes the volume label to dasd
+ */
+int
+vtoc_write_volume_label (int f, unsigned long vlabel_start,
+ volume_label_t *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));
+ if (rc != sizeof(volume_label_t))
+ 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 *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 *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 *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 *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_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(1);
+ }
+
+ 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(1);
+ }
+
+ 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(1);
+ }
+
+ 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(1);
+ }
+ }
+
+ if (counter > 0)
+ return;
+
+ puts ("BUG: specified free space extent for "
+ "deleting not found in FMT5 DSCB!\n"
+ "exiting...");
+ exit(1);
+}
+
+/*
+ * 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(1);
+ }
+
+ 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(1);
+ }
+
+ 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(1);
+ }
+ }
+
+ if (counter > 0)
+ return;
+
+ puts ("BUG: specified free space extent for "
+ "deleting not found in FMT7 DSCB!\n"
+ "exiting...");
+ exit(1);
+}
+
+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/parted-1.8.7/libparted/libparted.c b/parted-1.8.7/libparted/libparted.c
new file mode 100644
index 0000000..b1a6201
--- /dev/null
+++ b/parted-1.8.7/libparted/libparted.c
@@ -0,0 +1,343 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 1999, 2000, 2001, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#include <config.h>
+#include "configmake.h"
+
+#include <parted/parted.h>
+#include <parted/debug.h>
+
+#ifdef linux
+# include <parted/linux.h>
+#elif defined(__BEOS__)
+# include <parted/beos.h>
+#else
+# include <parted/gnu.h>
+#endif
+
+#if ENABLE_NLS
+# include <locale.h>
+# include <libintl.h>
+# define _(String) dgettext (PACKAGE, String)
+#else
+# define _(String) (String)
+#endif /* ENABLE_NLS */
+
+const PedArchitecture* ped_architecture;
+
+/* ped_malloc() debugging. Stick the address and size of memory blocks that
+ * weren't ped_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;
+
+#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 */
+
+int
+ped_set_architecture (const PedArchitecture* arch)
+{
+ PED_ASSERT (ped_device_get_next (NULL) == NULL, return 0);
+
+ ped_architecture = arch;
+ return 1;
+}
+
+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 ();
+}
+
+#ifdef ENABLE_FS
+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);
+
+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 ();
+}
+#endif /* ENABLE_FS */
+
+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 ();
+
+#ifdef ENABLE_FS
+ init_file_system_types ();
+#endif
+
+ /* FIXME: a better way of doing this? */
+#ifdef linux
+ ped_set_architecture (&ped_linux_arch);
+#elif defined(__BEOS__)
+ ped_set_architecture (&ped_beos_arch);
+#else
+ ped_set_architecture (&ped_gnu_arch);
+#endif
+
+#ifdef DEBUG
+ memset (dodgy_memory_active, 0, sizeof (dodgy_memory_active));
+#endif
+}
+
+#ifdef ENABLE_FS
+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_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 ();
+}
+#endif /* ENABLE_FS */
+
+static void _done() __attribute__ ((destructor));
+
+static void
+_done()
+{
+ ped_device_free_all ();
+
+ done_disk_types ();
+
+#ifdef ENABLE_FS
+ done_file_system_types ();
+#endif
+}
+
+const char*
+ped_get_version ()
+{
+ return VERSION;
+}
+
+#ifdef DEBUG
+static void
+_check_dodgy_pointer (const void* ptr, size_t size, int is_malloc)
+{
+ int i;
+
+ for (i=0; dodgy_malloc_list[i].pointer; i++) {
+ if (dodgy_malloc_list[i].pointer != ptr)
+ continue;
+ if (is_malloc && dodgy_malloc_list[i].size != size)
+ continue;
+ if (!is_malloc && !dodgy_memory_active[i])
+ continue;
+
+
+ if (is_malloc) {
+ ped_exception_throw (
+ PED_EXCEPTION_INFORMATION,
+ PED_EXCEPTION_OK,
+ "Dodgy malloc(%x) == %p occurred (active==%d)",
+ size, ptr, dodgy_memory_active[i]);
+ dodgy_memory_active[i]++;
+ } else {
+ ped_exception_throw (
+ PED_EXCEPTION_INFORMATION,
+ PED_EXCEPTION_OK,
+ "Dodgy free(%p) occurred (active==%d)",
+ ptr, dodgy_memory_active[i]);
+ dodgy_memory_active[i]--;
+ }
+
+ return;
+ }
+}
+#endif /* DEBUG */
+
+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;
+ }
+
+#ifdef DEBUG
+ memset (mem, 0xff, size);
+ _check_dodgy_pointer (mem, size, 1);
+#endif
+
+ 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;
+}
+
+
+void
+ped_free (void* ptr)
+{
+#ifdef DEBUG
+ _check_dodgy_pointer (ptr, 0, 0);
+#endif
+
+ free (ptr);
+}
+
diff --git a/parted-1.8.7/libparted/mbr.s b/parted-1.8.7/libparted/mbr.s
new file mode 100644
index 0000000..0d35aa9
--- /dev/null
+++ b/parted-1.8.7/libparted/mbr.s
@@ -0,0 +1,86 @@
+; libparted - a library for manipulating disk partitions
+; Copyright (C) 1999, 2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+
+; 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/parted-1.8.7/libparted/tests/Makefile.am b/parted-1.8.7/libparted/tests/Makefile.am
new file mode 100644
index 0000000..8c1e07b
--- /dev/null
+++ b/parted-1.8.7/libparted/tests/Makefile.am
@@ -0,0 +1,12 @@
+# This file is part of GNU Parted
+# Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+#
+# This file may be modified and/or distributed without restriction.
+
+TESTS = label
+bin_PROGRAMS = label
+label_CFLAGS = $(CHECK_CFLAGS) -I$(top_srcdir)/include
+label_LDADD = $(CHECK_LIBS) $(top_builddir)/libparted/libparted.la
+label_SOURCES = common.h common.c label.c
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/parted-1.8.7/libparted/tests/Makefile.in b/parted-1.8.7/libparted/tests/Makefile.in
new file mode 100644
index 0000000..1a708c2
--- /dev/null
+++ b/parted-1.8.7/libparted/tests/Makefile.in
@@ -0,0 +1,763 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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, 2000, 2001 Free Software Foundation, Inc.
+#
+# This file may be modified and/or distributed without restriction.
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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@
+TESTS = label$(EXEEXT)
+bin_PROGRAMS = label$(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/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+am__installdirs = "$(DESTDIR)$(bindir)"
+binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(bin_PROGRAMS)
+am_label_OBJECTS = label-common.$(OBJEXT) label-label.$(OBJEXT)
+label_OBJECTS = $(am_label_OBJECTS)
+am__DEPENDENCIES_1 =
+label_DEPENDENCIES = $(am__DEPENDENCIES_1) \
+ $(top_builddir)/libparted/libparted.la
+label_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(label_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I. -I$(top_builddir)/lib@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(label_SOURCES)
+DIST_SOURCES = $(label_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+label_CFLAGS = $(CHECK_CFLAGS) -I$(top_srcdir)/include
+label_LDADD = $(CHECK_LIBS) $(top_builddir)/libparted/libparted.la
+label_SOURCES = common.h common.c label.c
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu libparted/tests/Makefile'; \
+ 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
+install-binPROGRAMS: $(bin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ || test -f $$p1 \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(bindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(binPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(bindir)/$$f" || exit 1; \
+ else :; fi; \
+ done
+
+uninstall-binPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " rm -f '$(DESTDIR)$(bindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(bindir)/$$f"; \
+ done
+
+clean-binPROGRAMS:
+ @list='$(bin_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+label$(EXEEXT): $(label_OBJECTS) $(label_DEPENDENCIES)
+ @rm -f label$(EXEEXT)
+ $(label_LINK) $(label_OBJECTS) $(label_LDADD) $(LIBS)
+
+mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+
+distclean-compile:
+ -rm -f *.tab.c
+
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/label-common.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/label-label.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+label-common.o: common.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(label_CFLAGS) $(CFLAGS) -MT label-common.o -MD -MP -MF $(DEPDIR)/label-common.Tpo -c -o label-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/label-common.Tpo $(DEPDIR)/label-common.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='label-common.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(label_CFLAGS) $(CFLAGS) -c -o label-common.o `test -f 'common.c' || echo '$(srcdir)/'`common.c
+
+label-common.obj: common.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(label_CFLAGS) $(CFLAGS) -MT label-common.obj -MD -MP -MF $(DEPDIR)/label-common.Tpo -c -o label-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/label-common.Tpo $(DEPDIR)/label-common.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='common.c' object='label-common.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(label_CFLAGS) $(CFLAGS) -c -o label-common.obj `if test -f 'common.c'; then $(CYGPATH_W) 'common.c'; else $(CYGPATH_W) '$(srcdir)/common.c'; fi`
+
+label-label.o: label.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(label_CFLAGS) $(CFLAGS) -MT label-label.o -MD -MP -MF $(DEPDIR)/label-label.Tpo -c -o label-label.o `test -f 'label.c' || echo '$(srcdir)/'`label.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/label-label.Tpo $(DEPDIR)/label-label.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='label.c' object='label-label.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(label_CFLAGS) $(CFLAGS) -c -o label-label.o `test -f 'label.c' || echo '$(srcdir)/'`label.c
+
+label-label.obj: label.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(label_CFLAGS) $(CFLAGS) -MT label-label.obj -MD -MP -MF $(DEPDIR)/label-label.Tpo -c -o label-label.obj `if test -f 'label.c'; then $(CYGPATH_W) 'label.c'; else $(CYGPATH_W) '$(srcdir)/label.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/label-label.Tpo $(DEPDIR)/label-label.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='label.c' object='label-label.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(label_CFLAGS) $(CFLAGS) -c -o label-label.obj `if test -f 'label.c'; then $(CYGPATH_W) 'label.c'; else $(CYGPATH_W) '$(srcdir)/label.c'; fi`
+
+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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+distclean-tags:
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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-TESTS
+check: check-am
+all-am: Makefile $(PROGRAMS)
+installdirs:
+ for dir in "$(DESTDIR)$(bindir)"; 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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-binPROGRAMS 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
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am: install-binPROGRAMS
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: 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-binPROGRAMS
+
+.MAKE: install-am install-strip
+
+.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
+ clean-binPROGRAMS clean-generic clean-libtool ctags distclean \
+ distclean-compile distclean-generic distclean-libtool \
+ distclean-tags distdir dvi dvi-am html html-am info info-am \
+ install install-am install-binPROGRAMS 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 uninstall-binPROGRAMS
+
+# 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-1.8.7/libparted/tests/common.c b/parted-1.8.7/libparted/tests/common.c
new file mode 100644
index 0000000..e7ce56f
--- /dev/null
+++ b/parted-1.8.7/libparted/tests/common.c
@@ -0,0 +1,74 @@
+#include <config.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+#include <string.h>
+
+#include <check.h>
+
+#include "common.h"
+
+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 size)
+{
+ 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;
+
+ off_t total_size = size * 1024 * 1024; /* Mb */
+
+ int fail = (fseek (disk, total_size, 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)
+{
+ /* Not implemented yet */
+ if (strncmp (label, "aix", 3) == 0)
+ return 0;
+
+ return 1;
+}
diff --git a/parted-1.8.7/libparted/tests/common.h b/parted-1.8.7/libparted/tests/common.h
new file mode 100644
index 0000000..3fbad73
--- /dev/null
+++ b/parted-1.8.7/libparted/tests/common.h
@@ -0,0 +1,27 @@
+#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/parted-1.8.7/libparted/tests/label.c b/parted-1.8.7/libparted/tests/label.c
new file mode 100644
index 0000000..54f40c3
--- /dev/null
+++ b/parted-1.8.7/libparted/tests/label.c
@@ -0,0 +1,193 @@
+#include <config.h>
+#include <unistd.h>
+
+#include <check.h>
+
+#include <parted/parted.h>
+
+#include "common.h"
+
+static char* temporary_disk;
+
+static void
+create_disk (void)
+{
+ temporary_disk = _create_disk (20);
+ 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)) {
+ 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)) {
+ 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);
+ fail_if (strcmp (probed->name, type->name) != 0,
+ "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)) {
+ 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);
+ fail_if (strcmp (disk->type->name, type->name) != 0,
+ "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;
+ PedDisk* clone;
+ PedDisk* disk;
+
+ for (type = ped_disk_type_get_next (NULL); type;
+ type = ped_disk_type_get_next (type)) {
+ if (!_implemented_disk_label (type->name))
+ continue;
+
+ /* FIXME: skip this test temporarily, while we wait
+ for someone to find the cycles to fix the bug. */
+ if (strcmp (type->name, "dvh") == 0)
+ continue;
+
+ disk = _create_disk_label (dev, type);
+
+ /* Try to clone the disk label. */
+ 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 (void)
+{
+ 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/parted-1.8.7/libparted/timer.c b/parted-1.8.7/libparted/timer.c
new file mode 100644
index 0000000..e315273
--- /dev/null
+++ b/parted-1.8.7/libparted/timer.c
@@ -0,0 +1,246 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2001, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+/** \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>
+
+#define PED_TIMER_START_DELAY 2
+
+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, return 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;
+
+ ped_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, return NULL);
+ PED_ASSERT (nest_frac <= 1.0, return NULL);
+
+ 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;
+
+ ped_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/parted-1.8.7/libparted/unit.c b/parted-1.8.7/libparted/unit.c
new file mode 100644
index 0000000..4810246
--- /dev/null
+++ b/parted-1.8.7/libparted/unit.c
@@ -0,0 +1,566 @@
+/*
+ libparted - a library for manipulating disk partitions
+ Copyright (C) 2005, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+/** \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);
+ 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 ped_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, return 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 / (double)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 ped_free().
+ */
+char*
+ped_unit_format_byte (const PedDevice* dev, PedSector byte)
+{
+ PED_ASSERT (dev != NULL, return 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 ped_free().
+ */
+char*
+ped_unit_format_custom (const PedDevice* dev, PedSector sector, PedUnit unit)
+{
+ PED_ASSERT (dev != NULL, return 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 ped_free().
+ */
+char*
+ped_unit_format (const PedDevice* dev, PedSector sector)
+{
+ PED_ASSERT (dev != NULL, return 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;
+ char* copy = ped_strdup (str);
+ PedCHSGeometry chs;
+
+ 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);
+ ped_free (copy);
+ return !range || *range != NULL;
+
+error_free_copy:
+ ped_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;
+}
+
+/**
+ * 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;
+
+ *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);
+
+ ped_free (copy);
+ return 1;
+
+error_free_copy:
+ ped_free (copy);
+error:
+ *sector = 0;
+ if (range)
+ *range = NULL;
+ return 0;
+}
+
+
+/** @} */
diff --git a/parted-1.8.7/m4/absolute-header.m4 b/parted-1.8.7/m4/absolute-header.m4
new file mode 100644
index 0000000..c649df0
--- /dev/null
+++ b/parted-1.8.7/m4/absolute-header.m4
@@ -0,0 +1,44 @@
+# absolute-header.m4 serial 6
+dnl Copyright (C) 2006 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.
+
+# gl_ABSOLUTE_HEADER(HEADER1 HEADER2 ...)
+# ---------------------------------------
+# Find the absolute name of a header file, assuming the header exists.
+# If the header were sys/inttypes.h, this macro would define
+# ABSOLUTE_SYS_INTTYPES_H to the `""' quoted absolute name of sys/inttypes.h
+# in config.h
+# (e.g. `#define ABSOLUTE_SYS_INTTYPES_H "///usr/include/sys/inttypes.h"').
+# 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.
+AC_DEFUN([gl_ABSOLUTE_HEADER],
+[AC_LANG_PREPROC_REQUIRE()dnl
+AC_FOREACH([gl_HEADER_NAME], [$1],
+ [AS_VAR_PUSHDEF([gl_absolute_header],
+ [gl_cv_absolute_]m4_quote(m4_defn([gl_HEADER_NAME])))dnl
+ AC_CACHE_CHECK([absolute name of <]m4_quote(m4_defn([gl_HEADER_NAME]))[>],
+ m4_quote(m4_defn([gl_absolute_header])),
+ [AS_VAR_PUSHDEF([ac_header_exists],
+ [ac_cv_header_]m4_quote(m4_defn([gl_HEADER_NAME])))dnl
+ AC_CHECK_HEADERS_ONCE(m4_quote(m4_defn([gl_HEADER_NAME])))dnl
+ if test AS_VAR_GET(ac_header_exists) = yes; then
+ AC_LANG_CONFTEST([AC_LANG_SOURCE([[#include <]]m4_dquote(m4_defn([gl_HEADER_NAME]))[[>]])])
+dnl eval is necessary to expand ac_cpp.
+dnl Ultrix and Pyramid sh refuse to redirect output of eval, so use subshell.
+ AS_VAR_SET(gl_absolute_header,
+[`(eval "$ac_cpp conftest.$ac_ext") 2>&AS_MESSAGE_LOG_FD |
+sed -n '\#/]m4_quote(m4_defn([gl_HEADER_NAME]))[#{s#.*"\(.*/]m4_quote(m4_defn([gl_HEADER_NAME]))[\)".*#\1#;s#^/[^/]#//&#;p;q;}'`])
+ fi
+ AS_VAR_POPDEF([ac_header_exists])dnl
+ ])dnl
+ AC_DEFINE_UNQUOTED(AS_TR_CPP([ABSOLUTE_]m4_quote(m4_defn([gl_HEADER_NAME]))),
+ ["AS_VAR_GET(gl_absolute_header)"],
+ [Define this to an absolute name of <]m4_quote(m4_defn([gl_HEADER_NAME]))[>.])
+ AS_VAR_POPDEF([gl_absolute_header])dnl
+])dnl
+])# gl_ABSOLUTE_HEADER
diff --git a/parted-1.8.7/m4/alloca.m4 b/parted-1.8.7/m4/alloca.m4
new file mode 100644
index 0000000..eb62e0e
--- /dev/null
+++ b/parted-1.8.7/m4/alloca.m4
@@ -0,0 +1,50 @@
+# alloca.m4 serial 7
+dnl Copyright (C) 2002-2004, 2006 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_ALLOCA],
+[
+ dnl Work around a bug of AC_EGREP_CPP in autoconf-2.57.
+ AC_REQUIRE([AC_PROG_CPP])
+ AC_REQUIRE([AC_PROG_EGREP])
+
+ 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])
+
+ AC_DEFINE(HAVE_ALLOCA_H, 1,
+ [Define HAVE_ALLOCA_H for backward compatibility with older code
+ that includes <alloca.h> only if HAVE_ALLOCA_H is defined.])
+])
+
+# Prerequisites of lib/alloca.c.
+# STACK_DIRECTION is already handled by AC_FUNC_ALLOCA.
+AC_DEFUN([gl_PREREQ_ALLOCA], [:])
diff --git a/parted-1.8.7/m4/assert.m4 b/parted-1.8.7/m4/assert.m4
new file mode 100644
index 0000000..bfdc00f
--- /dev/null
+++ b/parted-1.8.7/m4/assert.m4
@@ -0,0 +1,19 @@
+#serial 5
+
+# Copyright (C) 1998, 1999, 2001, 2004 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
+
+AC_DEFUN([gl_ASSERT],
+[
+ AC_MSG_CHECKING(whether to enable assertions)
+ AC_ARG_ENABLE(assert,
+ [ --disable-assert turn off assertions],
+ [ AC_MSG_RESULT(no)
+ AC_DEFINE(NDEBUG,1,[Define to 1 if assertions should be disabled.]) ],
+ [ AC_MSG_RESULT(yes) ]
+ )
+])
diff --git a/parted-1.8.7/m4/atexit.m4 b/parted-1.8.7/m4/atexit.m4
new file mode 100644
index 0000000..348912f
--- /dev/null
+++ b/parted-1.8.7/m4/atexit.m4
@@ -0,0 +1,18 @@
+# atexit.m4 serial 2
+dnl Copyright (C) 2002 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_ATEXIT],
+[
+ AC_REPLACE_FUNCS(atexit)
+ if test $ac_cv_func_atexit = no; then
+ gl_PREREQ_ATEXIT
+ fi
+])
+
+# Prerequisites of lib/atexit.c.
+AC_DEFUN([gl_PREREQ_ATEXIT], [
+ :
+])
diff --git a/parted-1.8.7/m4/calloc.m4 b/parted-1.8.7/m4/calloc.m4
new file mode 100644
index 0000000..c109171
--- /dev/null
+++ b/parted-1.8.7/m4/calloc.m4
@@ -0,0 +1,43 @@
+# calloc.m4 serial 6
+
+# Copyright (C) 2004, 2005, 2006 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],
+ [exit (!calloc (0, 0) || calloc ((size_t) -1 / 8 + 1, 8));])],
+ [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
+
+
+# AC_FUNC_CALLOC
+# ---------------
+# Report whether `calloc (0, 0)' is properly handled, and replace calloc if
+# needed.
+AC_DEFUN([AC_FUNC_CALLOC],
+[_AC_FUNC_CALLOC_IF(
+ [AC_DEFINE([HAVE_CALLOC], 1,
+ [Define to 1 if your system has a GNU libc compatible `calloc'
+ function, and to 0 otherwise.])],
+ [AC_DEFINE([HAVE_CALLOC], 0)
+ AC_LIBOBJ([calloc])
+ AC_DEFINE([calloc], [rpl_calloc],
+ [Define to rpl_calloc if the replacement function should be used.])])
+])# AC_FUNC_CALLOC
diff --git a/parted-1.8.7/m4/close-stream.m4 b/parted-1.8.7/m4/close-stream.m4
new file mode 100644
index 0000000..b1f9d54
--- /dev/null
+++ b/parted-1.8.7/m4/close-stream.m4
@@ -0,0 +1,13 @@
+#serial 3
+dnl Copyright (C) 2006-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.
+
+AC_DEFUN([gl_CLOSE_STREAM],
+[
+ AC_LIBOBJ([close-stream])
+
+ dnl Prerequisites of lib/close-stream.c.
+ :
+])
diff --git a/parted-1.8.7/m4/closeout.m4 b/parted-1.8.7/m4/closeout.m4
new file mode 100644
index 0000000..55a65f0
--- /dev/null
+++ b/parted-1.8.7/m4/closeout.m4
@@ -0,0 +1,13 @@
+# closeout.m4 serial 5
+dnl Copyright (C) 2002, 2003, 2005, 2006 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_CLOSEOUT],
+[
+ AC_LIBOBJ([closeout])
+
+ dnl Prerequisites of lib/closeout.c.
+ :
+])
diff --git a/parted-1.8.7/m4/codeset.m4 b/parted-1.8.7/m4/codeset.m4
new file mode 100644
index 0000000..223955b
--- /dev/null
+++ b/parted-1.8.7/m4/codeset.m4
@@ -0,0 +1,21 @@
+# codeset.m4 serial 2 (gettext-0.16)
+dnl Copyright (C) 2000-2002, 2006 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_TRY_LINK([#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/parted-1.8.7/m4/config-h.m4 b/parted-1.8.7/m4/config-h.m4
new file mode 100644
index 0000000..807d515
--- /dev/null
+++ b/parted-1.8.7/m4/config-h.m4
@@ -0,0 +1,13 @@
+# Say that -DHAVE_CONFIG_H is not needed.
+
+dnl Copyright (C) 2006 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/parted-1.8.7/m4/dirname.m4 b/parted-1.8.7/m4/dirname.m4
new file mode 100644
index 0000000..e35da96
--- /dev/null
+++ b/parted-1.8.7/m4/dirname.m4
@@ -0,0 +1,18 @@
+#serial 7 -*- autoconf -*-
+dnl Copyright (C) 2002-2006 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_LIBOBJ([basename])
+ AC_LIBOBJ([dirname])
+ AC_LIBOBJ([stripslash])
+
+ dnl Prerequisites of lib/dirname.h.
+ AC_REQUIRE([gl_AC_DOS])
+ AC_REQUIRE([gl_DOUBLE_SLASH_ROOT])
+
+ dnl No prerequisites of lib/basename.c, lib/dirname.c, lib/stripslash.c.
+])
diff --git a/parted-1.8.7/m4/dos.m4 b/parted-1.8.7/m4/dos.m4
new file mode 100644
index 0000000..dd59571
--- /dev/null
+++ b/parted-1.8.7/m4/dos.m4
@@ -0,0 +1,71 @@
+#serial 10 -*- autoconf -*-
+
+# Define some macros required for proper operation of code in lib/*.c
+# on MSDOS/Windows systems.
+
+# Copyright (C) 2000, 2001, 2004, 2005, 2006 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.
+
+AC_DEFUN([gl_AC_DOS],
+ [
+ AC_CACHE_CHECK([whether system is Windows or MSDOS], [ac_cv_win_or_dos],
+ [
+ AC_TRY_COMPILE([],
+ [#if !defined _WIN32 && !defined __WIN32__ && !defined __MSDOS__ && !defined __CYGWIN__
+neither MSDOS nor Windows
+#endif],
+ [ac_cv_win_or_dos=yes],
+ [ac_cv_win_or_dos=no])
+ ])
+
+ if test x"$ac_cv_win_or_dos" = xyes; then
+ ac_fs_accepts_drive_letter_prefix=1
+ ac_fs_backslash_is_file_name_separator=1
+ AC_CACHE_CHECK([whether drive letter can start relative path],
+ [ac_cv_drive_letter_can_be_relative],
+ [
+ AC_TRY_COMPILE([],
+ [#if defined __CYGWIN__
+drive letters are always absolute
+#endif],
+ [ac_cv_drive_letter_can_be_relative=yes],
+ [ac_cv_drive_letter_can_be_relative=no])
+ ])
+ if test x"$ac_cv_drive_letter_can_be_relative" = xyes; then
+ ac_fs_drive_letter_can_be_relative=1
+ else
+ ac_fs_drive_letter_can_be_relative=0
+ fi
+ else
+ ac_fs_accepts_drive_letter_prefix=0
+ ac_fs_backslash_is_file_name_separator=0
+ ac_fs_drive_letter_can_be_relative=0
+ fi
+
+ AC_DEFINE_UNQUOTED([FILE_SYSTEM_ACCEPTS_DRIVE_LETTER_PREFIX],
+ $ac_fs_accepts_drive_letter_prefix,
+ [Define on systems for which file names may have a so-called
+ `drive letter' prefix, define this to compute the length of that
+ prefix, including the colon.])
+
+ AH_VERBATIM(ISSLASH,
+ [#if FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR
+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
+#else
+# define ISSLASH(C) ((C) == '/')
+#endif])
+
+ AC_DEFINE_UNQUOTED([FILE_SYSTEM_BACKSLASH_IS_FILE_NAME_SEPARATOR],
+ $ac_fs_backslash_is_file_name_separator,
+ [Define if the backslash character may also serve as a file name
+ component separator.])
+
+ AC_DEFINE_UNQUOTED([FILE_SYSTEM_DRIVE_PREFIX_CAN_BE_RELATIVE],
+ $ac_fs_drive_letter_can_be_relative,
+ [Define if a drive letter prefix denotes a relative path if it is
+ not followed by a file name component separator.])
+ ])
diff --git a/parted-1.8.7/m4/double-slash-root.m4 b/parted-1.8.7/m4/double-slash-root.m4
new file mode 100644
index 0000000..69d60d0
--- /dev/null
+++ b/parted-1.8.7/m4/double-slash-root.m4
@@ -0,0 +1,38 @@
+# double-slash-root.m4 serial 2 -*- Autoconf -*-
+dnl Copyright (C) 2006 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 / //`
+ 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/parted-1.8.7/m4/error.m4 b/parted-1.8.7/m4/error.m4
new file mode 100644
index 0000000..7c7746e
--- /dev/null
+++ b/parted-1.8.7/m4/error.m4
@@ -0,0 +1,22 @@
+#serial 11
+
+# Copyright (C) 1996, 1997, 1998, 2001, 2002, 2003, 2004 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
+])
+
+# Prerequisites of lib/error.c.
+AC_DEFUN([gl_PREREQ_ERROR],
+[
+ AC_REQUIRE([AC_FUNC_STRERROR_R])
+ :
+])
diff --git a/parted-1.8.7/m4/exitfail.m4 b/parted-1.8.7/m4/exitfail.m4
new file mode 100644
index 0000000..b7a691e
--- /dev/null
+++ b/parted-1.8.7/m4/exitfail.m4
@@ -0,0 +1,13 @@
+# exitfail.m4 serial 6
+dnl Copyright (C) 2002, 2003, 2005, 2006 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_EXITFAIL],
+[
+ AC_LIBOBJ([exitfail])
+
+ dnl No prerequisites of lib/exitfail.c.
+ :
+])
diff --git a/parted-1.8.7/m4/extensions.m4 b/parted-1.8.7/m4/extensions.m4
new file mode 100644
index 0000000..143a9e5
--- /dev/null
+++ b/parted-1.8.7/m4/extensions.m4
@@ -0,0 +1,58 @@
+# serial 4 -*- Autoconf -*-
+# Enable extensions on systems that normally disable them.
+
+# Copyright (C) 2003, 2006 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.61 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.
+
+# AC_USE_SYSTEM_EXTENSIONS
+# ------------------------
+# Enable extensions on systems that normally disable them,
+# typically due to standards-conformance issues.
+AC_DEFUN([AC_USE_SYSTEM_EXTENSIONS],
+[
+ AC_BEFORE([$0], [AC_COMPILE_IFELSE])
+ AC_BEFORE([$0], [AC_RUN_IFELSE])
+
+ AC_REQUIRE([AC_GNU_SOURCE])
+ AC_REQUIRE([AC_AIX])
+ AC_REQUIRE([AC_MINIX])
+
+ AH_VERBATIM([__EXTENSIONS__],
+[/* Enable extensions on Solaris. */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#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([_POSIX_PTHREAD_SEMANTICS])
+ AC_DEFINE([_TANDEM_SOURCE])
+])
+
+# gl_USE_SYSTEM_EXTENSIONS
+# ------------------------
+# Enable extensions on systems that normally disable them,
+# typically due to standards-conformance issues.
+AC_DEFUN([gl_USE_SYSTEM_EXTENSIONS],
+ [AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])])
diff --git a/parted-1.8.7/m4/fpending.m4 b/parted-1.8.7/m4/fpending.m4
new file mode 100644
index 0000000..a073483
--- /dev/null
+++ b/parted-1.8.7/m4/fpending.m4
@@ -0,0 +1,78 @@
+#serial 10
+
+# Copyright (C) 2000, 2001, 2004, 2005, 2006 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_REPLACE_FUNCS([__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)' \
+ \
+ '# old glibc?' \
+ 'fp->__bufp - fp->__buffer' \
+ \
+ '# old glibc iostream?' \
+ 'fp->_pptr - fp->_pbase' \
+ \
+ '# 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_TRY_COMPILE(
+ [#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'])
+ fi
+])
diff --git a/parted-1.8.7/m4/free.m4 b/parted-1.8.7/m4/free.m4
new file mode 100644
index 0000000..566734b
--- /dev/null
+++ b/parted-1.8.7/m4/free.m4
@@ -0,0 +1,40 @@
+# Check whether free (NULL) is supposed to work.
+
+# Copyright (C) 2003, 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.
+
+# Written by Paul Eggert.
+
+# We can't test for free (NULL) even at runtime, since it might
+# happen to "work" for our test program, but not in general. So, be
+# conservative and use feature tests for relatively modern hosts,
+# where free (NULL) is known to work. This costs a bit of
+# performance on some older hosts, but we can fix that later if
+# needed.
+
+AC_DEFUN([gl_FUNC_FREE],
+[
+ AC_CACHE_CHECK([whether free (NULL) is known to work],
+ [gl_cv_func_free],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[@%:@include <unistd.h>]],
+ [[@%:@if _POSIX_VERSION < 199009L && \
+ (defined unix || defined _unix || defined _unix_ \
+ || defined __unix || defined __unix__)
+ @%:@error "'free (NULL)' is not known to work"
+ @%:@endif]])],
+ [gl_cv_func_free=yes],
+ [gl_cv_func_free=no])])
+
+ if test $gl_cv_func_free = no; then
+ AC_LIBOBJ(free)
+ AC_DEFINE(free, rpl_free,
+ [Define to rpl_free if the replacement function should be used.])
+ fi
+])
+
+# Prerequisites of lib/free.c.
+AC_DEFUN([gl_PREREQ_FREE], [:])
diff --git a/parted-1.8.7/m4/getopt.m4 b/parted-1.8.7/m4/getopt.m4
new file mode 100644
index 0000000..c0a73b2
--- /dev/null
+++ b/parted-1.8.7/m4/getopt.m4
@@ -0,0 +1,83 @@
+# getopt.m4 serial 13
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006 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.
+
+# The getopt module assume you want GNU getopt, with getopt_long etc,
+# rather than vanilla POSIX getopt. This means your code should
+# always include <getopt.h> for the getopt prototypes.
+
+AC_DEFUN([gl_GETOPT_SUBSTITUTE],
+[
+ AC_LIBOBJ([getopt])
+ AC_LIBOBJ([getopt1])
+ gl_GETOPT_SUBSTITUTE_HEADER
+ gl_PREREQ_GETOPT
+])
+
+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])
+])
+
+AC_DEFUN([gl_GETOPT_CHECK_HEADERS],
+[
+ if test -z "$GETOPT_H"; then
+ AC_CHECK_HEADERS([getopt.h], [], [GETOPT_H=getopt.h])
+ fi
+
+ if test -z "$GETOPT_H"; then
+ AC_CHECK_FUNCS([getopt_long_only], [], [GETOPT_H=getopt.h])
+ fi
+
+ dnl BSD getopt_long uses an incompatible method to reset option processing,
+ dnl and (as of 2004-10-15) mishandles optional option-arguments.
+ if test -z "$GETOPT_H"; then
+ AC_CHECK_DECL([optreset], [GETOPT_H=getopt.h], [], [#include <getopt.h>])
+ fi
+
+ dnl Solaris 10 getopt doesn't handle `+' as a leading character in an
+ dnl option string (as of 2005-05-05).
+ if test -z "$GETOPT_H"; then
+ AC_CACHE_CHECK([for working GNU getopt function], [gl_cv_func_gnu_getopt],
+ [AC_RUN_IFELSE(
+ [AC_LANG_PROGRAM([#include <getopt.h>],
+ [[
+ char *myargv[3];
+ myargv[0] = "conftest";
+ myargv[1] = "-+";
+ myargv[2] = 0;
+ return getopt (2, myargv, "+a") != '?';
+ ]])],
+ [gl_cv_func_gnu_getopt=yes],
+ [gl_cv_func_gnu_getopt=no],
+ [dnl cross compiling - pessimistically guess based on decls
+ dnl Solaris 10 getopt doesn't handle `+' as a leading character in an
+ dnl option string (as of 2005-05-05).
+ AC_CHECK_DECL([getopt_clip],
+ [gl_cv_func_gnu_getopt=no], [gl_cv_func_gnu_getopt=yes],
+ [#include <getopt.h>])])])
+ if test "$gl_cv_func_gnu_getopt" = "no"; then
+ GETOPT_H=getopt.h
+ fi
+ fi
+])
+
+AC_DEFUN([gl_GETOPT_IFELSE],
+[
+ AC_REQUIRE([gl_GETOPT_CHECK_HEADERS])
+ AS_IF([test -n "$GETOPT_H"], [$1], [$2])
+])
+
+AC_DEFUN([gl_GETOPT], [gl_GETOPT_IFELSE([gl_GETOPT_SUBSTITUTE])])
+
+# Prerequisites of lib/getopt*.
+AC_DEFUN([gl_PREREQ_GETOPT],
+[
+ AC_CHECK_DECLS_ONCE([getenv])
+])
diff --git a/parted-1.8.7/m4/gettext.m4 b/parted-1.8.7/m4/gettext.m4
new file mode 100644
index 0000000..4ffe433
--- /dev/null
+++ b/parted-1.8.7/m4/gettext.m4
@@ -0,0 +1,420 @@
+# gettext.m4 serial 59 (gettext-0.16.1)
+dnl Copyright (C) 1995-2006 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.
+
+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([$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 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_TRY_LINK([#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_TRY_LINK([#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])
+])
+
+
+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/parted-1.8.7/m4/glibc21.m4 b/parted-1.8.7/m4/glibc21.m4
new file mode 100644
index 0000000..d95fd98
--- /dev/null
+++ b/parted-1.8.7/m4/glibc21.m4
@@ -0,0 +1,30 @@
+# glibc21.m4 serial 3
+dnl Copyright (C) 2000-2002, 2004 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.
+
+# Test for the GNU C Library, version 2.1 or newer.
+# From Bruno Haible.
+
+AC_DEFUN([gl_GLIBC21],
+ [
+ AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer,
+ ac_cv_gnu_library_2_1,
+ [AC_EGREP_CPP([Lucky GNU user],
+ [
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2)
+ Lucky GNU user
+ #endif
+#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/parted-1.8.7/m4/gnulib-common.m4 b/parted-1.8.7/m4/gnulib-common.m4
new file mode 100644
index 0000000..5398010
--- /dev/null
+++ b/parted-1.8.7/m4/gnulib-common.m4
@@ -0,0 +1,22 @@
+# gnulib-common.m4 serial 2
+dnl Copyright (C) 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.
+
+# gl_MODULE_INDICATOR([modulename])
+# defines a C macro indicating the presence of the given module.
+AC_DEFUN([gl_MODULE_INDICATOR],
+[
+ AC_DEFINE([GNULIB_]translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___]), [1],
+ [Define to 1 when using the gnulib module ]$1[.])
+])
+
+# AC_PROG_MKDIR_P
+# is a backport of autoconf-2.60's AC_PROG_MKDIR_P.
+# Remove this macro when we can assume autoconf >= 2.60.
+m4_ifdef([AC_PROG_MKDIR_P], [], [
+ AC_DEFUN([AC_PROG_MKDIR_P],
+ [AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
+ MKDIR_P='$(mkdir_p)'
+ AC_SUBST([MKDIR_P])])])
diff --git a/parted-1.8.7/m4/gnulib-comp.m4 b/parted-1.8.7/m4/gnulib-comp.m4
new file mode 100644
index 0000000..982083a
--- /dev/null
+++ b/parted-1.8.7/m4/gnulib-comp.m4
@@ -0,0 +1,312 @@
+# -*- buffer-read-only: t -*- vi: set ro:
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+# DO NOT EDIT! GENERATED AUTOMATICALLY!
+# Copyright (C) 2004-2007 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 using CVS, 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([AC_GNU_SOURCE])
+ AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+ 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])
+])
+
+# This macro should be invoked from ./configure.ac, in the section
+# "Check for header files, types and library functions".
+AC_DEFUN([gl_INIT],
+[
+ 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]))
+ AM_CONDITIONAL([GL_COND_LIBTOOL], [true])
+ gl_cond_libtool=true
+ gl_source_base='lib'
+changequote(,)dnl
+LTALLOCA=`echo "$ALLOCA" | sed 's/\.[^.]* /.lo /g;s/\.[^.]*$/.lo/'`
+changequote([, ])dnl
+AC_SUBST([LTALLOCA])
+ gl_FUNC_ALLOCA
+ gl_ASSERT
+ gl_FUNC_ATEXIT
+ AC_FUNC_CALLOC
+ gl_CLOSE_STREAM
+ gl_MODULE_INDICATOR([close-stream])
+ gl_CLOSEOUT
+ gl_CONFIG_H
+ gl_DIRNAME
+ gl_DOUBLE_SLASH_ROOT
+ gl_ERROR
+ gl_EXITFAIL
+ gl_FUNC_FPENDING
+ gl_FUNC_FREE
+ gl_GETOPT
+ dnl you must add AM_GNU_GETTEXT([external]) or similar to configure.ac.
+ AM_GNU_GETTEXT_VERSION([0.16.1])
+ AC_SUBST([LIBINTL])
+ AC_SUBST([LTLIBINTL])
+ gl_INLINE
+ gl_INTTYPES_H
+ gl_IGNORE_UNUSED_LIBRARIES
+ gl_LOCALCHARSET
+ gl_LONG_OPTIONS
+ AC_FUNC_MALLOC
+ gl_FUNC_MEMCHR
+ gl_FUNC_MEMCMP
+ gl_FUNC_MEMCPY
+ gl_FUNC_MEMMOVE
+ gl_FUNC_MEMSET
+ gl_QUOTEARG
+ AC_FUNC_REALLOC
+ gl_REGEX
+ gl_FUNC_RENAME
+ gl_FUNC_RPMATCH
+ gl_SAFE_READ
+ gl_SAFE_WRITE
+ gt_TYPE_SSIZE_T
+ gl_STDARG_H
+ AM_STDBOOL_H
+ gl_STDINT_H
+ gl_STDLIB_H
+ gl_FUNC_STRCSPN
+ gl_HEADER_STRING_H
+ gl_FUNC_STRNDUP
+ gl_STRING_MODULE_INDICATOR([strndup])
+ gl_FUNC_STRNLEN
+ gl_STRING_MODULE_INDICATOR([strnlen])
+ gl_FUNC_STRTOD
+ gl_FUNC_STRTOL
+ gl_UNISTD_H
+ gl_FUNC_UTIME
+ gl_WCHAR_H
+ gl_WCTYPE_H
+ gl_XALLOC
+ gl_XSTRNDUP
+ 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 "$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])
+ ])
+])
+
+# Like AC_LIBOBJ, except that the module name goes
+# into gl_LIBOBJS instead of into LIBOBJS.
+AC_DEFUN([gl_LIBOBJ],
+ [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],
+ [AC_CHECK_FUNCS([$1], , [gl_LIBOBJ($ac_func)])])
+
+# Like AC_LIBSOURCES, except that it does nothing.
+# We rely on EXTRA_lib..._SOURCES instead.
+AC_DEFUN([gl_LIBSOURCES],
+ [])
+
+# 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/config.rpath
+ build-aux/gnupload
+ build-aux/link-warning.h
+ doc/fdl.texi
+ lib/__fpending.c
+ lib/__fpending.h
+ lib/alloca.c
+ lib/alloca_.h
+ lib/atexit.c
+ lib/basename.c
+ lib/calloc.c
+ lib/close-stream.c
+ lib/close-stream.h
+ lib/closeout.c
+ lib/closeout.h
+ lib/config.charset
+ lib/dirname.c
+ lib/dirname.h
+ lib/error.c
+ lib/error.h
+ lib/exitfail.c
+ lib/exitfail.h
+ lib/free.c
+ lib/full-write.c
+ lib/full-write.h
+ lib/getopt.c
+ lib/getopt1.c
+ lib/getopt_.h
+ lib/getopt_int.h
+ lib/gettext.h
+ lib/inttypes_.h
+ lib/localcharset.c
+ lib/localcharset.h
+ lib/long-options.c
+ lib/long-options.h
+ lib/malloc.c
+ lib/memchr.c
+ lib/memcmp.c
+ lib/memcpy.c
+ lib/memmove.c
+ lib/memset.c
+ lib/quotearg.c
+ lib/quotearg.h
+ 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/rename.c
+ lib/rpmatch.c
+ lib/safe-read.c
+ lib/safe-read.h
+ lib/safe-write.c
+ lib/safe-write.h
+ lib/stdbool_.h
+ lib/stdint_.h
+ lib/stdlib_.h
+ lib/strcspn.c
+ lib/string_.h
+ lib/stripslash.c
+ lib/strndup.c
+ lib/strnlen.c
+ lib/strtod.c
+ lib/strtol.c
+ lib/unistd_.h
+ lib/utime.c
+ lib/version-etc-fsf.c
+ lib/version-etc.c
+ lib/version-etc.h
+ lib/wchar_.h
+ lib/wctype_.h
+ lib/xalloc-die.c
+ lib/xalloc.h
+ lib/xmalloc.c
+ lib/xstrndup.c
+ lib/xstrndup.h
+ m4/absolute-header.m4
+ m4/alloca.m4
+ m4/assert.m4
+ m4/atexit.m4
+ m4/calloc.m4
+ m4/close-stream.m4
+ m4/closeout.m4
+ m4/codeset.m4
+ m4/config-h.m4
+ m4/dirname.m4
+ m4/dos.m4
+ m4/double-slash-root.m4
+ m4/error.m4
+ m4/exitfail.m4
+ m4/extensions.m4
+ m4/fpending.m4
+ m4/free.m4
+ m4/getopt.m4
+ m4/gettext.m4
+ m4/glibc2.m4
+ m4/glibc21.m4
+ m4/gnulib-common.m4
+ m4/iconv.m4
+ m4/inline.m4
+ m4/intdiv0.m4
+ m4/intl.m4
+ m4/intldir.m4
+ m4/intmax.m4
+ m4/inttypes-pri.m4
+ m4/inttypes.m4
+ m4/inttypes_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/lock.m4
+ m4/long-options.m4
+ m4/longlong.m4
+ m4/mbrtowc.m4
+ m4/mbstate_t.m4
+ m4/memchr.m4
+ m4/memcmp.m4
+ m4/memcpy.m4
+ m4/memmove.m4
+ m4/memset.m4
+ m4/nls.m4
+ m4/po.m4
+ m4/printf-posix.m4
+ m4/progtest.m4
+ m4/quotearg.m4
+ m4/regex.m4
+ m4/rename.m4
+ m4/rpmatch.m4
+ m4/safe-read.m4
+ m4/safe-write.m4
+ m4/size_max.m4
+ m4/ssize_t.m4
+ m4/stdarg.m4
+ m4/stdbool.m4
+ m4/stdint.m4
+ m4/stdint_h.m4
+ m4/stdlib_h.m4
+ m4/strcspn.m4
+ m4/string_h.m4
+ m4/strndup.m4
+ m4/strnlen.m4
+ m4/strtod.m4
+ m4/strtol.m4
+ m4/uintmax_t.m4
+ m4/ulonglong.m4
+ m4/unistd_h.m4
+ m4/utimbuf.m4
+ m4/utime.m4
+ m4/utimes-null.m4
+ m4/utimes.m4
+ m4/visibility.m4
+ m4/wchar.m4
+ m4/wchar_t.m4
+ m4/wctype.m4
+ m4/wint_t.m4
+ m4/xalloc.m4
+ m4/xsize.m4
+ m4/xstrndup.m4
+])
diff --git a/parted-1.8.7/m4/iconv.m4 b/parted-1.8.7/m4/iconv.m4
new file mode 100644
index 0000000..32239e3
--- /dev/null
+++ b/parted-1.8.7/m4/iconv.m4
@@ -0,0 +1,179 @@
+# iconv.m4 serial AM5 (gettext-0.16.2)
+dnl Copyright (C) 2000-2002, 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.
+
+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 and HP-UX 11.11.
+ 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;
+ }
+ }
+#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 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([$]{ac_t:-
+ }[$]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/parted-1.8.7/m4/inline.m4 b/parted-1.8.7/m4/inline.m4
new file mode 100644
index 0000000..a07076c
--- /dev/null
+++ b/parted-1.8.7/m4/inline.m4
@@ -0,0 +1,40 @@
+# inline.m4 serial 3
+dnl Copyright (C) 2006 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/parted-1.8.7/m4/inttypes-pri.m4 b/parted-1.8.7/m4/inttypes-pri.m4
new file mode 100644
index 0000000..7c7f894
--- /dev/null
+++ b/parted-1.8.7/m4/inttypes-pri.m4
@@ -0,0 +1,36 @@
+# inttypes-pri.m4 serial 4 (gettext-0.16)
+dnl Copyright (C) 1997-2002, 2006 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.52)
+
+# 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_TRY_COMPILE([#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/parted-1.8.7/m4/inttypes.m4 b/parted-1.8.7/m4/inttypes.m4
new file mode 100644
index 0000000..095ace9
--- /dev/null
+++ b/parted-1.8.7/m4/inttypes.m4
@@ -0,0 +1,223 @@
+# inttypes.m4 serial 8
+dnl Copyright (C) 2006-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 Derek Price, Bruno Haible.
+dnl Test whether <inttypes.h> is supported or must be substituted.
+
+AC_DEFUN([gl_INTTYPES_H],
+[
+ AC_REQUIRE([gl_STDINT_H])
+ AC_REQUIRE([gt_INTTYPES_PRI])
+ AC_CHECK_DECLS_ONCE([imaxabs])
+ AC_CHECK_DECLS_ONCE([imaxdiv])
+ AC_CHECK_DECLS_ONCE([strtoimax])
+ AC_CHECK_DECLS_ONCE([strtoumax])
+
+ dnl Now see if we need a substitute <inttypes.h>.
+ dnl A complete <inttypes.h> requires
+ dnl - a complete <stdint.h>,
+ dnl - the existence of an <inttypes.h>,
+ dnl - that imaxabs, imaxdiv, strtoimax, strtoumax are declared,
+ dnl - some additional tests.
+ AC_CACHE_CHECK([whether inttypes.h conforms to C99],
+ [gl_cv_header_working_inttypes_h],
+ [gl_cv_header_working_inttypes_h=no
+ if test "$gl_cv_header_working_stdint_h" = yes \
+ && test $ac_cv_header_inttypes_h = yes \
+ && test "$ac_cv_have_decl_imaxabs" = yes \
+ && test "$ac_cv_have_decl_imaxdiv" = yes \
+ && test "$ac_cv_have_decl_strtoimax" = yes \
+ && test "$ac_cv_have_decl_strtoumax" = yes; then
+ AC_COMPILE_IFELSE([
+ AC_LANG_PROGRAM([
+#include <stddef.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 __STDC_FORMAT_MACROS 1 /* to make it work also in C++ mode */
+#include ABSOLUTE_INTTYPES_H
+
+/* No need to duplicate the tests of stdint.m4; they are subsumed by
+ $gl_cv_header_working_stdint_h = yes. */
+
+/* Tests for macros supposed to be defined in inttypes.h. */
+
+const char *k = /* implicit string concatenation */
+#ifdef INT8_MAX
+ PRId8 PRIi8
+#endif
+#ifdef UINT8_MAX
+ PRIo8 PRIu8 PRIx8 PRIX8
+#endif
+#ifdef INT16_MAX
+ PRId16 PRIi16
+#endif
+#ifdef UINT16_MAX
+ PRIo16 PRIu16 PRIx16 PRIX16
+#endif
+#ifdef INT32_MAX
+ PRId32 PRIi32
+#endif
+#ifdef UINT32_MAX
+ PRIo32 PRIu32 PRIx32 PRIX32
+#endif
+#ifdef INT64_MAX
+ PRId64 PRIi64
+#endif
+#ifdef UINT64_MAX
+ PRIo64 PRIu64 PRIx64 PRIX64
+#endif
+ PRIdLEAST8 PRIiLEAST8 PRIoLEAST8 PRIuLEAST8 PRIxLEAST8 PRIXLEAST8
+ PRIdLEAST16 PRIiLEAST16 PRIoLEAST16 PRIuLEAST16 PRIxLEAST16 PRIXLEAST16
+ PRIdLEAST32 PRIiLEAST32 PRIoLEAST32 PRIuLEAST32 PRIxLEAST32 PRIXLEAST32
+ PRIdLEAST64 PRIiLEAST64
+ PRIoLEAST64 PRIuLEAST64 PRIxLEAST64 PRIXLEAST64
+ PRIdFAST8 PRIiFAST8 PRIoFAST8 PRIuFAST8 PRIxFAST8 PRIXFAST8
+ PRIdFAST16 PRIiFAST16 PRIoFAST16 PRIuFAST16 PRIxFAST16 PRIXFAST16
+ PRIdFAST32 PRIiFAST32 PRIoFAST32 PRIuFAST32 PRIxFAST32 PRIXFAST32
+ PRIdFAST64 PRIiFAST64
+ PRIoFAST64 PRIuFAST64 PRIxFAST64 PRIXFAST64
+ PRIdMAX PRIiMAX PRIoMAX PRIuMAX PRIxMAX PRIXMAX
+#ifdef INTPTR_MAX
+ PRIdPTR PRIiPTR
+#endif
+#ifdef UINTPTR_MAX
+ PRIoPTR PRIuPTR PRIxPTR PRIXPTR
+#endif
+ ;
+const char *l = /* implicit string concatenation */
+#ifdef INT8_MAX
+ SCNd8 SCNi8
+#endif
+#ifdef UINT8_MAX
+ SCNo8 SCNu8 SCNx8
+#endif
+#ifdef INT16_MAX
+ SCNd16 SCNi16
+#endif
+#ifdef UINT16_MAX
+ SCNo16 SCNu16 SCNx16
+#endif
+#ifdef INT32_MAX
+ SCNd32 SCNi32
+#endif
+#ifdef UINT32_MAX
+ SCNo32 SCNu32 SCNx32
+#endif
+#ifdef INT64_MAX
+ SCNd64 SCNi64
+#endif
+#ifdef UINT64_MAX
+ SCNo64 SCNu64 SCNx64
+#endif
+ SCNdLEAST8 SCNiLEAST8 SCNoLEAST8 SCNuLEAST8 SCNxLEAST8
+ SCNdLEAST16 SCNiLEAST16 SCNoLEAST16 SCNuLEAST16 SCNxLEAST16
+ SCNdLEAST32 SCNiLEAST32 SCNoLEAST32 SCNuLEAST32 SCNxLEAST32
+ SCNdLEAST64 SCNiLEAST64
+ SCNoLEAST64 SCNuLEAST64 SCNxLEAST64
+ SCNdFAST8 SCNiFAST8 SCNoFAST8 SCNuFAST8 SCNxFAST8
+ SCNdFAST16 SCNiFAST16 SCNoFAST16 SCNuFAST16 SCNxFAST16
+ SCNdFAST32 SCNiFAST32 SCNoFAST32 SCNuFAST32 SCNxFAST32
+ SCNdFAST64 SCNiFAST64
+ SCNoFAST64 SCNuFAST64 SCNxFAST64
+ SCNdMAX SCNiMAX SCNoMAX SCNuMAX SCNxMAX
+#ifdef INTPTR_MAX
+ SCNdPTR SCNiPTR
+#endif
+#ifdef UINTPTR_MAX
+ SCNoPTR SCNuPTR SCNxPTR
+#endif
+ ;
+ ])],
+ [gl_cv_header_working_inttypes_h=yes])
+ fi])
+
+ dnl Override <inttypes.h> always, so that the portability warnings work.
+ if false && test $gl_cv_header_working_inttypes_h = yes; then
+ dnl Use the existing <inttypes.h>.
+ INTTYPES_H=''
+ else
+
+ AC_REQUIRE([gl_INTTYPES_H_DEFAULTS])
+ dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_inttypes_h.
+ if test $ac_cv_header_inttypes_h = yes; then
+ gl_ABSOLUTE_HEADER([inttypes.h])
+ ABSOLUTE_INTTYPES_H=\"$gl_cv_absolute_inttypes_h\"
+ else
+ ABSOLUTE_INTTYPES_H=\"no/such/file/inttypes.h\"
+ fi
+ AC_SUBST([ABSOLUTE_INTTYPES_H])
+
+ 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])
+
+ if test "$ac_cv_have_decl_imaxabs" = yes; then
+ HAVE_DECL_IMAXABS=1
+ else
+ HAVE_DECL_IMAXABS=0
+ fi
+
+ if test "$ac_cv_have_decl_imaxdiv" = yes; then
+ HAVE_DECL_IMAXDIV=1
+ else
+ HAVE_DECL_IMAXDIV=0
+ fi
+
+ if test "$ac_cv_have_decl_strtoimax" = yes; then
+ HAVE_DECL_STRTOIMAX=1
+ else
+ HAVE_DECL_STRTOIMAX=0
+ fi
+
+ if test "$ac_cv_have_decl_strtoumax" = yes; then
+ HAVE_DECL_STRTOUMAX=1
+ else
+ HAVE_DECL_STRTOUMAX=0
+ fi
+
+ INTTYPES_H='inttypes.h'
+ fi
+ AC_SUBST(INTTYPES_H)
+])
+
+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])
+ GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=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])
+])
diff --git a/parted-1.8.7/m4/lib-ignore.m4 b/parted-1.8.7/m4/lib-ignore.m4
new file mode 100644
index 0000000..e518f81
--- /dev/null
+++ b/parted-1.8.7/m4/lib-ignore.m4
@@ -0,0 +1,43 @@
+# If possible, ignore libraries that are not depended on.
+
+dnl Copyright (C) 2006 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_IGNORE_UNUSED_LIBRARIES],
+[
+ AC_CACHE_CHECK([for flag to ignore unused libraries],
+ [gl_cv_ignore_unused_libraries],
+ [gl_cv_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 '-z ignore'.
+ # 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"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM()],
+ [gl_cv_ignore_unused_libraries=$gl_flags])
+ LDFLAGS=$gl_saved_ldflags
+ test "$gl_cv_ignore_unused_libraries" != none && break
+ done
+ LIBS=$gl_saved_libs])
+
+ test "$gl_cv_ignore_unused_libraries" != none &&
+ LDFLAGS="$LDFLAGS $gl_cv_ignore_unused_libraries"
+])
diff --git a/parted-1.8.7/m4/lib-ld.m4 b/parted-1.8.7/m4/lib-ld.m4
new file mode 100644
index 0000000..96c4e2c
--- /dev/null
+++ b/parted-1.8.7/m4/lib-ld.m4
@@ -0,0 +1,110 @@
+# lib-ld.m4 serial 3 (gettext-0.13)
+dnl Copyright (C) 1996-2003 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
+ 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
+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/parted-1.8.7/m4/lib-link.m4 b/parted-1.8.7/m4/lib-link.m4
new file mode 100644
index 0000000..f157d98
--- /dev/null
+++ b/parted-1.8.7/m4/lib-link.m4
@@ -0,0 +1,709 @@
+# lib-link.m4 serial 13 (gettext-0.16.2)
+dnl Copyright (C) 2001-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.
+
+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])
+ define([Name],[translit([$1],[./-], [___])])
+ define([NAME],[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
+ undefine([Name])
+ undefine([NAME])
+])
+
+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode)
+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. If found, it
+dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and
+dnl 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])
+ define([Name],[translit([$1],[./-], [___])])
+ define([NAME],[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"
+ LIBS="$LIBS $LIB[]NAME"
+ AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no])
+ 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 $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])
+ undefine([Name])
+ undefine([NAME])
+])
+
+dnl Determine the platform dependent parameters needed to use rpath:
+dnl acl_libext,
+dnl acl_shlibext,
+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_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])
+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-],
+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])])
+ dnl Autoconf >= 2.61 supports dots in --with options.
+ define([N_A_M_E],[m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.61]),[-1],[translit([$1],[.],[_])],[$1])])
+ dnl By default, look in $includedir and $libdir.
+ use_additional=yes
+ AC_LIB_WITH_FINAL_PREFIX([
+ eval additional_includedir=\"$includedir\"
+ eval additional_libdir=\"$libdir\"
+ ])
+ AC_LIB_ARG_WITH([lib]N_A_M_E[-prefix],
+[ --with-lib]N_A_M_E[-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib
+ --without-lib]N_A_M_E[-prefix don't search for lib$1 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
+])
+ 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=
+ 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"; 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/"'*$,,'`
+ LIB[]NAME[]_PREFIX="$basedir"
+ 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"; then
+ haveit=
+ if test "X$additional_libdir" = "X/usr/local/$acl_libdirstem"; 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
+])
+
+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"; 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"; 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/parted-1.8.7/m4/lib-prefix.m4 b/parted-1.8.7/m4/lib-prefix.m4
new file mode 100644
index 0000000..a8684e1
--- /dev/null
+++ b/parted-1.8.7/m4/lib-prefix.m4
@@ -0,0 +1,185 @@
+# lib-prefix.m4 serial 5 (gettext-0.15)
+dnl Copyright (C) 2001-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 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 a variable acl_libdirstem, containing
+dnl the basename of the libdir, either "lib" or "lib64".
+AC_DEFUN([AC_LIB_PREPARE_MULTILIB],
+[
+ dnl There is no formal standard regarding lib and lib64. The current
+ dnl practice is that on a system supporting 32-bit and 64-bit instruction
+ dnl sets or ABIs, 64-bit libraries go under $prefix/lib64 and 32-bit
+ dnl libraries go under $prefix/lib. We determine the compiler's default
+ dnl mode by looking at the compiler's library search path. If at least
+ dnl of its elements ends in /lib64 or points to a directory whose absolute
+ dnl pathname ends in /lib64, we assume a 64-bit ABI. Otherwise we use the
+ dnl default, namely "lib".
+ acl_libdirstem=lib
+ 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 ;;
+ *) searchdir=`cd "$searchdir" && pwd`
+ case "$searchdir" in
+ */lib64 ) acl_libdirstem=lib64 ;;
+ esac ;;
+ esac
+ fi
+ done
+ IFS="$acl_save_IFS"
+ fi
+])
diff --git a/parted-1.8.7/m4/localcharset.m4 b/parted-1.8.7/m4/localcharset.m4
new file mode 100644
index 0000000..b2b7733
--- /dev/null
+++ b/parted-1.8.7/m4/localcharset.m4
@@ -0,0 +1,16 @@
+# localcharset.m4 serial 5
+dnl Copyright (C) 2002, 2004, 2006 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_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/parted-1.8.7/m4/long-options.m4 b/parted-1.8.7/m4/long-options.m4
new file mode 100644
index 0000000..2712bad
--- /dev/null
+++ b/parted-1.8.7/m4/long-options.m4
@@ -0,0 +1,12 @@
+# long-options.m4 serial 5
+dnl Copyright (C) 2002, 2003, 2005, 2006 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_LONG_OPTIONS],
+[
+ AC_LIBOBJ([long-options])
+
+ dnl Prerequisites of lib/long-options.c.
+])
diff --git a/parted-1.8.7/m4/longlong.m4 b/parted-1.8.7/m4/longlong.m4
new file mode 100644
index 0000000..1f9e862
--- /dev/null
+++ b/parted-1.8.7/m4/longlong.m4
@@ -0,0 +1,72 @@
+# longlong.m4 serial 10
+dnl Copyright (C) 1999-2006 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.60, but can be removed once we
+# assume 2.61 everywhere.
+
+# 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_CACHE_CHECK([for long long int], [ac_cv_type_long_long_int],
+ [AC_LINK_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[long long int ll = 9223372036854775807ll;
+ long long int nll = -9223372036854775807LL;
+ typedef int a[((-9223372036854775807LL < 0
+ && 0 < 9223372036854775807ll)
+ ? 1 : -1)];
+ int i = 63;]],
+ [[long long int llmax = 9223372036854775807ll;
+ return ((ll << 63) | (ll >> 63) | (ll < i) | (ll > i)
+ | (llmax / ll) | (llmax % ll));]])],
+ [dnl This catches a bug in Tandem NonStop Kernel (OSS) cc -O circa 2004.
+ dnl If cross compiling, assume the bug isn't 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=yes],
+ [ac_cv_type_long_long_int=no],
+ [ac_cv_type_long_long_int=yes])],
+ [ac_cv_type_long_long_int=no])])
+ 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
+])
+
+# This macro is obsolescent and should go away soon.
+AC_DEFUN([gl_AC_TYPE_LONG_LONG],
+[
+ AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
+ ac_cv_type_long_long=$ac_cv_type_long_long_int
+ if test $ac_cv_type_long_long = yes; then
+ AC_DEFINE(HAVE_LONG_LONG, 1,
+ [Define if you have the 'long long' type.])
+ fi
+])
diff --git a/parted-1.8.7/m4/mbrtowc.m4 b/parted-1.8.7/m4/mbrtowc.m4
new file mode 100644
index 0000000..a3bd911
--- /dev/null
+++ b/parted-1.8.7/m4/mbrtowc.m4
@@ -0,0 +1,31 @@
+# mbrtowc.m4 serial 8
+dnl Copyright (C) 2001-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 From Paul Eggert
+
+dnl This file can be removed, and gl_FUNC_MBRTOWC replaced with
+dnl AC_FUNC_MBRTOWC, when autoconf 2.60 can be assumed everywhere.
+
+AC_DEFUN([gl_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(
+ [[#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/parted-1.8.7/m4/mbstate_t.m4 b/parted-1.8.7/m4/mbstate_t.m4
new file mode 100644
index 0000000..df2a275
--- /dev/null
+++ b/parted-1.8.7/m4/mbstate_t.m4
@@ -0,0 +1,30 @@
+# mbstate_t.m4 serial 9
+dnl Copyright (C) 2000, 2001, 2002 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_CACHE_CHECK([for mbstate_t], ac_cv_type_mbstate_t,
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [AC_INCLUDES_DEFAULT
+# 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/parted-1.8.7/m4/memchr.m4 b/parted-1.8.7/m4/memchr.m4
new file mode 100644
index 0000000..91b8636
--- /dev/null
+++ b/parted-1.8.7/m4/memchr.m4
@@ -0,0 +1,18 @@
+# memchr.m4 serial 4
+dnl Copyright (C) 2002, 2003, 2004 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_MEMCHR],
+[
+ AC_REPLACE_FUNCS(memchr)
+ if test $ac_cv_func_memchr = no; then
+ gl_PREREQ_MEMCHR
+ fi
+])
+
+# Prerequisites of lib/memchr.c.
+AC_DEFUN([gl_PREREQ_MEMCHR], [
+ AC_CHECK_HEADERS(bp-sym.h)
+])
diff --git a/parted-1.8.7/m4/memcmp.m4 b/parted-1.8.7/m4/memcmp.m4
new file mode 100644
index 0000000..099b141
--- /dev/null
+++ b/parted-1.8.7/m4/memcmp.m4
@@ -0,0 +1,19 @@
+# memcmp.m4 serial 12
+dnl Copyright (C) 2002, 2003, 2004, 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.
+
+AC_DEFUN([gl_FUNC_MEMCMP],
+[
+ AC_FUNC_MEMCMP
+ dnl Note: AC_FUNC_MEMCMP does AC_LIBOBJ(memcmp).
+ if test $ac_cv_func_memcmp_working = no; then
+ AC_DEFINE(memcmp, rpl_memcmp,
+ [Define to rpl_memcmp if the replacement function should be used.])
+ gl_PREREQ_MEMCMP
+ fi
+])
+
+# Prerequisites of lib/memcmp.c.
+AC_DEFUN([gl_PREREQ_MEMCMP], [:])
diff --git a/parted-1.8.7/m4/memcpy.m4 b/parted-1.8.7/m4/memcpy.m4
new file mode 100644
index 0000000..3edc62e
--- /dev/null
+++ b/parted-1.8.7/m4/memcpy.m4
@@ -0,0 +1,18 @@
+# memcpy.m4 serial 2
+dnl Copyright (C) 2002 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_MEMCPY],
+[
+ AC_REPLACE_FUNCS(memcpy)
+ if test $ac_cv_func_memcpy = no; then
+ gl_PREREQ_MEMCPY
+ fi
+])
+
+# Prerequisites of lib/memcpy.c.
+AC_DEFUN([gl_PREREQ_MEMCPY], [
+ :
+])
diff --git a/parted-1.8.7/m4/memmove.m4 b/parted-1.8.7/m4/memmove.m4
new file mode 100644
index 0000000..66054e4
--- /dev/null
+++ b/parted-1.8.7/m4/memmove.m4
@@ -0,0 +1,18 @@
+# memmove.m4 serial 2
+dnl Copyright (C) 2002 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_MEMMOVE],
+[
+ AC_REPLACE_FUNCS(memmove)
+ if test $ac_cv_func_memmove = no; then
+ gl_PREREQ_MEMMOVE
+ fi
+])
+
+# Prerequisites of lib/memmove.c.
+AC_DEFUN([gl_PREREQ_MEMMOVE], [
+ :
+])
diff --git a/parted-1.8.7/m4/memset.m4 b/parted-1.8.7/m4/memset.m4
new file mode 100644
index 0000000..14ac267
--- /dev/null
+++ b/parted-1.8.7/m4/memset.m4
@@ -0,0 +1,18 @@
+# memset.m4 serial 2
+dnl Copyright (C) 2002 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_MEMSET],
+[
+ AC_REPLACE_FUNCS(memset)
+ if test $ac_cv_func_memset = no; then
+ gl_PREREQ_MEMSET
+ fi
+])
+
+# Prerequisites of lib/memset.c.
+AC_DEFUN([gl_PREREQ_MEMSET], [
+ :
+])
diff --git a/parted-1.8.7/m4/nls.m4 b/parted-1.8.7/m4/nls.m4
new file mode 100644
index 0000000..7967cc2
--- /dev/null
+++ b/parted-1.8.7/m4/nls.m4
@@ -0,0 +1,31 @@
+# nls.m4 serial 3 (gettext-0.15)
+dnl Copyright (C) 1995-2003, 2005-2006 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)
+
+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/parted-1.8.7/m4/po.m4 b/parted-1.8.7/m4/po.m4
new file mode 100644
index 0000000..00133ef
--- /dev/null
+++ b/parted-1.8.7/m4/po.m4
@@ -0,0 +1,428 @@
+# po.m4 serial 13 (gettext-0.15)
+dnl Copyright (C) 1995-2006 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 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])
+
+ 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"
+])
diff --git a/parted-1.8.7/m4/progtest.m4 b/parted-1.8.7/m4/progtest.m4
new file mode 100644
index 0000000..a56365c
--- /dev/null
+++ b/parted-1.8.7/m4/progtest.m4
@@ -0,0 +1,92 @@
+# progtest.m4 serial 4 (gettext-0.14.2)
+dnl Copyright (C) 1996-2003, 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>, 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/parted-1.8.7/m4/quotearg.m4 b/parted-1.8.7/m4/quotearg.m4
new file mode 100644
index 0000000..db635d0
--- /dev/null
+++ b/parted-1.8.7/m4/quotearg.m4
@@ -0,0 +1,15 @@
+# quotearg.m4 serial 6
+dnl Copyright (C) 2002, 2004, 2005, 2006, 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.
+
+AC_DEFUN([gl_QUOTEARG],
+[
+ AC_LIBOBJ([quotearg])
+
+ dnl Prerequisites of lib/quotearg.c.
+ AC_CHECK_FUNCS_ONCE([mbsinit])
+ AC_TYPE_MBSTATE_T
+ gl_FUNC_MBRTOWC
+])
diff --git a/parted-1.8.7/m4/regex.m4 b/parted-1.8.7/m4/regex.m4
new file mode 100644
index 0000000..b8d5b1e
--- /dev/null
+++ b/parted-1.8.7/m4/regex.m4
@@ -0,0 +1,211 @@
+#serial 46
+
+# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005,
+# 2006, 2007 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_CHECK_HEADERS_ONCE([locale.h])
+
+ AC_ARG_WITH([included-regex],
+ [AC_HELP_STRING([--without-included-regex],
+ [don't compile regex; this is the default on 32-bit
+ systems with recent-enough versions of the GNU C
+ Library (use with caution on other systems).
+ On systems with 64-bit ptrdiff_t and 32-bit int,
+ --with-included-regex is the default, in case
+ regex functions operate on very long strings (>2GB)])])
+
+ 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
+ #if HAVE_LOCALE_H
+ #include <locale.h>
+ #endif
+ #include <limits.h>
+ #include <regex.h>
+ ],
+ [[static struct re_pattern_buffer regex;
+ unsigned char folded_chars[UCHAR_MAX + 1];
+ int i;
+ const char *s;
+ struct re_registers regs;
+
+ #if HAVE_LOCALE_H
+ /* 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 (®ex, 0, sizeof regex);
+ s = re_compile_pattern (pat, sizeof pat - 1, ®ex);
+ if (s)
+ return 1;
+ if (re_search (®ex, data, sizeof data - 1,
+ 0, sizeof data - 1, ®s)
+ != -1)
+ return 1;
+ if (! setlocale (LC_ALL, "C"))
+ return 1;
+ }
+ #endif
+
+ /* This test is from glibc bug 3957, reported by Andrew Mackey. */
+ re_set_syntax (RE_SYNTAX_EGREP | RE_HAT_LISTS_NOT_NEWLINE);
+ memset (®ex, 0, sizeof regex);
+ s = re_compile_pattern ("a[^x]b", 6, ®ex);
+ if (s)
+ return 1;
+
+ /* This should fail, but succeeds for glibc-2.5. */
+ if (re_search (®ex, "a\nb", 3, 0, 3, ®s) != -1)
+ return 1;
+
+ /* This regular expression is from Spencer ere test number 75
+ in grep-2.3. */
+ re_set_syntax (RE_SYNTAX_POSIX_EGREP);
+ memset (®ex, 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, ®ex);
+ /* This should fail with _Invalid character class name_ error. */
+ if (!s)
+ return 1;
+
+ /* This should succeed, but does not for glibc-2.1.3. */
+ memset (®ex, 0, sizeof regex);
+ s = re_compile_pattern ("{1", 2, ®ex);
+
+ if (s)
+ return 1;
+
+ /* The following example is derived from a problem report
+ against gawk from Jorge Stolfi <stolfi@ic.unicamp.br>. */
+ memset (®ex, 0, sizeof regex);
+ s = re_compile_pattern ("[an\371]*n", 7, ®ex);
+ if (s)
+ return 1;
+
+ /* This should match, but does not for glibc-2.2.1. */
+ if (re_match (®ex, "an", 2, 0, ®s) != 2)
+ return 1;
+
+ memset (®ex, 0, sizeof regex);
+ s = re_compile_pattern ("x", 1, ®ex);
+ if (s)
+ return 1;
+
+ /* glibc-2.2.93 does not work with a negative RANGE argument. */
+ if (re_search (®ex, "wxy", 3, 2, -2, ®s) != 1)
+ return 1;
+
+ /* 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 (®ex, 0, sizeof regex);
+ s = re_compile_pattern ("x", 1, ®ex);
+ if (s)
+ return 1;
+
+ if (re_search (®ex, "WXY", 3, 0, 3, ®s) < 0)
+ return 1;
+
+ /* REG_STARTEND was added to glibc on 2004-01-15.
+ Reject older versions. */
+ if (! REG_STARTEND)
+ return 1;
+
+ /* Reject hosts whose regoff_t values are too narrow.
+ These include glibc 2.3.5 on hosts with 64-bit ptrdiff_t
+ and 32-bit int. */
+ if (sizeof (regoff_t) < sizeof (ptrdiff_t)
+ || sizeof (regoff_t) < sizeof (ssize_t))
+ return 1;
+
+ return 0;]])],
+ [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_GNU_SOURCE])
+ AC_REQUIRE([AC_C_RESTRICT])
+ AC_CHECK_FUNCS_ONCE([iswctype mbrtowc wcrtomb wcscoll])
+ AC_CHECK_DECLS([isblank], [], [], [#include <ctype.h>])
+])
diff --git a/parted-1.8.7/m4/rename.m4 b/parted-1.8.7/m4/rename.m4
new file mode 100644
index 0000000..39ad5e7
--- /dev/null
+++ b/parted-1.8.7/m4/rename.m4
@@ -0,0 +1,52 @@
+#serial 10
+
+# Copyright (C) 2001, 2003, 2005, 2006 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 Volker Borchert.
+dnl Determine whether rename works for source file names with a trailing slash.
+dnl The rename from SunOS 4.1.1_U1 doesn't.
+dnl
+dnl If it doesn't, then define RENAME_TRAILING_SLASH_BUG and arrange
+dnl to compile the wrapper function.
+dnl
+
+AC_DEFUN([gl_FUNC_RENAME],
+[
+ AC_CACHE_CHECK([whether rename is broken],
+ gl_cv_func_rename_trailing_slash_bug,
+ [
+ rm -rf conftest.d1 conftest.d2
+ mkdir conftest.d1 ||
+ AC_MSG_ERROR([cannot create temporary directory])
+ AC_TRY_RUN([
+# include <stdio.h>
+# include <stdlib.h>
+ int
+ main ()
+ {
+ exit (rename ("conftest.d1/", "conftest.d2") ? 1 : 0);
+ }
+ ],
+ gl_cv_func_rename_trailing_slash_bug=no,
+ gl_cv_func_rename_trailing_slash_bug=yes,
+ dnl When crosscompiling, assume rename is broken.
+ gl_cv_func_rename_trailing_slash_bug=yes)
+
+ rm -rf conftest.d1 conftest.d2
+ ])
+ if test $gl_cv_func_rename_trailing_slash_bug = yes; then
+ AC_LIBOBJ(rename)
+ AC_DEFINE(rename, rpl_rename,
+ [Define to rpl_rename if the replacement function should be used.])
+ AC_DEFINE(RENAME_TRAILING_SLASH_BUG, 1,
+ [Define if rename does not work for source file names with a trailing
+ slash, like the one from SunOS 4.1.1_U1.])
+ gl_PREREQ_RENAME
+ fi
+])
+
+# Prerequisites of lib/rename.c.
+AC_DEFUN([gl_PREREQ_RENAME], [:])
diff --git a/parted-1.8.7/m4/rpmatch.m4 b/parted-1.8.7/m4/rpmatch.m4
new file mode 100644
index 0000000..4a471ac
--- /dev/null
+++ b/parted-1.8.7/m4/rpmatch.m4
@@ -0,0 +1,16 @@
+# rpmatch.m4 serial 5
+dnl Copyright (C) 2002, 2003 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],
+[
+ AC_REPLACE_FUNCS(rpmatch)
+ if test $ac_cv_func_rpmatch = no; then
+ gl_PREREQ_RPMATCH
+ fi
+])
+
+# Prerequisites of lib/rpmatch.c.
+AC_DEFUN([gl_PREREQ_RPMATCH], [:])
diff --git a/parted-1.8.7/m4/safe-read.m4 b/parted-1.8.7/m4/safe-read.m4
new file mode 100644
index 0000000..7a89d0a
--- /dev/null
+++ b/parted-1.8.7/m4/safe-read.m4
@@ -0,0 +1,18 @@
+# safe-read.m4 serial 5
+dnl Copyright (C) 2002, 2003, 2005, 2006 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_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/parted-1.8.7/m4/safe-write.m4 b/parted-1.8.7/m4/safe-write.m4
new file mode 100644
index 0000000..db119ff
--- /dev/null
+++ b/parted-1.8.7/m4/safe-write.m4
@@ -0,0 +1,18 @@
+# safe-write.m4 serial 3
+dnl Copyright (C) 2002, 2005, 2006 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_SAFE_WRITE],
+[
+ AC_LIBOBJ([safe-write])
+
+ gl_PREREQ_SAFE_WRITE
+])
+
+# Prerequisites of lib/safe-write.c.
+AC_DEFUN([gl_PREREQ_SAFE_WRITE],
+[
+ gl_PREREQ_SAFE_READ
+])
diff --git a/parted-1.8.7/m4/ssize_t.m4 b/parted-1.8.7/m4/ssize_t.m4
new file mode 100644
index 0000000..4eaef93
--- /dev/null
+++ b/parted-1.8.7/m4/ssize_t.m4
@@ -0,0 +1,21 @@
+# ssize_t.m4 serial 4 (gettext-0.15)
+dnl Copyright (C) 2001-2003, 2006 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_TRY_COMPILE([#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/parted-1.8.7/m4/stdarg.m4 b/parted-1.8.7/m4/stdarg.m4
new file mode 100644
index 0000000..e8e680a
--- /dev/null
+++ b/parted-1.8.7/m4/stdarg.m4
@@ -0,0 +1,40 @@
+# stdarg.m4 serial 1
+dnl Copyright (C) 2006 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],
+[
+ AC_MSG_CHECKING([for va_copy])
+ AC_CACHE_VAL([gl_cv_func_va_copy], [
+ AC_TRY_COMPILE([#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
+ # Provide a substitute, either __va_copy or as a simple assignment.
+ AC_CACHE_VAL([gl_cv_func___va_copy], [
+ AC_TRY_COMPILE([#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
+])
diff --git a/parted-1.8.7/m4/stdbool.m4 b/parted-1.8.7/m4/stdbool.m4
new file mode 100644
index 0000000..2204ecd
--- /dev/null
+++ b/parted-1.8.7/m4/stdbool.m4
@@ -0,0 +1,115 @@
+# Check for stdbool.h that conforms to C99.
+
+dnl Copyright (C) 2002-2006 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.
+
+# Prepare for substituting <stdbool.h> if it is not supported.
+
+AC_DEFUN([AM_STDBOOL_H],
+[
+ AC_REQUIRE([AC_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])
+
+ 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 macro is only needed in autoconf <= 2.59. Newer versions of autoconf
+# have this macro built-in.
+
+AC_DEFUN([AC_HEADER_STDBOOL],
+ [AC_CACHE_CHECK([for stdbool.h that conforms to C99],
+ [ac_cv_header_stdbool_h],
+ [AC_TRY_COMPILE(
+ [
+ #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];
+ bool e = &s;
+ 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 };
+ _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];
+ #if defined __xlc__ || defined __GNUC__
+ /* Catch a bug in IBM AIX xlc compiler version 6.0.0.0
+ reported by James Lemley on 2005-10-05; see
+ http://lists.gnu.org/archive/html/bug-coreutils/2005-10/msg00086.html
+ This test is not quite right, since xlc is allowed to
+ reject this program, as the initializer for xlcbug is
+ not one of the forms that C requires support for.
+ However, doing the test right would require a run-time
+ test, and that would make cross-compilation harder.
+ Let us hope that IBM fixes the xlc bug, and also adds
+ support for this kind of constant expression. In the
+ meantime, this test will reject xlc, which is OK, since
+ our stdbool.h substitute should suffice. We also test
+ this with GCC, where it should work, to detect more
+ quickly whether someone messes up the test in the
+ future. */
+ char digs[] = "0123456789";
+ int xlcbug = 1 / (&(digs + 5)[-2 + (bool) 1] == &digs[4] ? 1 : -1);
+ #endif
+ /* 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;
+ ],
+ [
+ *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])
+ if test $ac_cv_header_stdbool_h = yes; then
+ AC_DEFINE(HAVE_STDBOOL_H, 1, [Define to 1 if stdbool.h conforms to C99.])
+ fi])
diff --git a/parted-1.8.7/m4/stdint.m4 b/parted-1.8.7/m4/stdint.m4
new file mode 100644
index 0000000..659ca85
--- /dev/null
+++ b/parted-1.8.7/m4/stdint.m4
@@ -0,0 +1,369 @@
+# stdint.m4 serial 23
+dnl Copyright (C) 2001-2002, 2004-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 Paul Eggert and Bruno Haible.
+dnl Test whether <stdint.h> is supported or must be substituted.
+
+AC_DEFUN([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 <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])
+
+ dnl AC_INCLUDES_DEFAULT defines $ac_cv_header_stdint_h.
+ if test $ac_cv_header_stdint_h = yes; then
+ gl_ABSOLUTE_HEADER([stdint.h])
+ ABSOLUTE_STDINT_H=\"$gl_cv_absolute_stdint_h\"
+ HAVE_STDINT_H=1
+ else
+ ABSOLUTE_STDINT_H=\"no/such/file/stdint.h\"
+ HAVE_STDINT_H=0
+ fi
+ AC_SUBST([ABSOLUTE_STDINT_H])
+ AC_SUBST([HAVE_STDINT_H])
+
+ dnl Now see whether we need a substitute <stdint.h>. Use
+ dnl ABSOLUTE_STDINT_H, not <stdint.h>, so that it also works during
+ dnl a "config.status --recheck" if a stdint.h has been
+ dnl created in the build directory.
+ 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([gl_STDINT_INCLUDES
+ [
+#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 */
+#include ABSOLUTE_STDINT_H
+#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;
+struct s {
+ int check_PTRDIFF: PTRDIFF_MIN < (ptrdiff_t) 0 && (ptrdiff_t) 0 < PTRDIFF_MAX ? 1 : -1;
+ int check_SIG_ATOMIC: SIG_ATOMIC_MIN <= (sig_atomic_t) 0 && (sig_atomic_t) 0 < SIG_ATOMIC_MAX ? 1 : -1;
+ int check_SIZE: (size_t) 0 < SIZE_MAX ? 1 : -1;
+ int check_WCHAR: WCHAR_MIN <= (wchar_t) 0 && (wchar_t) 0 < WCHAR_MAX ? 1 : -1;
+ int check_WINT: WINT_MIN <= (wint_t) 0 && (wint_t) 0 < WINT_MAX ? 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;
+};
+ ]])],
+ [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)
+])
+
+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.
+ AC_FOREACH([gltype], [$1],
+ [AH_TEMPLATE([BITSIZEOF_]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
+ AC_FOREACH([gltype], [$1],
+ [AC_SUBST([BITSIZEOF_]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.
+ AC_FOREACH([gltype], [$1],
+ [AH_TEMPLATE([HAVE_SIGNED_]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
+ AC_FOREACH([gltype], [$1],
+ [AC_SUBST([HAVE_SIGNED_]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.
+ AC_FOREACH([gltype], [$1],
+ [AH_TEMPLATE(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
+ AC_FOREACH([gltype], [$1],
+ [AC_SUBST(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>
+ #include <stdio.h>
+ #include <time.h>
+ #include <wchar.h>
+]])
+
+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_.h.
+AC_DEFUN([gl_STDINT_TYPE_PROPERTIES],
+[
+ gl_STDINT_BITSIZEOF([ptrdiff_t sig_atomic_t size_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
+ gl_INTEGER_TYPE_SUFFIX([ptrdiff_t sig_atomic_t size_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/parted-1.8.7/m4/stdlib_h.m4 b/parted-1.8.7/m4/stdlib_h.m4
new file mode 100644
index 0000000..d46a5f0
--- /dev/null
+++ b/parted-1.8.7/m4/stdlib_h.m4
@@ -0,0 +1,31 @@
+# stdlib_h.m4 serial 1
+dnl Copyright (C) 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.
+
+AC_DEFUN([gl_STDLIB_H],
+[
+ AC_REQUIRE([gl_STDLIB_H_DEFAULTS])
+ gl_ABSOLUTE_HEADER([stdlib.h])
+ ABSOLUTE_STDLIB_H=\"$gl_cv_absolute_stdlib_h\"
+ AC_SUBST([ABSOLUTE_STDLIB_H])
+])
+
+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])
+ GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_STDLIB_H_DEFAULTS],
+[
+ GNULIB_GETSUBOPT=0; AC_SUBST([GNULIB_GETSUBOPT])
+ GNULIB_MKDTEMP=0; AC_SUBST([GNULIB_MKDTEMP])
+ GNULIB_MKSTEMP=0; AC_SUBST([GNULIB_MKSTEMP])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_GETSUBOPT=1; AC_SUBST([HAVE_GETSUBOPT])
+ HAVE_MKDTEMP=1; AC_SUBST([HAVE_MKDTEMP])
+ REPLACE_MKSTEMP=0; AC_SUBST([REPLACE_MKSTEMP])
+])
diff --git a/parted-1.8.7/m4/strcspn.m4 b/parted-1.8.7/m4/strcspn.m4
new file mode 100644
index 0000000..9565004
--- /dev/null
+++ b/parted-1.8.7/m4/strcspn.m4
@@ -0,0 +1,16 @@
+# strcspn.m4 serial 2
+dnl Copyright (C) 2002-2003 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_STRCSPN],
+[
+ AC_REPLACE_FUNCS(strcspn)
+ if test $ac_cv_func_strcspn = no; then
+ gl_PREREQ_STRCSPN
+ fi
+])
+
+# Prerequisites of lib/strcspn.c.
+AC_DEFUN([gl_PREREQ_STRCSPN], [:])
diff --git a/parted-1.8.7/m4/string_h.m4 b/parted-1.8.7/m4/string_h.m4
new file mode 100644
index 0000000..f706d49
--- /dev/null
+++ b/parted-1.8.7/m4/string_h.m4
@@ -0,0 +1,78 @@
+# Configure a GNU-like replacement for <string.h>.
+
+# Copyright (C) 2007 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_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_ABSOLUTE_HEADER([string.h])
+ ABSOLUTE_STRING_H=\"$gl_cv_absolute_string_h\"
+ AC_SUBST([ABSOLUTE_STRING_H])
+])
+
+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])
+ GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_HEADER_STRING_H_DEFAULTS],
+[
+ GNULIB_MEMMEM=0; AC_SUBST([GNULIB_MEMMEM])
+ GNULIB_MEMPCPY=0; AC_SUBST([GNULIB_MEMPCPY])
+ GNULIB_MEMRCHR=0; AC_SUBST([GNULIB_MEMRCHR])
+ 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_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_STRCASESTR=0; AC_SUBST([GNULIB_STRCASESTR])
+ GNULIB_STRTOK_R=0; AC_SUBST([GNULIB_STRTOK_R])
+ GNULIB_MBSLEN=0; AC_SUBST([GNULIB_MBSLEN])
+ 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])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ 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_STPCPY=1; AC_SUBST([HAVE_STPCPY])
+ HAVE_STPNCPY=1; AC_SUBST([HAVE_STPNCPY])
+ HAVE_STRCASECMP=1; AC_SUBST([HAVE_STRCASECMP])
+ HAVE_DECL_STRNCASECMP=1; AC_SUBST([HAVE_DECL_STRNCASECMP])
+ HAVE_STRCHRNUL=1; AC_SUBST([HAVE_STRCHRNUL])
+ HAVE_DECL_STRDUP=1; AC_SUBST([HAVE_DECL_STRDUP])
+ HAVE_STRNDUP=1; AC_SUBST([HAVE_STRNDUP])
+ 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])
+])
diff --git a/parted-1.8.7/m4/strndup.m4 b/parted-1.8.7/m4/strndup.m4
new file mode 100644
index 0000000..baa6c03
--- /dev/null
+++ b/parted-1.8.7/m4/strndup.m4
@@ -0,0 +1,53 @@
+# strndup.m4 serial 13
+dnl Copyright (C) 2002-2003, 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.
+
+AC_DEFUN([gl_FUNC_STRNDUP],
+[
+ dnl Persuade glibc <string.h> to declare strndup().
+ AC_REQUIRE([AC_GNU_SOURCE])
+
+ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+ AC_CHECK_DECLS_ONCE([strndup])
+ if test $ac_cv_have_decl_strndup = no; then
+ HAVE_DECL_STRNDUP=0
+ fi
+
+ # 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,
+ [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=yes],
+ [gl_cv_func_strndup=no],
+ [AC_CHECK_FUNC([strndup],
+ [AC_EGREP_CPP([too risky], [
+#ifdef _AIX
+ too risky
+#endif
+ ],
+ [gl_cv_func_strndup=no],
+ [gl_cv_func_strndup=yes])],
+ [gl_cv_func_strndup=no])])])
+ if test $gl_cv_func_strndup = yes; then
+ AC_DEFINE([HAVE_STRNDUP], 1,
+ [Define if you have the strndup() function and it works.])
+ else
+ HAVE_STRNDUP=0
+ AC_LIBOBJ([strndup])
+ gl_PREREQ_STRNDUP
+ fi
+])
+
+# Prerequisites of lib/strndup.c.
+AC_DEFUN([gl_PREREQ_STRNDUP], [:])
diff --git a/parted-1.8.7/m4/strnlen.m4 b/parted-1.8.7/m4/strnlen.m4
new file mode 100644
index 0000000..0e2815b
--- /dev/null
+++ b/parted-1.8.7/m4/strnlen.m4
@@ -0,0 +1,31 @@
+# strnlen.m4 serial 8
+dnl Copyright (C) 2002-2003, 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.
+
+AC_DEFUN([gl_FUNC_STRNLEN],
+[
+ dnl Persuade glibc <string.h> to declare strnlen().
+ AC_REQUIRE([AC_GNU_SOURCE])
+
+ AC_REQUIRE([gl_HEADER_STRING_H_DEFAULTS])
+ AC_CHECK_DECLS_ONCE([strnlen])
+ if test $ac_cv_have_decl_strnlen = no; then
+ HAVE_DECL_STRNLEN=0
+ fi
+
+ AC_FUNC_STRNLEN
+ if test $ac_cv_func_strnlen_working = no; then
+ # This is necessary because automake-1.6.1 doens't understand
+ # that the above use of AC_FUNC_STRNLEN means we may have to use
+ # lib/strnlen.c.
+ #AC_LIBOBJ(strnlen)
+ AC_DEFINE(strnlen, rpl_strnlen,
+ [Define to rpl_strnlen if the replacement function should be used.])
+ gl_PREREQ_STRNLEN
+ fi
+])
+
+# Prerequisites of lib/strnlen.c.
+AC_DEFUN([gl_PREREQ_STRNLEN], [:])
diff --git a/parted-1.8.7/m4/strtod.m4 b/parted-1.8.7/m4/strtod.m4
new file mode 100644
index 0000000..1de2f2f
--- /dev/null
+++ b/parted-1.8.7/m4/strtod.m4
@@ -0,0 +1,20 @@
+# strtod.m4 serial 6
+dnl Copyright (C) 2002, 2003, 2006, 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.
+
+AC_DEFUN([gl_FUNC_STRTOD],
+[
+ AC_FUNC_STRTOD
+ dnl Note: AC_FUNC_STRTOD does AC_LIBOBJ(strtod).
+ if test $ac_cv_func_strtod = no; then
+ AC_DEFINE(strtod, rpl_strtod,
+ [Define to rpl_strtod if the replacement function should be used.])
+ gl_PREREQ_STRTOD
+ fi
+])
+
+# Prerequisites of lib/strtod.c.
+# The need for pow() is already handled by AC_FUNC_STRTOD.
+AC_DEFUN([gl_PREREQ_STRTOD], [:])
diff --git a/parted-1.8.7/m4/strtol.m4 b/parted-1.8.7/m4/strtol.m4
new file mode 100644
index 0000000..7fbae60
--- /dev/null
+++ b/parted-1.8.7/m4/strtol.m4
@@ -0,0 +1,10 @@
+# strtol.m4 serial 4
+dnl Copyright (C) 2002, 2003, 2006 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_STRTOL],
+[
+ AC_REPLACE_FUNCS(strtol)
+])
diff --git a/parted-1.8.7/m4/unistd_h.m4 b/parted-1.8.7/m4/unistd_h.m4
new file mode 100644
index 0000000..d62da69
--- /dev/null
+++ b/parted-1.8.7/m4/unistd_h.m4
@@ -0,0 +1,53 @@
+# unistd_h.m4 serial 6
+dnl Copyright (C) 2006-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 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_CHECK_HEADERS_ONCE([unistd.h])
+ if test $ac_cv_header_unistd_h = yes; then
+ HAVE_UNISTD_H=1
+ gl_ABSOLUTE_HEADER([unistd.h])
+ ABSOLUTE_UNISTD_H=\"$gl_cv_absolute_unistd_h\"
+ else
+ HAVE_UNISTD_H=0
+ fi
+ AC_SUBST([HAVE_UNISTD_H])
+ AC_SUBST([ABSOLUTE_UNISTD_H])
+])
+
+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])
+ GNULIB_[]m4_translit([$1],[abcdefghijklmnopqrstuvwxyz./-],[ABCDEFGHIJKLMNOPQRSTUVWXYZ___])=1
+])
+
+AC_DEFUN([gl_UNISTD_H_DEFAULTS],
+[
+ GNULIB_CHOWN=0; AC_SUBST([GNULIB_CHOWN])
+ GNULIB_DUP2=0; AC_SUBST([GNULIB_DUP2])
+ GNULIB_FCHDIR=0; AC_SUBST([GNULIB_FCHDIR])
+ GNULIB_FTRUNCATE=0; AC_SUBST([GNULIB_FTRUNCATE])
+ GNULIB_GETCWD=0; AC_SUBST([GNULIB_GETCWD])
+ GNULIB_GETLOGIN_R=0; AC_SUBST([GNULIB_GETLOGIN_R])
+ GNULIB_READLINK=0; AC_SUBST([GNULIB_READLINK])
+ GNULIB_SLEEP=0; AC_SUBST([GNULIB_SLEEP])
+ dnl Assume proper GNU behavior unless another module says otherwise.
+ HAVE_DUP2=1; AC_SUBST([HAVE_DUP2])
+ HAVE_FTRUNCATE=1; AC_SUBST([HAVE_FTRUNCATE])
+ HAVE_READLINK=1; AC_SUBST([HAVE_READLINK])
+ HAVE_SLEEP=1; AC_SUBST([HAVE_SLEEP])
+ HAVE_DECL_GETLOGIN_R=1; AC_SUBST([HAVE_DECL_GETLOGIN_R])
+ REPLACE_CHOWN=0; AC_SUBST([REPLACE_CHOWN])
+ REPLACE_FCHDIR=0; AC_SUBST([REPLACE_FCHDIR])
+ REPLACE_GETCWD=0; AC_SUBST([REPLACE_GETCWD])
+])
diff --git a/parted-1.8.7/m4/utimbuf.m4 b/parted-1.8.7/m4/utimbuf.m4
new file mode 100644
index 0000000..9927908
--- /dev/null
+++ b/parted-1.8.7/m4/utimbuf.m4
@@ -0,0 +1,39 @@
+#serial 8
+
+# Copyright (C) 1998, 1999, 2000, 2001, 2003, 2004, 2007 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 Define HAVE_STRUCT_UTIMBUF if `struct utimbuf' is declared --
+dnl usually in <utime.h>.
+dnl Some systems have utime.h but don't declare the struct anywhere.
+
+AC_DEFUN([gl_CHECK_TYPE_STRUCT_UTIMBUF],
+[
+ AC_CHECK_HEADERS_ONCE(sys/time.h utime.h)
+ AC_CACHE_CHECK([for struct utimbuf], [gl_cv_sys_struct_utimbuf],
+ [AC_COMPILE_IFELSE(
+ [AC_LANG_PROGRAM(
+ [[#if HAVE_SYS_TIME_H
+ #include <sys/time.h>
+ #endif
+ #include <time.h>
+ #ifdef HAVE_UTIME_H
+ #include <utime.h>
+ #endif
+ ]],
+ [[static struct utimbuf x; x.actime = x.modtime;]])],
+ [gl_cv_sys_struct_utimbuf=yes],
+ [gl_cv_sys_struct_utimbuf=no])])
+
+ if test $gl_cv_sys_struct_utimbuf = yes; then
+ AC_DEFINE(HAVE_STRUCT_UTIMBUF, 1,
+ [Define if struct utimbuf is declared -- usually in <utime.h>.
+ Some systems have utime.h but don't declare the struct anywhere. ])
+ fi
+])
diff --git a/parted-1.8.7/m4/utime.m4 b/parted-1.8.7/m4/utime.m4
new file mode 100644
index 0000000..967faa2
--- /dev/null
+++ b/parted-1.8.7/m4/utime.m4
@@ -0,0 +1,30 @@
+#serial 7
+
+dnl From Jim Meyering
+dnl Replace the utime function on systems that need it.
+
+# Copyright (C) 1998, 2000, 2001, 2003, 2004 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 FIXME
+
+AC_DEFUN([gl_FUNC_UTIME],
+[
+ AC_REQUIRE([AC_FUNC_UTIME_NULL])
+ if test $ac_cv_func_utime_null = no; then
+ AC_LIBOBJ(utime)
+ AC_DEFINE(utime, rpl_utime,
+ [Define to rpl_utime if the replacement function should be used.])
+ gl_PREREQ_UTIME
+ fi
+])
+
+# Prerequisites of lib/utime.c.
+AC_DEFUN([gl_PREREQ_UTIME],
+[
+ AC_CHECK_HEADERS_ONCE(utime.h)
+ AC_REQUIRE([gl_CHECK_TYPE_STRUCT_UTIMBUF])
+ gl_FUNC_UTIMES_NULL
+])
diff --git a/parted-1.8.7/m4/utimes-null.m4 b/parted-1.8.7/m4/utimes-null.m4
new file mode 100644
index 0000000..8d5c8ae
--- /dev/null
+++ b/parted-1.8.7/m4/utimes-null.m4
@@ -0,0 +1,41 @@
+#serial 7
+
+# Copyright (C) 1998, 1999, 2001, 2003, 2004, 2006 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 Shamelessly cloned from acspecific.m4's AC_FUNC_UTIME_NULL,
+dnl then do case-insensitive s/utime/utimes/.
+
+AC_DEFUN([gl_FUNC_UTIMES_NULL],
+[AC_CACHE_CHECK(whether utimes accepts a null argument, ac_cv_func_utimes_null,
+[rm -f conftest.data; > conftest.data
+AC_TRY_RUN([
+/* In case stat has been defined to rpl_stat, undef it here. */
+#undef stat
+#include <sys/types.h>
+#include <sys/stat.h>
+#include <sys/time.h>
+int
+main () {
+struct stat s, t;
+return ! (stat ("conftest.data", &s) == 0
+ && utimes ("conftest.data", 0) == 0
+ && stat ("conftest.data", &t) == 0
+ && t.st_mtime >= s.st_mtime
+ && t.st_mtime - s.st_mtime < 120));
+}],
+ ac_cv_func_utimes_null=yes,
+ ac_cv_func_utimes_null=no,
+ ac_cv_func_utimes_null=no)
+rm -f core core.* *.core])
+
+ if test $ac_cv_func_utimes_null = yes; then
+ AC_DEFINE(HAVE_UTIMES_NULL, 1,
+ [Define if utimes accepts a null argument])
+ fi
+ ]
+)
diff --git a/parted-1.8.7/m4/wchar.m4 b/parted-1.8.7/m4/wchar.m4
new file mode 100644
index 0000000..068f22d
--- /dev/null
+++ b/parted-1.8.7/m4/wchar.m4
@@ -0,0 +1,29 @@
+dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues.
+
+dnl Copyright (C) 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 Written by Eric Blake.
+
+# wchar.m4 serial 1
+
+AC_DEFUN([gl_WCHAR_H],
+[
+ AC_CACHE_CHECK([whether <wchar.h> is standalone],
+ [gl_cv_header_wchar_h_standalone],
+ [AC_COMPILE_IFELSE([[#include <wchar.h>
+wchar_t w;]],
+ [gl_cv_header_wchar_h_standalone=yes],
+ [gl_cv_header_wchar_h_standalone=no])])
+ if test $gl_cv_header_wchar_h_standalone = yes; then
+ WCHAR_H=
+ else
+ gl_ABSOLUTE_HEADER([wchar.h])
+ ABSOLUTE_WCHAR_H=\"$gl_cv_absolute_wchar_h\"
+ WCHAR_H=wchar.h
+ fi
+ AC_SUBST([ABSOLUTE_WCHAR_H])
+ AC_SUBST([WCHAR_H])
+])
diff --git a/parted-1.8.7/m4/wctype.m4 b/parted-1.8.7/m4/wctype.m4
new file mode 100644
index 0000000..a56834d
--- /dev/null
+++ b/parted-1.8.7/m4/wctype.m4
@@ -0,0 +1,47 @@
+dnl A placeholder for ISO C99 <wctype.h>, for platforms that lack it.
+
+dnl Copyright (C) 2006, 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 Written by Paul Eggert.
+
+AC_DEFUN([gl_WCTYPE_H],
+[
+ 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_CHECK_HEADERS_ONCE([wctype.h])
+ 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])
+
+ WCTYPE_H=wctype.h
+ if test $ac_cv_header_wctype_h = yes; then
+ if test $ac_cv_func_iswcntrl = yes; then
+ WCTYPE_H=
+ fi
+ dnl Compute ABSOLUTE_WCTYPE_H even if WCTYPE_H is empty,
+ dnl for the benefit of builds from non-distclean directories.
+ gl_ABSOLUTE_HEADER([wctype.h])
+ ABSOLUTE_WCTYPE_H=\"$gl_cv_absolute_wctype_h\"
+ HAVE_WCTYPE_H=1
+ else
+ ABSOLUTE_WCTYPE_H=\"no/such/file/wctype.h\"
+ HAVE_WCTYPE_H=0
+ fi
+ AC_SUBST([ABSOLUTE_WCTYPE_H])
+ AC_SUBST([HAVE_WCTYPE_H])
+ AC_SUBST([WCTYPE_H])
+])
diff --git a/parted-1.8.7/m4/wint_t.m4 b/parted-1.8.7/m4/wint_t.m4
new file mode 100644
index 0000000..3706c04
--- /dev/null
+++ b/parted-1.8.7/m4/wint_t.m4
@@ -0,0 +1,28 @@
+# wint_t.m4 serial 2 (gettext-0.12)
+dnl Copyright (C) 2003, 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 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_TRY_COMPILE([
+/* 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/parted-1.8.7/m4/xalloc.m4 b/parted-1.8.7/m4/xalloc.m4
new file mode 100644
index 0000000..837a948
--- /dev/null
+++ b/parted-1.8.7/m4/xalloc.m4
@@ -0,0 +1,24 @@
+# xalloc.m4 serial 16
+dnl Copyright (C) 2002, 2003, 2004, 2005, 2006 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/parted-1.8.7/m4/xstrndup.m4 b/parted-1.8.7/m4/xstrndup.m4
new file mode 100644
index 0000000..8a30ab1
--- /dev/null
+++ b/parted-1.8.7/m4/xstrndup.m4
@@ -0,0 +1,15 @@
+# xstrndup.m4 serial 2
+dnl Copyright (C) 2003 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/parted-1.8.7/parted.spec b/parted-1.8.7/parted.spec
new file mode 100644
index 0000000..279672f
--- /dev/null
+++ b/parted-1.8.7/parted.spec
@@ -0,0 +1,105 @@
+# 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: 1.8.7
+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
+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}
+
+%find_lang %{name}
+
+%clean
+%{__rm} -rf %{buildroot}
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%files -f %{name}.lang
+%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-1.8.7/parted.spec.in b/parted-1.8.7/parted.spec.in
new file mode 100644
index 0000000..735107e
--- /dev/null
+++ b/parted-1.8.7/parted.spec.in
@@ -0,0 +1,105 @@
+# 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
+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}
+
+%find_lang %{name}
+
+%clean
+%{__rm} -rf %{buildroot}
+
+%post -p /sbin/ldconfig
+
+%postun -p /sbin/ldconfig
+
+%files -f %{name}.lang
+%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-1.8.7/parted/Makefile.am b/parted-1.8.7/parted/Makefile.am
new file mode 100644
index 0000000..c699102
--- /dev/null
+++ b/parted-1.8.7/parted/Makefile.am
@@ -0,0 +1,28 @@
+sbin_PROGRAMS = parted
+
+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
+
+#parted_CFLAGS = -DBUILDINFO='"\"'$(BUILDINFO)'\""'
+parted_CFLAGS = -DBUILDINFO=
+
+parted_LDADD = \
+ $(top_builddir)/lib/libparted.la \
+ $(top_builddir)/libparted/libparted.la \
+ $(INTLLIBS) $(LIBS) \
+ $(PARTED_LIBS)
+
+parted_LDFLAGS = $(PARTEDLDFLAGS)
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/parted-1.8.7/parted/Makefile.in b/parted-1.8.7/parted/Makefile.in
new file mode 100644
index 0000000..610127f
--- /dev/null
+++ b/parted-1.8.7/parted/Makefile.in
@@ -0,0 +1,751 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+am__installdirs = "$(DESTDIR)$(sbindir)"
+sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(sbin_PROGRAMS)
+am_parted_OBJECTS = parted-command.$(OBJEXT) parted-parted.$(OBJEXT) \
+ parted-strlist.$(OBJEXT) parted-ui.$(OBJEXT) \
+ parted-table.$(OBJEXT)
+parted_OBJECTS = $(am_parted_OBJECTS)
+am__DEPENDENCIES_1 =
+parted_DEPENDENCIES = $(top_builddir)/lib/libparted.la \
+ $(top_builddir)/libparted/libparted.la $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+parted_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(parted_CFLAGS) $(CFLAGS) \
+ $(parted_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I. -I$(top_builddir)/lib@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(parted_SOURCES)
+DIST_SOURCES = $(parted_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+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
+
+
+#parted_CFLAGS = -DBUILDINFO='"\"'$(BUILDINFO)'\""'
+parted_CFLAGS = -DBUILDINFO=
+parted_LDADD = \
+ $(top_builddir)/lib/libparted.la \
+ $(top_builddir)/libparted/libparted.la \
+ $(INTLLIBS) $(LIBS) \
+ $(PARTED_LIBS)
+
+parted_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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu parted/Makefile'; \
+ 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
+install-sbinPROGRAMS: $(sbin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
+ @list='$(sbin_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ || test -f $$p1 \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(sbinPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(sbindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(sbinPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(sbindir)/$$f" || exit 1; \
+ else :; fi; \
+ done
+
+uninstall-sbinPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(sbin_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " rm -f '$(DESTDIR)$(sbindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(sbindir)/$$f"; \
+ done
+
+clean-sbinPROGRAMS:
+ @list='$(sbin_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+parted$(EXEEXT): $(parted_OBJECTS) $(parted_DEPENDENCIES)
+ @rm -f parted$(EXEEXT)
+ $(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)/parted-command.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parted-parted.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parted-strlist.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parted-table.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/parted-ui.Po@am__quote@
+
+.c.o:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+
+parted-command.o: command.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(parted_CFLAGS) $(CFLAGS) -MT parted-command.o -MD -MP -MF $(DEPDIR)/parted-command.Tpo -c -o parted-command.o `test -f 'command.c' || echo '$(srcdir)/'`command.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/parted-command.Tpo $(DEPDIR)/parted-command.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='command.c' object='parted-command.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(parted_CFLAGS) $(CFLAGS) -c -o parted-command.o `test -f 'command.c' || echo '$(srcdir)/'`command.c
+
+parted-command.obj: command.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(parted_CFLAGS) $(CFLAGS) -MT parted-command.obj -MD -MP -MF $(DEPDIR)/parted-command.Tpo -c -o parted-command.obj `if test -f 'command.c'; then $(CYGPATH_W) 'command.c'; else $(CYGPATH_W) '$(srcdir)/command.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/parted-command.Tpo $(DEPDIR)/parted-command.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='command.c' object='parted-command.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(parted_CFLAGS) $(CFLAGS) -c -o parted-command.obj `if test -f 'command.c'; then $(CYGPATH_W) 'command.c'; else $(CYGPATH_W) '$(srcdir)/command.c'; fi`
+
+parted-parted.o: parted.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(parted_CFLAGS) $(CFLAGS) -MT parted-parted.o -MD -MP -MF $(DEPDIR)/parted-parted.Tpo -c -o parted-parted.o `test -f 'parted.c' || echo '$(srcdir)/'`parted.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/parted-parted.Tpo $(DEPDIR)/parted-parted.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='parted.c' object='parted-parted.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(parted_CFLAGS) $(CFLAGS) -c -o parted-parted.o `test -f 'parted.c' || echo '$(srcdir)/'`parted.c
+
+parted-parted.obj: parted.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(parted_CFLAGS) $(CFLAGS) -MT parted-parted.obj -MD -MP -MF $(DEPDIR)/parted-parted.Tpo -c -o parted-parted.obj `if test -f 'parted.c'; then $(CYGPATH_W) 'parted.c'; else $(CYGPATH_W) '$(srcdir)/parted.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/parted-parted.Tpo $(DEPDIR)/parted-parted.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='parted.c' object='parted-parted.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(parted_CFLAGS) $(CFLAGS) -c -o parted-parted.obj `if test -f 'parted.c'; then $(CYGPATH_W) 'parted.c'; else $(CYGPATH_W) '$(srcdir)/parted.c'; fi`
+
+parted-strlist.o: strlist.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(parted_CFLAGS) $(CFLAGS) -MT parted-strlist.o -MD -MP -MF $(DEPDIR)/parted-strlist.Tpo -c -o parted-strlist.o `test -f 'strlist.c' || echo '$(srcdir)/'`strlist.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/parted-strlist.Tpo $(DEPDIR)/parted-strlist.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='strlist.c' object='parted-strlist.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(parted_CFLAGS) $(CFLAGS) -c -o parted-strlist.o `test -f 'strlist.c' || echo '$(srcdir)/'`strlist.c
+
+parted-strlist.obj: strlist.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(parted_CFLAGS) $(CFLAGS) -MT parted-strlist.obj -MD -MP -MF $(DEPDIR)/parted-strlist.Tpo -c -o parted-strlist.obj `if test -f 'strlist.c'; then $(CYGPATH_W) 'strlist.c'; else $(CYGPATH_W) '$(srcdir)/strlist.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/parted-strlist.Tpo $(DEPDIR)/parted-strlist.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='strlist.c' object='parted-strlist.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(parted_CFLAGS) $(CFLAGS) -c -o parted-strlist.obj `if test -f 'strlist.c'; then $(CYGPATH_W) 'strlist.c'; else $(CYGPATH_W) '$(srcdir)/strlist.c'; fi`
+
+parted-ui.o: ui.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(parted_CFLAGS) $(CFLAGS) -MT parted-ui.o -MD -MP -MF $(DEPDIR)/parted-ui.Tpo -c -o parted-ui.o `test -f 'ui.c' || echo '$(srcdir)/'`ui.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/parted-ui.Tpo $(DEPDIR)/parted-ui.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ui.c' object='parted-ui.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(parted_CFLAGS) $(CFLAGS) -c -o parted-ui.o `test -f 'ui.c' || echo '$(srcdir)/'`ui.c
+
+parted-ui.obj: ui.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(parted_CFLAGS) $(CFLAGS) -MT parted-ui.obj -MD -MP -MF $(DEPDIR)/parted-ui.Tpo -c -o parted-ui.obj `if test -f 'ui.c'; then $(CYGPATH_W) 'ui.c'; else $(CYGPATH_W) '$(srcdir)/ui.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/parted-ui.Tpo $(DEPDIR)/parted-ui.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ui.c' object='parted-ui.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(parted_CFLAGS) $(CFLAGS) -c -o parted-ui.obj `if test -f 'ui.c'; then $(CYGPATH_W) 'ui.c'; else $(CYGPATH_W) '$(srcdir)/ui.c'; fi`
+
+parted-table.o: table.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(parted_CFLAGS) $(CFLAGS) -MT parted-table.o -MD -MP -MF $(DEPDIR)/parted-table.Tpo -c -o parted-table.o `test -f 'table.c' || echo '$(srcdir)/'`table.c
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/parted-table.Tpo $(DEPDIR)/parted-table.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='table.c' object='parted-table.o' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(parted_CFLAGS) $(CFLAGS) -c -o parted-table.o `test -f 'table.c' || echo '$(srcdir)/'`table.c
+
+parted-table.obj: table.c
+@am__fastdepCC_TRUE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(parted_CFLAGS) $(CFLAGS) -MT parted-table.obj -MD -MP -MF $(DEPDIR)/parted-table.Tpo -c -o parted-table.obj `if test -f 'table.c'; then $(CYGPATH_W) 'table.c'; else $(CYGPATH_W) '$(srcdir)/table.c'; fi`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/parted-table.Tpo $(DEPDIR)/parted-table.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='table.c' object='parted-table.obj' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(parted_CFLAGS) $(CFLAGS) -c -o parted-table.obj `if test -f 'table.c'; then $(CYGPATH_W) 'table.c'; else $(CYGPATH_W) '$(srcdir)/table.c'; fi`
+
+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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am: install-sbinPROGRAMS
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: 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 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/parted-1.8.7/parted/command.c b/parted-1.8.7/parted/command.c
new file mode 100644
index 0000000..7ce9090
--- /dev/null
+++ b/parted-1.8.7/parted/command.c
@@ -0,0 +1,141 @@
+/*
+ parted - a frontend to libparted
+ Copyright (C) 1999, 2000, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#include <config.h>
+#include "command.h"
+#include "ui.h"
+
+#include <parted/debug.h>
+
+#include <stdlib.h>
+#include <string.h>
+
+Command*
+command_create (const StrList* names,
+ int (*method) (PedDevice** dev),
+ const StrList* summary,
+ const StrList* help,
+ const int non_interactive)
+{
+ Command* cmd;
+
+ cmd = malloc (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-1.8.7/parted/command.h b/parted-1.8.7/parted/command.h
new file mode 100644
index 0000000..b636af7
--- /dev/null
+++ b/parted-1.8.7/parted/command.h
@@ -0,0 +1,49 @@
+/*
+ parted - a frontend to libparted
+ Copyright (C) 1999, 2000 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#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-1.8.7/parted/parted.c b/parted-1.8.7/parted/parted.c
new file mode 100644
index 0000000..d16ad96
--- /dev/null
+++ b/parted-1.8.7/parted/parted.c
@@ -0,0 +1,2482 @@
+/*
+ parted - a frontend to libparted
+ Copyright (C) 1999, 2000, 2001, 2002, 2003, 2005, 2006, 2007
+ 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#include <config.h>
+
+#include "closeout.h"
+#include "configmake.h"
+#include "version-etc.h"
+#include "command.h"
+#include "ui.h"
+#include "table.h"
+
+#define AUTHORS \
+ "<http://parted.alioth.debian.org/cgi-bin/trac.cgi/browser/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>
+
+#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,
+};
+
+
+typedef struct {
+ time_t last_update;
+ time_t predicted_time_left;
+} TimerContext;
+
+static struct option 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'},
+ {"-pretend-input-tty", 0, NULL, PRETEND_INPUT_TTY},
+ {NULL, 0, NULL, 0}
+};
+
+static char* 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")},
+ {NULL, NULL}
+};
+
+char *program_name;
+
+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;
+
+static 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 char* label_type_msg_start = N_("LABEL-TYPE is one of: ");
+static char* flag_msg_start = N_("FLAG is one of: ");
+static char* unit_msg_start = N_("UNIT is one of: ");
+static char* part_type_msg = N_("PART-TYPE is one of: primary, logical, "
+ "extended\n");
+static char* fs_type_msg_start = N_("FS-TYPE is one of: ");
+static 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 char* state_msg = N_("STATE is one of: on, off\n");
+static char* device_msg = N_("DEVICE is usually /dev/hda or /dev/sda\n");
+static char* name_msg = N_("NAME is any word you want\n");
+static char* resize_msg_start = N_("The partition must have one of the "
+ "following FS-TYPEs: ");
+
+static 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* mkfs_fs_type_msg;
+static char* mkpart_fs_type_msg;
+static char* resize_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 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);
+ ped_free (path);
+ return 0;
+ }
+ return 1;
+}
+
+static int
+_disk_warn_busy (PedDisk* disk)
+{
+ if (ped_device_is_busy (disk->dev))
+ return ped_exception_throw (
+ PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_IGNORE_CANCEL,
+ _("Partition(s) on %s are being used."),
+ disk->dev->path) == PED_EXCEPTION_IGNORE;
+
+ return 1;
+}
+
+static int
+_partition_warn_loss ()
+{
+ return ped_exception_throw (
+ PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_YES_NO,
+ _("The existing file system will be destroyed and "
+ "all data on the partition will be lost. Do "
+ "you want to continue?"),
+ NULL) == PED_EXCEPTION_YES;
+}
+
+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), return 0);
+ 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 prefered 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 prefered 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, return 0);
+
+ 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, return 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_want = end_want = MOVE_NO;
+ 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, return);
+
+ /* 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, return);
+ } 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, return);
+ }
+ }
+
+ /* 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), return);
+ PED_ASSERT (ped_geometry_test_sector_inside (end_range, end), return);
+ PED_ASSERT (start <= end,
+ PED_DEBUG (0, "start = %d, end = %d\n", 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);
+}
+
+static PedConstraint*
+constraint_intersect_and_destroy (PedConstraint* a, PedConstraint* b)
+{
+ PedConstraint* result = ped_constraint_intersect (a, b);
+ ped_constraint_destroy (a);
+ ped_constraint_destroy (b);
+ return result;
+}
+
+void
+help_on (char* topic)
+{
+ Command* cmd;
+
+ cmd = command_get (commands, topic);
+ if (!cmd) return;
+
+ command_print_help (cmd);
+}
+
+static int
+do_check (PedDevice** dev)
+{
+ PedDisk* disk;
+ PedFileSystem* fs;
+ 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;
+
+ if (!ped_disk_check (disk))
+ goto error_destroy_disk;
+
+ fs = ped_file_system_open (&part->geom);
+ if (!fs)
+ goto error_destroy_disk;
+ if (!ped_file_system_check (fs, g_timer))
+ goto error_close_fs;
+ ped_file_system_close (fs);
+ ped_disk_destroy (disk);
+ return 1;
+
+error_close_fs:
+ ped_file_system_close (fs);
+error_destroy_disk:
+ ped_disk_destroy (disk);
+error:
+ return 0;
+}
+
+static int
+do_cp (PedDevice** dev)
+{
+ PedDisk* src_disk;
+ PedDisk* dst_disk;
+ PedPartition* src = NULL;
+ PedPartition* dst = NULL;
+ PedFileSystem* src_fs;
+ PedFileSystem* dst_fs;
+ PedFileSystemType* dst_fs_type;
+
+ dst_disk = ped_disk_new (*dev);
+ if (!dst_disk)
+ goto error;
+
+ src_disk = dst_disk;
+ if (!command_line_is_integer ()) {
+ if (!command_line_get_disk (_("Source device?"), &src_disk))
+ goto error_destroy_disk;
+ }
+
+ if (!command_line_get_partition (_("Source partition number?"),
+ src_disk, &src))
+ goto error_destroy_disk;
+ if (src->type == PED_PARTITION_EXTENDED) {
+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+ _("Can't copy an extended partition."));
+ goto error_destroy_disk;
+ }
+ if (!_partition_warn_busy (src))
+ goto error_destroy_disk;
+
+ if (!command_line_get_partition (_("Destination partition number?"),
+ dst_disk, &dst))
+ goto error_destroy_disk;
+ if (!_partition_warn_busy (dst))
+ goto error_destroy_disk;
+
+/* do the copy */
+ src_fs = ped_file_system_open (&src->geom);
+ if (!src_fs)
+ goto error_destroy_disk;
+ dst_fs = ped_file_system_copy (src_fs, &dst->geom, g_timer);
+ if (!dst_fs)
+ goto error_close_src_fs;
+ dst_fs_type = dst_fs->type; /* may be different to src_fs->type */
+ ped_file_system_close (src_fs);
+ ped_file_system_close (dst_fs);
+
+/* update the partition table, close disks */
+ if (!ped_partition_set_system (dst, dst_fs_type))
+ goto error_destroy_disk;
+ if (!ped_disk_commit (dst_disk))
+ goto error_destroy_disk;
+ if (src_disk != dst_disk)
+ ped_disk_destroy (src_disk);
+ ped_disk_destroy (dst_disk);
+
+ if ((*dev)->type != PED_DEVICE_FILE)
+ disk_is_modified = 1;
+
+ return 1;
+
+error_close_src_fs:
+ ped_file_system_close (src_fs);
+error_destroy_disk:
+ if (src_disk && src_disk != dst_disk)
+ ped_disk_destroy (src_disk);
+ ped_disk_destroy (dst_disk);
+error:
+ return 0;
+}
+
+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, --%-23.23s %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 = ped_disk_probe (*dev);
+
+ ped_exception_fetch_all ();
+ disk = ped_disk_new (*dev);
+ if (!disk) ped_exception_catch ();
+ ped_exception_leave_all ();
+
+ if (disk) {
+ if (!opt_script_mode) {
+ if (!_disk_warn_busy (disk))
+ goto error_destroy_disk;
+ if (!_disk_warn_loss (disk))
+ goto error_destroy_disk;
+ }
+
+ ped_disk_destroy (disk);
+ }
+
+ if (!command_line_get_disk_type (_("New disk label type?"), &type))
+ goto error;
+
+ 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_mkfs (PedDevice** dev)
+{
+ PedDisk* disk;
+ PedPartition* part = NULL;
+ const PedFileSystemType* type = ped_file_system_type_get ("ext2");
+ PedFileSystem* fs;
+
+ disk = ped_disk_new (*dev);
+ if (!disk)
+ goto error;
+
+ if (!opt_script_mode && !_partition_warn_loss())
+ goto error_destroy_disk;
+
+ if (!command_line_get_partition (_("Partition number?"), disk, &part))
+ goto error_destroy_disk;
+ if (!_partition_warn_busy (part))
+ goto error_destroy_disk;
+ if (!command_line_get_fs_type (_("File system?"), &type))
+ goto error_destroy_disk;
+
+ fs = ped_file_system_create (&part->geom, type, g_timer);
+ if (!fs)
+ goto error_destroy_disk;
+ ped_file_system_close (fs);
+
+ if (!ped_partition_set_system (part, 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;
+ 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_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;
+ }
+
+ if (ped_disk_type_check_feature (disk->type,
+ PED_DISK_TYPE_PARTITION_NAME))
+ 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;
+ }
+ if (peek_word)
+ ped_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, return 0);
+
+ dev_constraint = ped_device_get_constraint (*dev);
+ PED_ASSERT (dev_constraint != NULL, return 0);
+
+ final_constraint = ped_constraint_intersect (user_constraint,
+ dev_constraint);
+ if (!final_constraint)
+ goto error_destroy_simple_constraints;
+
+ /* subject to partition constraint */
+ ped_exception_fetch_all();
+ if (!ped_disk_add_partition (disk, part, final_constraint)) {
+ ped_exception_leave_all();
+
+ if (ped_disk_add_partition (disk, part,
+ ped_constraint_any (*dev))) {
+ 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);
+
+ switch (ped_exception_throw (
+ PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_YES_NO,
+ _("You requested a partition from %s to %s.\n"
+ "The closest location we can manage is "
+ "%s to %s. "
+ "Is this still acceptable to you?"),
+ start_usr, end_usr, start_sol, end_sol))
+ {
+ 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;
+ }
+ } else {
+ goto error_remove_part;
+ }
+ }
+ ped_exception_catch();
+
+ /* set minor attributes */
+ if (part_name)
+ PED_ASSERT (ped_partition_set_name (part, part_name), return 0);
+ 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_constraint_destroy (final_constraint);
+ ped_constraint_destroy (user_constraint);
+ ped_constraint_destroy (dev_constraint);
+
+ ped_disk_destroy (disk);
+
+ if (range_start != NULL)
+ ped_geometry_destroy (range_start);
+ if (range_end != NULL)
+ ped_geometry_destroy (range_end);
+
+ if (start_usr != NULL)
+ ped_free (start_usr);
+ if (end_usr != NULL)
+ ped_free (end_usr);
+ if (start_sol != NULL)
+ ped_free (start_sol);
+ if (end_sol != NULL)
+ ped_free (end_sol);
+
+ if ((*dev)->type != PED_DEVICE_FILE)
+ disk_is_modified = 1;
+
+ return 1;
+
+error_remove_part:
+ ped_disk_remove_partition (disk, part);
+ ped_constraint_destroy (final_constraint);
+error_destroy_simple_constraints:
+ ped_constraint_destroy (user_constraint);
+ ped_constraint_destroy (dev_constraint);
+ ped_partition_destroy (part);
+error_destroy_disk:
+ ped_disk_destroy (disk);
+error:
+ if (range_start != NULL)
+ ped_geometry_destroy (range_start);
+ if (range_end != NULL)
+ ped_geometry_destroy (range_end);
+
+ if (start_usr != NULL)
+ ped_free (start_usr);
+ if (end_usr != NULL)
+ ped_free (end_usr);
+ if (start_sol != NULL)
+ ped_free (start_sol);
+ if (end_sol != NULL)
+ ped_free (end_sol);
+
+ return 0;
+}
+
+static int
+do_mkpartfs (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;
+ PedFileSystem* fs;
+ 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_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;
+ }
+
+ if (ped_disk_type_check_feature (disk->type,
+ PED_DISK_TYPE_PARTITION_NAME))
+ part_name = command_line_get_word (_("Partition name?"),
+ "", NULL, 1);
+
+ if (part_type == PED_PARTITION_EXTENDED) {
+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+ _("An extended partition cannot hold a file system. "
+ "Did you want mkpart?"));
+ goto error_destroy_disk;
+ }
+
+ if (!command_line_get_fs_type (_("File system type?"), &fs_type))
+ goto error_destroy_disk;
+ 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;
+
+ /* attempt to create the partition now */
+ 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, return 0);
+
+ dev_constraint = ped_device_get_constraint (*dev);
+ PED_ASSERT (dev_constraint != NULL, return 0);
+
+ final_constraint = ped_constraint_intersect (user_constraint,
+ dev_constraint);
+ if (!final_constraint)
+ goto error_destroy_simple_constraints;
+
+ /* subject to partition constraint */
+ ped_exception_fetch_all();
+ if (!ped_disk_add_partition (disk, part, final_constraint)) {
+ ped_exception_leave_all();
+
+ if (ped_disk_add_partition (disk, part,
+ ped_constraint_any (*dev))) {
+ 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);
+
+ switch (ped_exception_throw (
+ PED_EXCEPTION_WARNING,
+ PED_EXCEPTION_YES_NO,
+ _("You requested a partition from %s to %s.\n"
+ "The closest location we can manage is "
+ "%s to %s. "
+ "Is this still acceptable to you?"),
+ start_usr, end_usr, start_sol, end_sol)) {
+ 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;
+ }
+ } else {
+ goto error_remove_part;
+ }
+ }
+ ped_exception_catch();
+ ped_exception_leave_all();
+
+ /* set LBA flag automatically if available */
+ if (ped_partition_is_flag_available (part, PED_PARTITION_LBA))
+ ped_partition_set_flag (part, PED_PARTITION_LBA, 1);
+
+ /* fs creation */
+ fs = ped_file_system_create (&part->geom, fs_type, g_timer);
+ if (!fs)
+ goto error_destroy_disk;
+ ped_file_system_close (fs);
+
+ if (!ped_partition_set_system (part, fs_type))
+ goto error_destroy_disk;
+
+ if (!ped_disk_commit (disk))
+ goto error_destroy_disk;
+
+ /* clean up */
+ ped_constraint_destroy (final_constraint);
+ ped_constraint_destroy (user_constraint);
+ ped_constraint_destroy (dev_constraint);
+
+ ped_disk_destroy (disk);
+
+ if (range_start != NULL)
+ ped_geometry_destroy (range_start);
+ if (range_end != NULL)
+ ped_geometry_destroy (range_end);
+
+ if (start_usr != NULL)
+ ped_free (start_usr);
+ if (end_usr != NULL)
+ ped_free (end_usr);
+ if (start_sol != NULL)
+ ped_free (start_sol);
+ if (end_sol != NULL)
+ ped_free (end_sol);
+
+ if ((*dev)->type != PED_DEVICE_FILE)
+ disk_is_modified = 1;
+
+ return 1;
+
+error_remove_part:
+ ped_disk_remove_partition (disk, part);
+ ped_constraint_destroy (final_constraint);
+error_destroy_simple_constraints:
+ ped_constraint_destroy (user_constraint);
+ ped_constraint_destroy (dev_constraint);
+ ped_partition_destroy (part);
+error_destroy_disk:
+ ped_disk_destroy (disk);
+error:
+ if (range_start != NULL)
+ ped_geometry_destroy (range_start);
+ if (range_end != NULL)
+ ped_geometry_destroy (range_end);
+
+ if (start_usr != NULL)
+ ped_free (start_usr);
+ if (end_usr != NULL)
+ ped_free (end_usr);
+ if (start_sol != NULL)
+ ped_free (start_sol);
+ if (end_sol != NULL)
+ ped_free (end_sol);
+
+ return 0;
+}
+
+static int
+do_move (PedDevice** dev)
+{
+ PedDisk* disk;
+ PedPartition* part = NULL;
+ PedFileSystem* fs;
+ PedFileSystem* fs_copy;
+ PedConstraint* constraint;
+ PedSector start = 0, end = 0;
+ PedGeometry *range_start = NULL, *range_end = NULL;
+ PedGeometry old_geom, new_geom;
+
+ 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;
+ if (part->type == PED_PARTITION_EXTENDED) {
+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+ _("Can't move an extended partition."));
+ goto error_destroy_disk;
+ }
+ old_geom = part->geom;
+ fs = ped_file_system_open (&old_geom);
+ if (!fs)
+ goto error_destroy_disk;
+
+ /* get new target */
+ if (!command_line_get_sector (_("Start?"), *dev, &start, &range_start))
+ goto error_close_fs;
+ end = start + old_geom.length - 1;
+ if (!command_line_get_sector (_("End?"), *dev, &end, &range_end))
+ goto error_close_fs;
+
+ /* set / test on "disk" */
+ if (!ped_geometry_init (&new_geom, *dev, start, end - start + 1))
+ goto error_close_fs;
+ snap_to_boundaries (&new_geom, NULL, disk, range_start, range_end);
+
+ constraint = constraint_intersect_and_destroy (
+ ped_file_system_get_copy_constraint (fs, *dev),
+ constraint_from_start_end(*dev,range_start,range_end));
+ if (!ped_disk_set_partition_geom (disk, part, constraint,
+ new_geom.start, new_geom.end))
+ goto error_destroy_constraint;
+ ped_constraint_destroy (constraint);
+ if (ped_geometry_test_overlap (&old_geom, &part->geom)) {
+ ped_exception_throw (PED_EXCEPTION_ERROR, PED_EXCEPTION_CANCEL,
+ _("Can't move a partition onto itself. Try using "
+ "resize, perhaps?"));
+ goto error_close_fs;
+ }
+
+ /* do the move */
+ fs_copy = ped_file_system_copy (fs, &part->geom, g_timer);
+ if (!fs_copy)
+ goto error_close_fs;
+ ped_file_system_close (fs_copy);
+ ped_file_system_close (fs);
+ if (!ped_disk_commit (disk))
+ goto error_destroy_disk;
+ ped_disk_destroy (disk);
+ if (range_start != NULL)
+ ped_geometry_destroy (range_start);
+ if (range_end != NULL)
+ ped_geometry_destroy (range_end);
+
+ if ((*dev)->type != PED_DEVICE_FILE)
+ disk_is_modified = 1;
+
+ return 1;
+
+error_destroy_constraint:
+ ped_constraint_destroy (constraint);
+error_close_fs:
+ ped_file_system_close (fs);
+error_destroy_disk:
+ ped_disk_destroy (disk);
+error:
+ if (range_start != NULL)
+ ped_geometry_destroy (range_start);
+ if (range_end != NULL)
+ ped_geometry_destroy (range_end);
+ 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;
+ strncat (res, name, 21);
+ }
+ }
+
+ return res;
+}
+
+/* Prints a sector out, first in compact form, and then with a percentage.
+ * Eg: 32Gb (40%)
+ */
+static void
+print_sector_compact_and_percent (PedSector sector, PedDevice* dev)
+{
+ char* compact;
+ char* percent;
+
+ if (ped_unit_get_default() == PED_UNIT_PERCENT)
+ compact = ped_unit_format (dev, sector);
+ else
+ compact = ped_unit_format_custom (dev, sector,
+ PED_UNIT_COMPACT);
+
+ percent = ped_unit_format_custom (dev, sector, PED_UNIT_PERCENT);
+
+ printf ("%s (%s)\n", compact, percent);
+
+ ped_free (compact);
+ ped_free (percent);
+}
+
+static int
+partition_print (PedPartition* part)
+{
+ PedFileSystem* fs;
+ PedConstraint* resize_constraint;
+ char* flags;
+
+ fs = ped_file_system_open (&part->geom);
+ if (!fs)
+ return 1;
+
+ putchar ('\n');
+
+ flags = partition_print_flags (part);
+
+ printf (_("Minor: %d\n"), part->num);
+ printf (_("Flags: %s\n"), flags);
+ printf (_("File System: %s\n"), fs->type->name);
+ fputs (_("Size: "), stdout);
+ print_sector_compact_and_percent (part->geom.length, part->geom.dev);
+
+ resize_constraint = ped_file_system_get_resize_constraint (fs);
+ if (resize_constraint) {
+ fputs (_("Minimum size: "), stdout);
+ print_sector_compact_and_percent (resize_constraint->min_size,
+ part->geom.dev);
+ fputs (_("Maximum size: "), stdout);
+ print_sector_compact_and_percent (resize_constraint->max_size,
+ part->geom.dev);
+ ped_constraint_destroy (resize_constraint);
+ }
+
+ putchar ('\n');
+
+ ped_free (flags);
+ ped_file_system_close (fs);
+
+ return 1;
+}
+
+static int
+do_print (PedDevice** dev)
+{
+ PedUnit default_unit;
+ PedDisk* disk;
+ Table* table;
+ StrList* row;
+ 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* transport[13] = {"unknown", "scsi", "ide", "dac960",
+ "cpqarray", "file", "ataraid", "i2o",
+ "ubd", "dasd", "viodasd", "sx8", "dm"};
+ char* peek_word;
+ char* start;
+ char* end;
+ char* size;
+ const char* name;
+ char* tmp;
+ wchar_t* table_rendered;
+
+ disk = ped_disk_new (*dev);
+ if (!disk)
+ goto error;
+
+ peek_word = command_line_peek_word ();
+ if (peek_word) {
+ if (strncmp (peek_word, "devices", 7) == 0) {
+ command_line_pop_word();
+ has_devices_arg = 1;
+ }
+ else if (strncmp (peek_word, "free", 4) == 0) {
+ command_line_pop_word ();
+ has_free_arg = 1;
+ }
+ else if (strncmp (peek_word, "list", 4) == 0 ||
+ strncmp (peek_word, "all", 3) == 0) {
+ command_line_pop_word();
+ has_list_arg = 1;
+ }
+ else
+ has_num_arg = isdigit(peek_word[0]);
+
+ ped_free (peek_word);
+ }
+
+ 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);
+ ped_free (end);
+ }
+
+ dev_name = strdup ((*dev)->path);
+ ped_device_free_all ();
+
+ *dev = ped_device_get (dev_name);
+ if (!*dev)
+ return 0;
+ if (!ped_device_open (*dev))
+ return 0;
+
+ ped_free (dev_name);
+
+ return 1;
+ }
+
+ else if (has_list_arg)
+ return _print_list ();
+
+ else if (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;
+ }
+
+ start = ped_unit_format (*dev, 0);
+ default_unit = ped_unit_get_default ();
+ end = ped_unit_format_byte (*dev, (*dev)->length * (*dev)->sector_size
+ - (default_unit == PED_UNIT_CHS ||
+ default_unit == PED_UNIT_CYLINDER));
+
+ 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,
+ disk->type->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);
+ }
+
+ ped_free (start);
+ ped_free (end);
+
+ if (ped_unit_get_default () == PED_UNIT_CHS
+ || ped_unit_get_default () == PED_UNIT_CYLINDER) {
+ 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);
+ }
+
+ ped_free (cyl_size);
+ }
+
+ if (!opt_machine_mode) {
+ printf (_("Partition Table: %s\n"), disk->type->name);
+ 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) {
+
+ if (ped_unit_get_default() == PED_UNIT_CHS) {
+ row = str_list_create (_("Number"), _("Start"),
+ _("End"), NULL);
+ } else {
+ row = str_list_create (_("Number"), _("Start"),
+ _("End"), _("Size"), NULL);
+ }
+
+ if (has_extended)
+ str_list_append (row, _("Type"));
+
+ str_list_append (row, _("File system"));
+
+ if (has_name)
+ str_list_append (row, _("Name"));
+
+ str_list_append (row, _("Flags"));
+
+
+ table = table_new (str_list_length(row));
+
+ table_add_row_from_strlist (table, row);
+
+
+ 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 ", "");
+
+ 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);
+ }
+
+ str_list_append (row, partition_print_flags (part));
+ } 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);
+ }
+
+ table_rendered = table_render (table);
+#ifdef ENABLE_NLS
+ printf("%ls\n", table_rendered);
+#else
+ printf("%s\n", table_rendered);
+#endif
+ ped_free (table_rendered);
+ table_destroy (table);
+
+ } 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);
+
+ printf ("%s:", ped_unit_format (*dev, part->geom.start));
+ printf ("%s:", ped_unit_format_byte (
+ *dev,
+ (part->geom.end + 1) *
+ (*dev)->sector_size - 1));
+
+ if (ped_unit_get_default() != PED_UNIT_CHS)
+ printf ("%s:", ped_unit_format (*dev,
+ part->geom.length));
+
+ 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 (':');
+
+ printf ("%s;\n", partition_print_flags (part));
+
+ } else {
+ puts ("free;");
+ }
+ }
+ }
+
+ ped_disk_destroy (disk);
+
+ return 1;
+
+ ped_disk_destroy (disk);
+error:
+ return 0;
+}
+
+static int
+_print_list ()
+{
+ PedDevice *current_dev = NULL;
+
+ ped_device_probe_all();
+
+ while ((current_dev = ped_device_get_next(current_dev))) {
+ do_print (¤t_dev);
+ putchar ('\n');
+ }
+
+ return 1;
+}
+
+static int
+do_quit (PedDevice** dev)
+{
+ _done (*dev);
+ exit (0);
+}
+
+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);
+ ped_free (found_start);
+ ped_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_resize (PedDevice** dev)
+{
+ PedDisk *disk;
+ PedPartition *part = NULL;
+ PedFileSystem *fs;
+ PedConstraint *constraint;
+ PedSector start, end;
+ PedGeometry *range_start = NULL, *range_end = NULL;
+ PedGeometry new_geom;
+
+ disk = ped_disk_new (*dev);
+ if (!disk)
+ goto error;
+
+ if (!command_line_get_partition (_("Partition number?"), disk, &part))
+ goto error_destroy_disk;
+ if (part->type != PED_PARTITION_EXTENDED) {
+ if (!_partition_warn_busy (part))
+ goto error_destroy_disk;
+ }
+
+ start = part->geom.start;
+ end = part->geom.end;
+ 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;
+
+ if (!ped_geometry_init (&new_geom, *dev, start, end - start + 1))
+ goto error_destroy_disk;
+ snap_to_boundaries (&new_geom, &part->geom, disk,
+ range_start, range_end);
+
+ if (part->type == PED_PARTITION_EXTENDED) {
+ constraint = constraint_from_start_end (*dev,
+ range_start, range_end);
+ if (!ped_disk_set_partition_geom (disk, part, constraint,
+ new_geom.start, new_geom.end))
+ goto error_destroy_constraint;
+ ped_partition_set_system (part, NULL);
+ } else {
+ fs = ped_file_system_open (&part->geom);
+ if (!fs)
+ goto error_destroy_disk;
+ constraint = constraint_intersect_and_destroy (
+ ped_file_system_get_resize_constraint (fs),
+ constraint_from_start_end (
+ *dev, range_start, range_end));
+ if (!ped_disk_set_partition_geom (disk, part, constraint,
+ new_geom.start, new_geom.end))
+ goto error_close_fs;
+ if (!ped_file_system_resize (fs, &part->geom, g_timer))
+ goto error_close_fs;
+ /* may have changed... eg fat16 -> fat32 */
+ ped_partition_set_system (part, fs->type);
+ ped_file_system_close (fs);
+ }
+
+ ped_disk_commit (disk);
+ ped_constraint_destroy (constraint);
+ ped_disk_destroy (disk);
+ if (range_start != NULL)
+ ped_geometry_destroy (range_start);
+ if (range_end != NULL)
+ ped_geometry_destroy (range_end);
+
+ if ((*dev)->type != PED_DEVICE_FILE)
+ disk_is_modified = 1;
+
+ return 1;
+
+error_close_fs:
+ ped_file_system_close (fs);
+error_destroy_constraint:
+ ped_constraint_destroy (constraint);
+error_destroy_disk:
+ ped_disk_destroy (disk);
+error:
+ if (range_start != NULL)
+ ped_geometry_destroy (range_start);
+ if (range_end != NULL)
+ ped_geometry_destroy (range_end);
+ 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;
+}
+
+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;
+ 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);
+
+/* mkfs - file system types */
+ 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 (fs_type->ops->create == NULL)
+ continue;
+
+ if (first)
+ first = 0;
+ else
+ str_list_append (list, ", ");
+ str_list_append (list, fs_type->name);
+ }
+ str_list_append (list, "\n");
+
+ mkfs_fs_type_msg = str_list_convert (list);
+ str_list_destroy (list);
+
+/* mkpart - file system types */
+ 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);
+ }
+ str_list_append (list, "\n");
+
+ mkpart_fs_type_msg = str_list_convert (list);
+ str_list_destroy (list);
+
+/* resize - file system types */
+ list = str_list_create (_(resize_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 (fs_type->ops->resize == NULL)
+ continue;
+
+ if (first)
+ first = 0;
+ else
+ str_list_append (list, ", ");
+ str_list_append (list, fs_type->name);
+ }
+ str_list_append (list, "\n");
+
+ resize_fs_type_msg = str_list_convert (list);
+ str_list_destroy (list);
+}
+
+static void
+_done_messages ()
+{
+ free (flag_msg);
+ free (mkfs_fs_type_msg);
+ free (mkpart_fs_type_msg);
+ free (resize_fs_type_msg);
+ free (label_type_msg);
+}
+
+static void
+_init_commands ()
+{
+ command_register (commands, command_create (
+ str_list_create_unique ("check", _("check"), NULL),
+ do_check,
+ str_list_create (
+_("check NUMBER do a simple check on the file "
+ "system"),
+NULL),
+ str_list_create (_(number_msg), NULL), 1));
+
+ command_register (commands, command_create (
+ str_list_create_unique ("cp", _("cp"), NULL),
+ do_cp,
+ str_list_create (
+_("cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another "
+ "partition"),
+NULL),
+ str_list_create (_(number_msg), _(device_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 ("mkfs", _("mkfs"), NULL),
+ do_mkfs,
+ str_list_create (
+_("mkfs NUMBER FS-TYPE make a FS-TYPE file "
+ "system on partititon NUMBER"),
+NULL),
+ str_list_create (_(number_msg), _(mkfs_fs_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 ("mkpartfs", _("mkpartfs"), NULL),
+ do_mkpartfs,
+ str_list_create (
+_("mkpartfs PART-TYPE FS-TYPE START END make a partition with a "
+ "file system"),
+NULL),
+ str_list_create (_(part_type_msg), _(start_end_msg), NULL), 1));
+
+command_register (commands, command_create (
+ str_list_create_unique ("move", _("move"), NULL),
+ do_move,
+ str_list_create (
+_("move NUMBER START END move partition NUMBER"),
+NULL),
+ str_list_create (_(number_msg), _(start_end_msg), 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 ("resize", _("resize"), NULL),
+ do_resize,
+ str_list_create (
+_("resize NUMBER START END resize partition NUMBER and "
+"its file system"),
+NULL),
+ str_list_create (_(number_msg),
+ _(start_end_msg),
+ _(resize_fs_type_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, "hilmsv",
+ 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 PRETEND_INPUT_TTY:
+ pretend_input_tty = 1;
+ break;
+ default: wrong = 1; break;
+ }
+}
+
+if (wrong == 1) {
+ fprintf (stderr,
+ _("Usage: %s [-hlmsv] [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;
+
+#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;
+
+ 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-1.8.7/parted/strlist.c b/parted-1.8.7/parted/strlist.c
new file mode 100644
index 0000000..da1b09f
--- /dev/null
+++ b/parted-1.8.7/parted/strlist.c
@@ -0,0 +1,605 @@
+/*
+ parted - a frontend to libparted
+ Copyright (C) 1999, 2000, 2001 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#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>
+
+#ifdef ENABLE_NLS
+
+#undef __USE_GNU
+#define __USE_GNU
+
+#include <wchar.h>
+#include <wctype.h>
+
+#else /* ENABLE_NLS */
+
+#ifdef wchar_t
+#undef wchar_t
+#endif
+
+#define wchar_t char
+
+#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 strdup (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 = realloc (result, (wcslen (result) + 1) * sizeof (wchar_t));
+ return result;
+
+error:
+ printf ("Error during translation: %s\n", strerror (errno));
+ exit (1);
+}
+
+#else /* ENABLE_NLS */
+
+static wchar_t*
+gettext_to_wchar (const char* str)
+{
+ return strdup (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 (1);
+}
+
+#else /* ENABLE_NLS */
+
+static char*
+wchar_to_str (const wchar_t* str, size_t count)
+{
+ char* result;
+
+ result = strdup (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 = (StrList*) malloc (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)
+{
+ free ((wchar_t*) list->str);
+ 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 = strdup ("");
+
+ 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 char*
+get_spaces (int space_count)
+{
+ char* str;
+ int i;
+
+ str = malloc (space_count + 1);
+ for (i = 0; i < space_count; i++)
+ str [i] = ' ';
+ str [i] = 0;
+
+ return str;
+}
+
+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;
+ char* spaces;
+ int search_result;
+ int line_break;
+
+ PED_ASSERT (line_length - indent > 10, return);
+
+ spaces = get_spaces (indent);
+ 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", spaces);
+ else if (line_break)
+ putchar ('\n');
+ }
+
+ print_wchar (str, 0);
+ line_left -= wchar_strlen (str);
+ }
+
+ free (spaces);
+}
+
+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-1.8.7/parted/strlist.h b/parted-1.8.7/parted/strlist.h
new file mode 100644
index 0000000..e458ba1
--- /dev/null
+++ b/parted-1.8.7/parted/strlist.h
@@ -0,0 +1,59 @@
+/*
+ parted - a frontend to libparted
+ Copyright (C) 1999, 2000, 2001 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef STRLIST_H_INCLUDED
+#define STRLIST_H_INCLUDED
+
+#include <wchar.h>
+
+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-1.8.7/parted/table.c b/parted-1.8.7/parted/table.c
new file mode 100644
index 0000000..8768a92
--- /dev/null
+++ b/parted-1.8.7/parted/table.c
@@ -0,0 +1,246 @@
+/*
+ * TODO: - make right and centered alignment possible
+ */
+/*
+ parted - a frontend to libparted
+ Copyright (C) 2006, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <assert.h>
+
+#include <config.h>
+
+#ifdef ENABLE_NLS
+# include <wchar.h>
+ int wcswidth (const wchar_t *s, size_t n);
+# define L_(str) L##str
+#else
+# define L_(str) str
+# ifdef wchar_t
+# undef wchar_t
+# endif
+# include <string.h>
+# define wchar_t char
+# define wcslen strlen
+# define wcswidth strnlen
+# define wcscat strcat
+# define wcsdup strdup
+ size_t strnlen (const char *, size_t);
+#endif
+
+#include "xalloc.h"
+#include "strlist.h"
+
+
+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 = malloc(sizeof(Table));
+
+ 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]);
+ }
+
+ if (t->rows)
+ free (t->rows);
+
+ if (t->widths)
+ 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 = (int*)malloc(t->ncols * sizeof(int));
+
+ 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 = (wchar_t***)realloc (t->rows, (t->nrows + 1)
+ * sizeof(wchar_t***));
+
+ 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 = (wchar_t**)malloc(str_list_length(list)
+ * sizeof(wchar_t**));
+ int i = 0;
+
+ while (list)
+ {
+ row[i] = (wchar_t*)list->str;
+
+ 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];
+ int 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)
+ {
+ int j;
+ int nspaces = max(t->widths[i] - wcswidth(row[i], MAX_WIDTH),
+ 0);
+ wchar_t* pad = xmalloc ((nspaces + 1) * sizeof(wchar_t));
+
+ for (j = 0; j < nspaces; ++j)
+ pad[j] = L' ';
+
+ pad[nspaces] = L_('\0');
+
+ wcscat (*s, row[i]);
+ wcscat (*s, pad);
+ if (i + 1 < ncols)
+ wcscat (*s, DELIMITER);
+
+ free (pad);
+ pad = NULL;
+ }
+
+ 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 = malloc(sizeof(wchar_t));
+
+ *s = L_('\0');
+ table_render_rows (t, &s);
+ return s;
+}
diff --git a/parted-1.8.7/parted/table.h b/parted-1.8.7/parted/table.h
new file mode 100644
index 0000000..b423a9e
--- /dev/null
+++ b/parted-1.8.7/parted/table.h
@@ -0,0 +1,55 @@
+/*
+ parted - a frontend to libparted
+ Copyright (C) 2006, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#include <wchar.h>
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <assert.h>
+
+#include "strlist.h"
+
+#include <config.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-1.8.7/parted/ui.c b/parted-1.8.7/parted/ui.c
new file mode 100644
index 0000000..fb311e2
--- /dev/null
+++ b/parted-1.8.7/parted/ui.c
@@ -0,0 +1,1532 @@
+/*
+ parted - a frontend to libparted
+ Copyright (C) 1999, 2000, 2001, 2002, 2006, 2007
+ 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#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 <config.h>
+#include "command.h"
+#include "strlist.h"
+#include "ui.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
+
+char* prog_name = "GNU Parted " VERSION "\n";
+
+static char* banner_msg = N_(
+"Welcome to GNU Parted! Type 'help' to view a list of commands.\n");
+
+static 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 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* 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 ("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 */
+
+static void
+mask_signal()
+{
+ sigset_t curr;
+ sigset_t prev;
+
+ sigfillset(&curr);
+ sigprocmask(SIG_SETMASK, &curr, &prev);
+}
+
+/* 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 (0);
+
+ 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 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 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, break); /* 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, break); /* Force a backtrace */
+ break;
+ }
+
+ abort ();
+}
+
+/* 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 '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 SIGFPE using 'signal'. */
+static void
+s_sigfpe_handler (int signum)
+{
+ signal (SIGFPE, &s_sigfpe_handler);
+ mask_signal ();
+ sa_sigfpe_handler (signum, NULL, NULL);
+}
+
+/* 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 ();
+}
+
+/* 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);
+}
+
+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)
+ line [strlen (line) - 1] = 0; /* kill trailing CR */
+ 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, return 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),
+ return NULL);
+
+ 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)
+ 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);
+ free (result);
+ if (result_node)
+ return str_list_convert_node (result_node);
+
+ command_line_flush ();
+ }
+
+ 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);
+ ped_free (def_str);
+ return *range != NULL;
+ }
+
+ ped_free (def_str);
+ return 1;
+ }
+
+ ped_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;
+ PedDevice* dev;
+
+ dev_name = command_line_get_word (prompt, def_dev_name, NULL, 1);
+ if (!dev_name)
+ return 0;
+
+ 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;
+
+ 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);
+ 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 0);
+ 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);
+ ped_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_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_fs_type_str ()
+{
+ PedFileSystemType* 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;
+ }
+
+ 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_ui ()
+{
+ if (!init_ex_opt_str ()
+ || !init_state_str ()
+ || !init_fs_type_str ()
+ || !init_disk_type_str ())
+ return 0;
+ ped_exception_set_handler (exception_handler);
+
+#ifdef HAVE_LIBREADLINE
+ rl_initialize ();
+ rl_attempted_completion_function = (CPPFunction*) complete_function;
+ readline_state.in_readline = 0;
+#endif
+
+#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 ();
+ 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 ();
+ exit (0);
+}
+
+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(1);
+ goto error;
+ }
+
+ if (!command_run (cmd, dev))
+ goto error;
+ }
+ return 1;
+
+error:
+ return 0;
+}
diff --git a/parted-1.8.7/parted/ui.h b/parted-1.8.7/parted/ui.h
new file mode 100644
index 0000000..147b170
--- /dev/null
+++ b/parted-1.8.7/parted/ui.h
@@ -0,0 +1,83 @@
+/*
+ parted - a frontend to libparted
+ Copyright (C) 1999, 2000, 2001, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+#ifndef UI_H_INCLUDED
+#define UI_H_INCLUDED
+
+#include "strlist.h"
+
+extern char* prog_name;
+
+extern int init_ui ();
+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);
+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_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/parted-1.8.7/partprobe/Makefile.am b/parted-1.8.7/partprobe/Makefile.am
new file mode 100644
index 0000000..cbb955f
--- /dev/null
+++ b/parted-1.8.7/partprobe/Makefile.am
@@ -0,0 +1,17 @@
+partedincludedir = -I$(top_srcdir)/lib -I$(top_srcdir)/include
+
+sbin_PROGRAMS = partprobe
+
+partprobe_SOURCES = partprobe.c
+
+partprobe_LDADD = \
+ $(top_builddir)/lib/libparted.la \
+ $(top_builddir)/libparted/libparted.la \
+ $(INTLLIBS) $(LIBS) \
+ $(PARTED_LIBS)
+
+partprobe_LDFLAGS = $(PARTEDLDFLAGS)
+
+INCLUDES = $(partedincludedir) $(INTLINCS)
+
+MAINTAINERCLEANFILES = Makefile.in
diff --git a/parted-1.8.7/partprobe/Makefile.in b/parted-1.8.7/partprobe/Makefile.in
new file mode 100644
index 0000000..d75fc03
--- /dev/null
+++ b/parted-1.8.7/partprobe/Makefile.in
@@ -0,0 +1,663 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+am__installdirs = "$(DESTDIR)$(sbindir)"
+sbinPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
+PROGRAMS = $(sbin_PROGRAMS)
+am_partprobe_OBJECTS = partprobe.$(OBJEXT)
+partprobe_OBJECTS = $(am_partprobe_OBJECTS)
+am__DEPENDENCIES_1 =
+partprobe_DEPENDENCIES = $(top_builddir)/lib/libparted.la \
+ $(top_builddir)/libparted/libparted.la $(am__DEPENDENCIES_1) \
+ $(am__DEPENDENCIES_1) $(am__DEPENDENCIES_1)
+partprobe_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
+ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+ $(partprobe_LDFLAGS) $(LDFLAGS) -o $@
+DEFAULT_INCLUDES = -I. -I$(top_builddir)/lib@am__isrc@
+depcomp = $(SHELL) $(top_srcdir)/build-aux/depcomp
+am__depfiles_maybe = depfiles
+COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
+ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+CCLD = $(CC)
+LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
+ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
+ $(LDFLAGS) -o $@
+SOURCES = $(partprobe_SOURCES)
+DIST_SOURCES = $(partprobe_SOURCES)
+ETAGS = etags
+CTAGS = ctags
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+partedincludedir = -I$(top_srcdir)/lib -I$(top_srcdir)/include
+partprobe_SOURCES = partprobe.c
+partprobe_LDADD = \
+ $(top_builddir)/lib/libparted.la \
+ $(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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu partprobe/Makefile'; \
+ 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
+install-sbinPROGRAMS: $(sbin_PROGRAMS)
+ @$(NORMAL_INSTALL)
+ test -z "$(sbindir)" || $(MKDIR_P) "$(DESTDIR)$(sbindir)"
+ @list='$(sbin_PROGRAMS)'; for p in $$list; do \
+ p1=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ if test -f $$p \
+ || test -f $$p1 \
+ ; then \
+ f=`echo "$$p1" | sed 's,^.*/,,;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(sbinPROGRAMS_INSTALL) '$$p' '$(DESTDIR)$(sbindir)/$$f'"; \
+ $(INSTALL_PROGRAM_ENV) $(LIBTOOL) --mode=install $(sbinPROGRAMS_INSTALL) "$$p" "$(DESTDIR)$(sbindir)/$$f" || exit 1; \
+ else :; fi; \
+ done
+
+uninstall-sbinPROGRAMS:
+ @$(NORMAL_UNINSTALL)
+ @list='$(sbin_PROGRAMS)'; for p in $$list; do \
+ f=`echo "$$p" | sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
+ echo " rm -f '$(DESTDIR)$(sbindir)/$$f'"; \
+ rm -f "$(DESTDIR)$(sbindir)/$$f"; \
+ done
+
+clean-sbinPROGRAMS:
+ @list='$(sbin_PROGRAMS)'; for p in $$list; do \
+ f=`echo $$p|sed 's/$(EXEEXT)$$//'`; \
+ echo " rm -f $$p $$f"; \
+ rm -f $$p $$f ; \
+ done
+partprobe$(EXEEXT): $(partprobe_OBJECTS) $(partprobe_DEPENDENCIES)
+ @rm -f partprobe$(EXEEXT)
+ $(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@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+.c.obj:
+@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+.c.lo:
+@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
+@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+@am__fastdepCC_FALSE@ $(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; } \
+ END { for (i in files) print i; }'`; \
+ mkid -fID $$unique
+tags: TAGS
+
+TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ if test -z "$(ETAGS_ARGS)$$tags$$unique"; then :; else \
+ test -n "$$unique" || unique=$$empty_fix; \
+ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
+ $$tags $$unique; \
+ fi
+ctags: CTAGS
+CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
+ $(TAGS_FILES) $(LISP)
+ tags=; \
+ 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; } \
+ END { for (i in files) print i; }'`; \
+ test -z "$(CTAGS_ARGS)$$tags$$unique" \
+ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
+ $$tags $$unique
+
+GTAGS:
+ here=`$(am__cd) $(top_builddir) && pwd` \
+ && cd $(top_srcdir) \
+ && gtags -i $(GTAGS_ARGS) $$here
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+install-exec-am: install-sbinPROGRAMS
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: 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 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/parted-1.8.7/partprobe/partprobe.c b/parted-1.8.7/partprobe/partprobe.c
new file mode 100644
index 0000000..1659100
--- /dev/null
+++ b/parted-1.8.7/partprobe/partprobe.c
@@ -0,0 +1,210 @@
+/*
+ partprobe - informs the OS kernel of partition layout
+ Copyright (C) 2001, 2002, 2007 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 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 St, Fifth Floor, Boston, MA 02110-1301, USA
+*/
+
+/* 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 "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://parted.alioth.debian.org/cgi-bin/trac.cgi/browser/AUTHORS>"
+
+/* The official name of this program (e.g., no `g' prefix). */
+#define PROGRAM_NAME "partprobe"
+
+static struct option const long_options[] =
+ {
+ {"no-update", no_argument, NULL, 'd'},
+ {"summary", no_argument, NULL, 's'},
+ {"help", no_argument, NULL, 'h'},
+ {"version", no_argument, NULL, 'v'},
+ {NULL, 0, NULL, 0}
+ };
+
+
+char *program_name;
+
+/* initialized to 0 according to the language lawyers */
+static int opt_no_probe;
+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_probe) {
+ 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;
+}
+
+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 OS of partition table changes.\n\
+\n\
+ -d, --no-update don't update the kernel\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\
+With no DEVICE, probe all partitions.\n\
+"), stdout);
+ printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+ }
+ exit (status);
+}
+
+int
+main (int argc, char* argv[])
+{
+ int status = 0;
+
+ program_name = argv[0];
+ atexit (close_stdout);
+
+ int c;
+ while ((c = getopt_long (argc, argv, "dhsv", long_options, NULL)) != -1)
+ switch (c) {
+ case 'd':
+ opt_no_probe = 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/parted-1.8.7/po/ChangeLog.0 b/parted-1.8.7/po/ChangeLog.0
new file mode 100644
index 0000000..df19c9f
--- /dev/null
+++ b/parted-1.8.7/po/ChangeLog.0
@@ -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/parted-1.8.7/po/LINGUAS b/parted-1.8.7/po/LINGUAS
new file mode 100644
index 0000000..9646765
--- /dev/null
+++ b/parted-1.8.7/po/LINGUAS
@@ -0,0 +1,24 @@
+ca
+cs
+da
+de
+es
+fr
+gl
+id
+it
+ja
+nl
+nn
+pl
+pt
+pt_BR
+ro
+ru
+rw
+sv
+tr
+uk
+vi
+zh_CN
+zh_TW
diff --git a/parted-1.8.7/po/Makefile.in.in b/parted-1.8.7/po/Makefile.in.in
new file mode 100644
index 0000000..e7d1ab2
--- /dev/null
+++ b/parted-1.8.7/po/Makefile.in.in
@@ -0,0 +1,395 @@
+# -*- 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-2006 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.15
+
+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@
+mkinstalldirs = $(SHELL) @install_sh@ -d
+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 -o $${lang}.gmo $${lang}.po"; \
+ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo
+
+.sin.sed:
+ sed -e '/^#/d' $< > t-$@
+ mv t-$@ $@
+
+
+all: all-@USE_NLS@
+
+all-yes: stamp-po
+all-no:
+
+# $(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 test -n '$(MSGID_BUGS_ADDRESS)' || test '$(PACKAGE_BUGREPORT)' = '@'PACKAGE_BUGREPORT'@'; then \
+ msgid_bugs_address='$(MSGID_BUGS_ADDRESS)'; \
+ else \
+ msgid_bugs_address='$(PACKAGE_BUGREPORT)'; \
+ fi; \
+ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \
+ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \
+ --files-from=$(srcdir)/POTFILES.in \
+ --copyright-holder='$(COPYRIGHT_HOLDER)' \
+ --msgid-bugs-address="$$msgid_bugs_address"
+ 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) $${lang}.po $(DOMAIN).pot"; \
+ cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \
+ 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
+ $(mkdir_p) $(DESTDIR)$(datadir)
+ @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:
+ $(mkdir_p) $(DESTDIR)$(datadir)
+ @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) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \
+ cd $(srcdir); \
+ if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$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 "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)
+ @:
+
+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/parted-1.8.7/po/Makevars b/parted-1.8.7/po/Makevars
new file mode 100644
index 0000000..ad51716
--- /dev/null
+++ b/parted-1.8.7/po/Makevars
@@ -0,0 +1,53 @@
+# -*- 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=vasprintf:2:c-format\
+ --flag=asnprintf:3:c-format --flag=vasnprintf:3:c-format\
+ --flag=wrapf:1:c-format\
+ $${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/parted-1.8.7/po/POTFILES.in b/parted-1.8.7/po/POTFILES.in
new file mode 100644
index 0000000..35b3677
--- /dev/null
+++ b/parted-1.8.7/po/POTFILES.in
@@ -0,0 +1,92 @@
+# libparted
+# Copyright (C) 1999, 2000, 2001, 2006, 2007 Free Software Foundation, Inc.
+# This file may be modified and/or copied without restriction.
+
+# list of files containing translatable strings
+
+# lib
+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
+libparted/arch/beos.c
+
+debug/clearfat/clearfat.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/filesys.c
+libparted/fs/reiserfs/reiserfs.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/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_ext2
+libparted/fs/ext2/ext2.c
+libparted/fs/ext2/ext2_inode_relocator.c
+libparted/fs/ext2/ext2_resize.c
+libparted/fs/ext2/ext2_block_relocator.c
+libparted/fs/ext2/interface.c
+libparted/fs/ext2/ext2_buffer.c
+libparted/fs/ext2/ext2_mkfs.c
+
+# libparted/fs/fat
+libparted/fs/fat/calc.c
+libparted/fs/fat/context.c
+libparted/fs/fat/fat.c
+libparted/fs/fat/resize.c
+libparted/fs/fat/bootsector.c
+libparted/fs/fat/count.c
+libparted/fs/fat/table.c
+
+# libparted/fs/linux_swap
+libparted/fs/linux_swap/linux_swap.c
+
+# libparted/fs/hfs
+libparted/fs/hfs/advfs.c
+libparted/fs/hfs/advfs_plus.c
+libparted/fs/hfs/cache.c
+libparted/fs/hfs/file.c
+libparted/fs/hfs/file_plus.c
+libparted/fs/hfs/hfs.c
+libparted/fs/hfs/journal.c
+libparted/fs/hfs/probe.c
+libparted/fs/hfs/reloc.c
+libparted/fs/hfs/reloc_plus.c
+
+# libparted/fs/jfs
+
+# libparted/fs/ufs
+
+# libparted/fs/xfs
+
+# parted
+parted/parted.c
+parted/ui.c
diff --git a/parted-1.8.7/po/Rules-quot b/parted-1.8.7/po/Rules-quot
new file mode 100644
index 0000000..9c2a995
--- /dev/null
+++ b/parted-1.8.7/po/Rules-quot
@@ -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 $$ll -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/parted-1.8.7/po/boldquot.sed b/parted-1.8.7/po/boldquot.sed
new file mode 100644
index 0000000..4b937aa
--- /dev/null
+++ b/parted-1.8.7/po/boldquot.sed
@@ -0,0 +1,10 @@
+s/"\([^"]*\)"/“\1”/g
+s/`\([^`']*\)'/‘\1’/g
+s/ '\([^`']*\)' / ‘\1’ /g
+s/ '\([^`']*\)'$/ ‘\1’/g
+s/^'\([^`']*\)' /‘\1’ /g
+s/“”/""/g
+s/“/“[1m/g
+s/”/[0m”/g
+s/‘/‘[1m/g
+s/’/[0m’/g
diff --git a/parted-1.8.7/po/ca.gmo b/parted-1.8.7/po/ca.gmo
new file mode 100644
index 0000000..2823e9b
--- /dev/null
+++ b/parted-1.8.7/po/ca.gmo
Binary files differ
diff --git a/parted-1.8.7/po/ca.po b/parted-1.8.7/po/ca.po
new file mode 100644
index 0000000..a0a886c
--- /dev/null
+++ b/parted-1.8.7/po/ca.po
@@ -0,0 +1,3359 @@
+# 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: 2007-05-09 17:02-0400\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"
+"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/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Tipus de sistema de fitxers desconegut \"%s\"."
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Error obrint %s: %s"
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, 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:411 libparted/arch/linux.c:1431
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s mentre es preparava per llegir a %s"
+
+#: libparted/arch/beos.c:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s mentre s'estava llegint a %s"
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, 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:496 libparted/arch/linux.c:1570
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s mentre es preparava per escruire a %s"
+
+#: libparted/arch/beos.c:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s mentre s'estava escrivint a %s"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "Massa pàgines incorrectes."
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr "No s'ha pogut obrir %s"
+
+#: libparted/arch/gnu.c:114
+msgid "Unable to probe store."
+msgstr "No s'ha pogut provar d'emmagatzemar."
+
+#: libparted/arch/gnu.c:352
+#, 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:369
+#, 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:380 parted/parted.c:2443
+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:772
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s intentant de sincronitzar %s al dics"
+
+#: libparted/arch/linux.c:408
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Impossible d'inicialitzar el dispositiu %s - %s."
+
+#: libparted/arch/linux.c:523
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:539
+#, c-format
+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 ""
+
+#: libparted/arch/linux.c:579
+#, 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:668
+#, 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:677
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:698
+#, 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:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Error inicialitzant el dispositiu SCSI %s - %s"
+
+#: libparted/arch/linux.c:928
+#, c-format
+msgid ""
+"The device %s has zero length, and can't possibly store a file system or "
+"partition table. Perhaps you selected the wrong device?"
+msgstr ""
+
+#: libparted/arch/linux.c:1032
+#, 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:1110
+msgid "DAC960 RAID controller"
+msgstr "Controlador RAID DAC960"
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr "Controlador ATARAID"
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr "Controlador I20"
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr ""
+
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "Desconegut"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "ped_device_new() Dispositiu no suportat"
+
+#: libparted/arch/linux.c:2083
+#, 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:2262
+#, 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/arch/linux.c:2368
+#, fuzzy, c-format
+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."
+
+#: libparted/cs/geom.c:162
+msgid "Can't have the end before the start!"
+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:366
+#, 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:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr "comprovant blocs errònis"
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "No s'ha pogut obrir %s - etiqueta de disc desconeguda."
+
+#: libparted/disk.c:471
+#, 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:598
+#, 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:1075
+#, 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:1634
+#, 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:1647
+#, fuzzy
+msgid "Too many primary partitions."
+msgstr "Massa particions primàries."
+
+#: libparted/disk.c:1656
+#, 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:1680
+#, 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:1690
+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:1715
+#, 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:1725 libparted/disk.c:1779 libparted/disk.c:1945
+#, fuzzy
+msgid "Can't have overlapping partitions."
+msgstr "No poden haver particions solapades."
+
+#: libparted/disk.c:1733
+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:2140
+msgid "metadata"
+msgstr "metadata"
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "lliure"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "extesa"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "lògica"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "primària"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "boot"
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr "root"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "oculta"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr "servei-hp"
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2190
+#, fuzzy, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Flag desconegut a %d."
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "Informació"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "Perill"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "Error"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "Fatal"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "Bug"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr "No Implementat"
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr "Fix"
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "Sí"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "No"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "D'accord"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "Reintentar"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "Ignorar"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "Cancel·lar"
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org 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/filesys.c:384
+msgid "Could not detect file system."
+msgstr "No s'ha pogut detectar el sistema de fitxers."
+
+#: libparted/filesys.c:395
+#, fuzzy
+msgid "The file system is bigger than its volume!"
+msgstr "El sistema de fitxers és més gran que ho és el volum!"
+
+#: libparted/filesys.c:403
+#, c-format
+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."
+
+#: libparted/filesys.c:445
+#, c-format
+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."
+
+#: libparted/filesys.c:505
+#, c-format
+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."
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr "copiant bloc raw"
+
+#: libparted/filesys.c:582
+msgid "growing file system"
+msgstr "sistema de fitxers creixent"
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr "No es pot copiar a una partició solapada."
+
+#: libparted/filesys.c:644
+#, fuzzy, c-format
+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."
+
+#: libparted/filesys.c:658
+#, c-format
+msgid "Support for copying %s file systems is not implemented yet."
+msgstr "Suport per copiar sistemes de fitxers %s encara no està implementat."
+
+#: libparted/filesys.c:696
+#, c-format
+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."
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, fuzzy
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr "El sistema de fitxers és més gran que ho és el volum!"
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "comprova"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, 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."
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, 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"
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+msgid "shrinking"
+msgstr "encongint"
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "Perill"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, fuzzy, c-format
+msgid "Device is too small for %lu blocks."
+msgstr "Sistema de fitxers massa petit per ext2."
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, 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:148
+#, 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:161
+#, 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:171
+#, 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:189
+#, 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:199
+#, 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:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "No s'ha pogut satisfer les limitacions a la partició"
+
+#: libparted/labels/bsd.c:526
+#, fuzzy
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "No s'ha pogut reservar una etiqueta bsd"
+
+#: libparted/labels/dasd.c:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "No s'ha pogut determinar la mida de %s (%s)"
+
+#: libparted/labels/dasd.c:781
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "No s'ha pogut reservar una etiqueta bsd"
+
+#: libparted/labels/dos.c:827
+#, 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:855
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Taula de particions invàlida - partició recursiva a %s."
+
+#: libparted/labels/dos.c:1318
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr ""
+
+#: libparted/labels/dos.c:1958
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+#: libparted/labels/dvh.c:190
+#, 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:313
+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:616
+msgid "Only primary partitions can be root partitions."
+msgstr "Només les particions primàries poden ser particions root."
+
+#: libparted/labels/dvh.c:630
+msgid "Only primary partitions can be swap partitions."
+msgstr "Només les particions primàries poden ser particions swap."
+
+#: libparted/labels/dvh.c:644
+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:721
+msgid "Only logical partitions (boot files) have a name."
+msgstr "Només les particions lògiques (fitxers d'arrencada) tenen nom."
+
+#: libparted/labels/dvh.c:812
+msgid "Too many primary partitions"
+msgstr "Massa particions primàries."
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "%s mentre s'estava escrivint a %s"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, fuzzy, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr "%s %s %s"
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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:648
+#, fuzzy, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+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:698
+#, 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:827
+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:862
+#, 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:870
+#, 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/mac.c:181
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Signatura invàlida %x per etiquetes de discs Mac."
+
+#: libparted/labels/mac.c:226
+msgid "Partition map has no partition map entry!"
+msgstr "El Mapa de particions no té entrada de mapa de particions!"
+
+#: libparted/labels/mac.c:273
+#, 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:532
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "La partició %d té una signatura invàlida %x."
+
+#: libparted/labels/mac.c:550
+#, 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:580
+#, 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:597
+#, 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:611
+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:622
+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:675
+#, 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:688
+#, 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:736
+msgid "No valid partition map found."
+msgstr "No s'ha trobat un mapa de particions vàlid."
+
+#: libparted/labels/mac.c:795
+#, 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:822
+#, fuzzy
+msgid "Weird! There are 2 partitions map entries!"
+msgstr "Estrany - 2 entrades de mapes de particions!"
+
+#: libparted/labels/mac.c:1347
+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:1443
+#, 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:354
+#, fuzzy, c-format
+msgid "Invalid partition table on %s."
+msgstr "Taula de particions invàlida a %s"
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, 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:791
+msgid "Can't add another partition."
+msgstr "No es pot afegir un altra partició."
+
+#: libparted/labels/rdb.c:162
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:497
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:600
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:697
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:740
+#, 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:1069
+#, fuzzy
+msgid "Unable to allocate a partition number."
+msgstr "S'esperava un múmero de partició."
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr "S'ha detectat una etiqueta Sun corrupte."
+
+#: libparted/labels/sun.c:266
+#, 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:288
+#, 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:442
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:737
+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:752
+msgid "Sun disk label is full."
+msgstr "La etiqueta del disc de Sun està plena."
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr "Sense memòria."
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr ""
+
+#: libparted/unit.c:527
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "No s'ha pogut determinar si la partició està muntada."
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:72
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s mentre s'estava escrivint a %s"
+
+#: libparted/fs/amiga/amiga.c:278
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:289
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:318
+#, fuzzy, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "No s'ha pogut determinar si la partició està muntada."
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr "Grup de descriptors inconsistent!"
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+#, fuzzy
+msgid "File system full!"
+msgstr "Sistema de fitxers ple!"
+
+#: libparted/fs/ext2/ext2.c:686
+#, 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?"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+#, fuzzy
+msgid "File system has errors! You should run e2fsck."
+msgstr "El sistema de fitxers té errors! Has d'executar e2fsck."
+
+#: libparted/fs/ext2/ext2.c:711
+#, 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."
+
+#: libparted/fs/ext2/ext2.c:731
+#, fuzzy
+msgid "File system has an incompatible feature enabled."
+msgstr "El sistema de fitxers té una característica incompatible activada"
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr "Error en la reserva de la memòria cau de la memòria intermèdia"
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+#, 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."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr "No hi ha suficients inodes lliures!"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+#, fuzzy
+msgid "File system is too full to remove a group!"
+msgstr "El sistema de fitxers està massa ocupat a suprimir un grup!"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+#, 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!"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr "afegint grups"
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, fuzzy, c-format
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, fuzzy, c-format
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:666
+#, 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."
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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 ""
+
+#: libparted/fs/ext2/ext2_resize.c:691
+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 ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+#, 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!"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, fuzzy, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "El bloc %i no té referència? Extrany"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, fuzzy, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "El bloc %i no hauria d'estar marcat!"
+
+#: libparted/fs/ext2/interface.c:186
+#, 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."
+
+#: libparted/fs/ext2/interface.c:203
+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"
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr "No s'ha pogut buidar la memòria cau de la memòria intermèdia!"
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr "escribint metadata per-grup"
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr "Sistema de fitxers massa petit per ext2."
+
+#: libparted/fs/fat/calc.c:135
+#, fuzzy, c-format
+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)"
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+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. "
+
+#: libparted/fs/fat/fat.c:308
+#, fuzzy, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr "Partició massa gran/petita per un sistema de fitxers %s"
+
+#: libparted/fs/fat/fat.c:474
+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."
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr "No hi ha configuracions possibles per aquest tipus de FAT."
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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)."
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:874
+#, 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/resize.c:159
+#, 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. "
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr "Error escribint al directori root."
+
+#: libparted/fs/fat/resize.c:489
+#, 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"
+
+#: libparted/fs/fat/resize.c:492
+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ó)."
+
+#: libparted/fs/fat/resize.c:500
+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."
+
+#: libparted/fs/fat/resize.c:504
+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 "
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr "Vol fer servir FAT32?"
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: libparted/fs/fat/resize.c:551
+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."
+
+#: libparted/fs/fat/resize.c:567
+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."
+
+#: libparted/fs/fat/resize.c:580
+#, 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ó!"
+
+#: 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:139
+#, 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:164
+#, 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:213
+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:219
+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:225
+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:235
+#, 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:411
+#, 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/fat/count.c:152
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:174
+#, fuzzy, c-format
+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."
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:203
+#, fuzzy, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr "%s és %dk, però té %d clústers (%dk)."
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:269
+#, fuzzy, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "fat_table_set: clúster %ld fora del sistema de fitxers"
+
+#: libparted/fs/fat/table.c:301
+#, fuzzy, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "fat_table_get: clúster %ld fora del sistema de fitxers"
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "fat_table_alloc_cluster: no hi ha clústers lliures"
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, 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:318
+#, 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:358
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Signatura de linux swap '%10s' no reconeguda."
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr "Massa pàgines incorrectes."
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr ""
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr ""
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+msgid "Could not update the extent cache for HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+msgid "Trying to write HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+msgid "Could not update the extent cache for HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+msgid "Trying to write HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:320
+#, fuzzy
+msgid "writing HFS Master Directory Block"
+msgstr "Error escribint al directori root."
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:720
+#, fuzzy
+msgid "Error while writing the allocation file."
+msgstr "Error escribint al directori root."
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:904
+msgid ""
+"It seems there is an error in the HFS wrapper: the bad blocks file doesn't "
+"contain the embedded HFS+ volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:998
+#, fuzzy
+msgid "shrinking HFS wrapper"
+msgstr "encongint"
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+msgid ""
+"This is not a real %s check. This is going to extract special low level "
+"files for debugging purposes."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+msgid ""
+"Invalid size of a transaction block while replaying the journal (%i bytes)."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:260
+msgid ""
+"Journal stored outside of the volume are not supported. Try to desactivate "
+"the journal and run Parted again."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:271
+#, 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. "
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:302
+msgid "Journal size mismatch between journal info block and journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:314
+#, 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. "
+
+#: libparted/fs/hfs/journal.c:323
+msgid ""
+"The sector size stored in the journal is not 512 bytes. Parted only "
+"supports 512 bytes length sectors."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:353
+msgid ""
+"The journal is not empty. Parted must replay the transactions before "
+"opening the file system. This will modify the file system."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:381
+msgid ""
+"The volume header or the master directory block has changed while replaying "
+"the journal. You should restart Parted."
+msgstr ""
+
+#: libparted/fs/hfs/probe.c:51
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to %"
+"d bytes."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+msgid ""
+"A reference to an extent comes from a place it should not. You should check "
+"the file system!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:475
+msgid "This HFS volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+msgid ""
+"The extents overflow file should not contain its own extents! You should "
+"check the file system."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+#, fuzzy
+msgid "Could not cache the file system in memory."
+msgstr "No s'ha pogut detectar el sistema de fitxers."
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:619
+msgid "This HFS+ volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr "mostra aquest missatge d'ajuda"
+
+#: parted/parted.c:95
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr "mai pregunta a l'usuari"
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr "mostra la versió"
+
+#: parted/parted.c:111
+#, 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:114
+msgid "LABEL-TYPE is one of: "
+msgstr "TIPUS-ETI és una d'aquestes: "
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr "FLAG és una d'aquests:"
+
+#: parted/parted.c:116
+#, fuzzy
+msgid "UNIT is one of: "
+msgstr "FLAG és una d'aquests:"
+
+#: parted/parted.c:117
+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:119
+msgid "FS-TYPE is one of: "
+msgstr "TIPUS-SF és un d'aquests: "
+
+#: parted/parted.c:120
+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:123
+msgid "STATE is one of: on, off\n"
+msgstr "ESTAT és un d'aquests: on, off\n"
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "DISPOS és, normalment, /dev/hda o /dev/sda\n"
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr "NOM és qualsevol paraula que vulguis\n"
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr ""
+
+#: parted/parted.c:130
+#, 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:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(temps que queda %.2d:%.2d)"
+
+#: parted/parted.c:195
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:211
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "La(s) partició(ns) a %s s'està utilitzant."
+
+#: parted/parted.c:223
+msgid ""
+"The existing file system will be destroyed and all data on the partition "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+msgid "Partition number?"
+msgstr "Número de partició?"
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr "Dispositiu d'origen?"
+
+#: parted/parted.c:504
+msgid "Source partition number?"
+msgstr "Número de partició d'origen?"
+
+#: parted/parted.c:509
+#, fuzzy
+msgid "Can't copy an extended partition."
+msgstr "No es poden copiar particions exteses."
+
+#: parted/parted.c:515
+msgid "Destination partition number?"
+msgstr "Número de partició destí?"
+
+#: parted/parted.c:615
+msgid "New disk label type?"
+msgstr "Nou tipus d'etiqueta?"
+
+#: parted/parted.c:656
+msgid "File system?"
+msgstr "Sistema de fitxers?"
+
+#: parted/parted.c:707 parted/parted.c:878
+msgid "Partition type?"
+msgstr "Tipus de partició?"
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+msgid "Partition name?"
+msgstr "Nom de la partició?"
+
+#: parted/parted.c:722 parted/parted.c:895
+msgid "File system type?"
+msgstr "Sistema de fitxers?"
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr "Inici?"
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr "Fi?"
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+
+#: parted/parted.c:890
+#, 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?"
+
+#: parted/parted.c:1050
+#, fuzzy
+msgid "Can't move an extended partition."
+msgstr "No es poden moure particions exteses"
+
+#: parted/parted.c:1079
+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?"
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr "Minor: %d\n"
+
+#: parted/parted.c:1228
+#, fuzzy, c-format
+msgid "Flags: %s\n"
+msgstr "Flags:"
+
+#: parted/parted.c:1229
+#, c-format
+msgid "File System: %s\n"
+msgstr "Sistema de fitxers:%s\n"
+
+#: parted/parted.c:1230
+#, fuzzy
+msgid "Size: "
+msgstr "Mida: %10.3fMb (%d%%)\n"
+
+#: parted/parted.c:1235
+#, fuzzy
+msgid "Minimum size: "
+msgstr "Mida mínima: %10.3fMb (%d%%)\n"
+
+#: parted/parted.c:1238
+#, fuzzy
+msgid "Maximum size: "
+msgstr "Mida màxima: %10.3fMb (%d%%)\n"
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:1364
+#, fuzzy, c-format
+msgid "Disk %s: %s\n"
+msgstr "%s %s %s"
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:1383
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d. Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:1392
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "Nom de la partició?"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr ""
+
+#: parted/parted.c:1406 parted/parted.c:1409
+#, fuzzy
+msgid "Start"
+msgstr "Inici?"
+
+#: parted/parted.c:1407 parted/parted.c:1410
+#, fuzzy
+msgid "End"
+msgstr "Fi?"
+
+#: parted/parted.c:1410
+#, fuzzy
+msgid "Size"
+msgstr "resize"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr ""
+
+#: parted/parted.c:1416
+#, fuzzy
+msgid "File system"
+msgstr "Sistema de fitxers?"
+
+#: parted/parted.c:1419
+#, fuzzy
+msgid "Name"
+msgstr "name"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr "Flags"
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1624
+#, 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:1663
+#, fuzzy
+msgid "searching for file systems"
+msgstr "sistema de fitxers creixent"
+
+#: parted/parted.c:1877
+msgid "New device?"
+msgstr "Nou dispositiu?"
+
+#: parted/parted.c:1902
+#, fuzzy
+msgid "Flag to Invert?"
+msgstr "Flag a canviar?"
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr "Nou estat?"
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "comprova"
+
+#: parted/parted.c:2096
+#, fuzzy
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr ""
+"comprova MINOR fa una simple comprovació al sistema de "
+"fitxers"
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "cp"
+
+#: parted/parted.c:2105
+#, 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ó"
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "ajuda"
+
+#: parted/parted.c:2114
+#, fuzzy
+msgid ""
+"help [COMMAND] print general help, or help on "
+"COMMAND"
+msgstr "Ajuda [ORDRE] imprimeix ajuda general, o ajuda d'ORDRE"
+
+#: parted/parted.c:2120
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:2120
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:2123
+#, 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:2129
+msgid "mkfs"
+msgstr "mkfs"
+
+#: parted/parted.c:2132
+#, fuzzy
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+"mkfs MINOR TIPUS-SF crea un sistema de fitxers TIPUS-SF a la partició "
+"MINOR"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:2141
+#, 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:2147
+#, 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:2152
+msgid "mkpartfs"
+msgstr "mkpartfs"
+
+#: parted/parted.c:2155
+#, 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"
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr "move"
+
+#: parted/parted.c:2164
+#, fuzzy
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "move MINOR INICI FI mou la partició MINOR"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:2172
+#, fuzzy
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr "name MINOR NOM anomena la partició MINOR NOM"
+
+#: parted/parted.c:2177
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"print[MINOR] mostra la taula de particions; o una partició"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:2199
+#, fuzzy
+msgid "quit exit program"
+msgstr "quit surt del programa"
+
+#: parted/parted.c:2204
+msgid "rescue"
+msgstr "rescatar"
+
+#: parted/parted.c:2207
+#, 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:2213
+msgid "resize"
+msgstr "resize"
+
+#: parted/parted.c:2216
+#, fuzzy
+msgid ""
+"resize NUMBER START END resize partition NUMBER and its "
+"file system"
+msgstr "rescatar INICI FI rescata particions perdudes entre INICI i FI"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:2227
+#, fuzzy
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "rm MINOR suprimeix la partició MINOR"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:2235
+#, fuzzy
+msgid "select DEVICE choose the device to edit"
+msgstr "select DISPOSITIU escollir el dispositiu a editar"
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:2243
+#, 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:2249
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:2252
+msgid ""
+"toggle [NUMBER [FLAG]] toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:2258
+#, fuzzy
+msgid "unit"
+msgstr "quit"
+
+#: parted/parted.c:2261
+#, fuzzy
+msgid "unit UNIT set the default unit to UNIT"
+msgstr "quit surt del programa"
+
+#: parted/parted.c:2266
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:2269
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:2273
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "No s'ha trobat el dispositiu"
+
+#: parted/parted.c:2412
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:2450
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "No us oblideu d'actualitzar /etc/fstab si cal.\n"
+
+#: parted/ui.c:160
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:163
+#, 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:168
+#, 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:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:372
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:377
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:420
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:523
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:1024
+msgid "Expecting a partition number."
+msgstr "S'esperava un múmero de partició."
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "La partició no existeix."
+
+#: parted/ui.c:1053
+msgid "Expecting a file system type."
+msgstr "S'esperava un tipus de sistema de fitxers."
+
+#: parted/ui.c:1060
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Tipus de sistema de fitxers desconegut \"%s\"."
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr "S'esperava un tipus de etiqueta de dics."
+
+#: parted/ui.c:1178
+msgid "Can't create any more partitions."
+msgstr "No es pot crear cap més partició."
+
+#: parted/ui.c:1188
+msgid "Expecting a partition type."
+msgstr "S'esperava un tipus de partició."
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr "on"
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr "off"
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "OPCIONS:"
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "ORDRES:"
+
+#: parted/ui.c:1445
+#, c-format
+msgid "Using %s\n"
+msgstr "Utilitzant %s\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "quan és necessari, pregunta a l'usuari"
+
+#~ 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 "Could not read geometry of %s - %s."
+#~ msgstr "No s'ha pogut llegir la geometria de %s - %s"
+
+#~ 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 "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 "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 create a partition at %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Has demanat de crear una partició a %.3f-%.3fMb. El més proper que Parted "
+#~ "pot manegar és %.3f-%.3fMb."
+
+#~ 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 "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/parted-1.8.7/po/cs.gmo b/parted-1.8.7/po/cs.gmo
new file mode 100644
index 0000000..f041f74
--- /dev/null
+++ b/parted-1.8.7/po/cs.gmo
Binary files differ
diff --git a/parted-1.8.7/po/cs.po b/parted-1.8.7/po/cs.po
new file mode 100644
index 0000000..8e5f1f3
--- /dev/null
+++ b/parted-1.8.7/po/cs.po
@@ -0,0 +1,3331 @@
+# Czech translation of parted.
+# Copyright (C) 2003 Miloslav Trmac <mitr@volny.cz>
+# Miloslav Trmac <mitr@volny.cz>, 2003.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 1.6.6\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2007-05-09 17:02-0400\n"
+"PO-Revision-Date: 2003-08-01 03:03+0200\n"
+"Last-Translator: Miloslav Trmac <mitr@volny.cz>\n"
+"Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Neznámý typ systému souborů \"%s\"."
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Chyba při otevírání %s: %s"
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, 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:411 libparted/arch/linux.c:1431
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s při seek pro čtení %s"
+
+#: libparted/arch/beos.c:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s při čtení %s"
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, 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:496 libparted/arch/linux.c:1570
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s při seek pro zápis na %s"
+
+#: libparted/arch/beos.c:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s při zápisu na %s"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "Příliš mnoho špatných stránek."
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr "Nemohu otevřít %s."
+
+#: libparted/arch/gnu.c:114
+msgid "Unable to probe store."
+msgstr "Nemohu prozkoumat úložný prostor."
+
+#: libparted/arch/gnu.c:352
+#, 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 ""
+"Nebylo možné znovu načíst tabulku oddílů, takž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 zavděč 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:369
+#, 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 ""
+"Tabulka oddílů na %s (%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:380 parted/parted.c:2443
+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:772
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s při pokusu sync %s na disk"
+
+#: libparted/arch/linux.c:408
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Nemohu stat zařízení %s - %s."
+
+#: libparted/arch/linux.c:523
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:539
+#, c-format
+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 ""
+
+#: libparted/arch/linux.c:579
+#, fuzzy, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Nemohu určit velikost %s (%s)"
+
+#: libparted/arch/linux.c:668
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Nemohu získat identitu zařízení %s - %s"
+
+#: libparted/arch/linux.c:677
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:698
+#, 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:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Chyba při inicializaci zařízení SCSI %s - %s"
+
+#: libparted/arch/linux.c:928
+#, fuzzy, c-format
+msgid ""
+"The device %s has zero length, and can't 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:1032
+#, 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 ""
+"Nemohu určit geometrii souboru/zařízení. Neměli byste používat Parted, pokud "
+"OPRAVDU nevíte, co děláte!"
+
+#: libparted/arch/linux.c:1110
+msgid "DAC960 RAID controller"
+msgstr "Řadič RAID DAC960"
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr "Řadič ATARAID"
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr "Řadič I2O"
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr ""
+
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "Neznámý"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "ped_device_new() Nepodporovaný typ zařízení"
+
+#: libparted/arch/linux.c:2083
+#, 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 ""
+"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é s %s provedete, dokud nerestartujete systém - "
+"takže byste jej neměli připojovat nebo jej před restartem jakkoli používat."
+
+#: libparted/arch/linux.c:2262
+#, 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 ""
+"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."
+
+#: libparted/arch/linux.c:2368
+#, fuzzy, c-format
+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."
+
+#: libparted/cs/geom.c:162
+msgid "Can't have the end before the start!"
+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:366
+#, fuzzy, 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:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr "hledám špatné bloky"
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "Nemohu otevřít %s - neznámá jmenovka disku."
+
+#: libparted/disk.c:471
+#, 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:598
+#, fuzzy, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "Oddíl %d je %.3fMb, ale systém souborů je %.3fMb."
+
+#: libparted/disk.c:1075
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "Jmenovky disku %s nepodporují rozšířené oddíly."
+
+#: libparted/disk.c:1634
+#, 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:1647
+#, fuzzy
+msgid "Too many primary partitions."
+msgstr "Příliš mnoho primárních oddílů"
+
+#: libparted/disk.c:1656
+#, 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:1680
+#, fuzzy, 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:1690
+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:1715
+#, 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:1725 libparted/disk.c:1779 libparted/disk.c:1945
+#, fuzzy
+msgid "Can't have overlapping partitions."
+msgstr "Nemohu mít překrývající se oddíly"
+
+#: libparted/disk.c:1733
+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:2140
+msgid "metadata"
+msgstr "metadata"
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "volné"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "rozšířený"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "logický"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "primární"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "boot"
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr "root"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "skrytý"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2190
+#, fuzzy, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Neznámý příznak oddílu, %d."
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "Informace"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "Varování"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "Chyba"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "Fatální"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "Chyba"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr "Neimplementováno"
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr "Opravit"
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "Ano"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "Ne"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "Znovu"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "Ignorovat"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "Zrušit"
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org containing at least the version (%s) and the following "
+"message: "
+msgstr ""
+"Byla detekována chyba v GNU parted. Pošlete prosím e-mailem hlášení o chybě "
+"na bug-parted@gnu.org obsahující verzi (%s) a následující zprávu:"
+
+#: libparted/filesys.c:384
+msgid "Could not detect file system."
+msgstr "Nemohu detekovat systém souborů."
+
+#: libparted/filesys.c:395
+#, fuzzy
+msgid "The file system is bigger than its volume!"
+msgstr "Systém souborů je větší než jeho obsah!"
+
+#: libparted/filesys.c:403
+#, c-format
+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."
+
+#: libparted/filesys.c:445
+#, c-format
+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."
+
+#: libparted/filesys.c:505
+#, c-format
+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."
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr "přímé kopírování bloků"
+
+#: libparted/filesys.c:582
+msgid "growing file system"
+msgstr "zvětšování systému souborů"
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr "Nemohu kopírovat do překrývajícího se oddílu."
+
+#: libparted/filesys.c:644
+#, fuzzy, c-format
+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."
+
+#: libparted/filesys.c:658
+#, c-format
+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."
+
+#: libparted/filesys.c:696
+#, c-format
+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."
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, fuzzy
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr "Systém souborů je větší než jeho obsah!"
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "check"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, fuzzy
+msgid ""
+"The reiserfs file system passed a basic check. For a more comprehensive "
+"check, run reiserfsck --check."
+msgstr ""
+"Systém souborů ext2 prošel základní kontrolou. Pro podrobnější kontrolu "
+"použijte program e2fsck."
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, fuzzy
+msgid "Sorry, can't move the start of reiserfs partitions yet."
+msgstr "Lituji, ještě neumím přesunout začátek oddílů ext2!"
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+msgid "shrinking"
+msgstr "zmenšuji"
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "Varování"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, fuzzy, c-format
+msgid "Device is too small for %lu blocks."
+msgstr "Systém souborů příliš malý pro ext2."
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr ""
+"Podpora pro vytváření souborových systémů %s ještě není implementována."
+
+#: libparted/labels/aix.c:148
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr ""
+"Podpora pro vytváření souborových systémů %s ještě není implementována."
+
+#: libparted/labels/aix.c:161
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+"Podpora pro vytváření souborových systémů %s ještě není implementována."
+
+#: libparted/labels/aix.c:171
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"Podpora pro vytváření souborových systémů %s ještě není implementována."
+
+#: libparted/labels/aix.c:189
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"Podpora pro vytváření souborových systémů %s ještě není implementována."
+
+#: libparted/labels/aix.c:199
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+"Podpora pro vytváření souborových systémů %s ještě není implementována."
+
+#: libparted/labels/bsd.c:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Nemohu splnit všechna omezení na oddíl."
+
+#: libparted/labels/bsd.c:526
+#, fuzzy
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Nemohu alokovat položku jmenovky disku bsd"
+
+#: libparted/labels/dasd.c:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "Nemohu určit velikost %s (%s)"
+
+#: libparted/labels/dasd.c:781
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Nemohu alokovat položku jmenovky disku bsd"
+
+#: libparted/labels/dos.c:827
+#, fuzzy, 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:855
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Neplatná tabulka oddílů - rekurzivní oddíl na %s."
+
+#: libparted/labels/dos.c:1318
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr ""
+
+#: libparted/labels/dos.c:1958
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+#: libparted/labels/dvh.c:190
+#, fuzzy, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr ""
+"%s nemá rozšířený oddíl (oddíl hlavičky svazku). Pokud to budete ignorovat, "
+"budou odstraněny všechny zaváděcí svazky."
+
+#: libparted/labels/dvh.c:313
+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:616
+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:630
+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:644
+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:721
+msgid "Only logical partitions (boot files) have a name."
+msgstr "Jen logické oddíly (zaváděcí soubory) mají název."
+
+#: libparted/labels/dvh.c:812
+msgid "Too many primary partitions"
+msgstr "Příliš mnoho primárních oddílů"
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "%s při zápisu na %s"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, fuzzy, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr "%s %s %s"
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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 obsahuje podpisy GPT, což znamená, ž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:648
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+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:698
+#, 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:827
+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:862
+#, fuzzy
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"Primární tabulka GPT je poškozená, ale záloha se zdá být v pořádku, takže "
+"bude použita záloha."
+
+#: libparted/labels/gpt.c:870
+#, 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 ""
+"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/mac.c:181
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Neplatný podpis %x pro jmenovky disku Mac."
+
+#: libparted/labels/mac.c:226
+msgid "Partition map has no partition map entry!"
+msgstr "Mapa oddílů nemá žádnou položku mapy oddílů!"
+
+#: libparted/labels/mac.c:273
+#, 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:532
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Oddíl %d má neplatný podpis %x."
+
+#: libparted/labels/mac.c:550
+#, 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:580
+#, fuzzy
+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:597
+#, fuzzy
+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:611
+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:622
+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:675
+#, 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:688
+#, 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:736
+msgid "No valid partition map found."
+msgstr "Nenalezena platná mapa oddílů."
+
+#: libparted/labels/mac.c:795
+#, fuzzy, 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:822
+#, fuzzy
+msgid "Weird! There are 2 partitions map entries!"
+msgstr "Podivné - 2 položky mapy oddílu!"
+
+#: libparted/labels/mac.c:1347
+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:1443
+#, fuzzy
+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:354
+#, fuzzy, c-format
+msgid "Invalid partition table on %s."
+msgstr "Neplatná tabulka oddílů na %s"
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, fuzzy, 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. Je potřeba přidat pro to podporu."
+
+#: libparted/labels/pc98.c:791
+msgid "Can't add another partition."
+msgstr "Nemohu přidat další oddíl."
+
+#: libparted/labels/rdb.c:162
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:497
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:600
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:697
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:740
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:1069
+#, fuzzy
+msgid "Unable to allocate a partition number."
+msgstr "Očekávám číslo oddílu."
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr "Detekována poškozená jmenovka disku Sun."
+
+#: libparted/labels/sun.c:266
+#, 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 ""
+"Geometrie disku CHS (%d,%d,%d) neodpovídá geometrii uložené v jmenovce disku "
+"(%d,%d,%d)."
+
+#: libparted/labels/sun.c:288
+#, 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:442
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:737
+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:752
+msgid "Sun disk label is full."
+msgstr "Jmenovka disku Sun je plná."
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr "Nedostatek paměti."
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr ""
+
+#: libparted/unit.c:527
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "Očekávám číslo oddílu."
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:72
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s při zápisu na %s"
+
+#: libparted/fs/amiga/amiga.c:278
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:289
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:318
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr ""
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr "Nekonzistentní deskriptory skupin!"
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+#, fuzzy
+msgid "File system full!"
+msgstr "Systém souborů plný!"
+
+#: libparted/fs/ext2/ext2.c:686
+#, fuzzy
+msgid "Invalid superblock. Are you sure this is an ext2 file system?"
+msgstr "Neplatný superblok. Jste si jisti, že toto je systém souborů ext2?"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+#, fuzzy
+msgid "File system has errors! You should run e2fsck."
+msgstr "Systém souborů má chyby! Měli byste spustit e2fsck."
+
+#: libparted/fs/ext2/ext2.c:711
+#, fuzzy
+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 e2fsck. Úpravy nečistého "
+"systému souborů mohou způsobit vážné poškození dat."
+
+#: libparted/fs/ext2/ext2.c:731
+#, fuzzy
+msgid "File system has an incompatible feature enabled."
+msgstr "Systém souborů má povolenou nekompatibilní vlastnost"
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr "Chyba při alokaci buffer cache."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+#, fuzzy
+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."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr "Nedostatek volných inodů!"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+#, fuzzy
+msgid "File system is too full to remove a group!"
+msgstr "Systém souborů je příliš plný na to, abych mohl odstranit skupinu!"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+#, fuzzy
+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!"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr "přidávám skupiny"
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, fuzzy, c-format
+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 %"
+"d bloků. Lituji."
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, fuzzy, c-format
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:666
+#, fuzzy
+msgid "File system was not cleanly unmounted! You should run e2fsck."
+msgstr "Systém souborů nebyl správně odpojen! Měli byste e2fsck."
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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Í'."
+
+#: libparted/fs/ext2/ext2_resize.c:691
+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 ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+#, fuzzy
+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!"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, fuzzy, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "Blok %i nemá odkaz? Divné"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, fuzzy, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "Blok %i by neměl být označen!"
+
+#: libparted/fs/ext2/interface.c:186
+#, fuzzy
+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."
+
+#: libparted/fs/ext2/interface.c:203
+msgid "Sorry, can't move the start of ext2 partitions yet!"
+msgstr "Lituji, ještě neumím přesunout začátek oddílů ext2!"
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr "Nemohu vyprázdnit buffer cache!"
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr "zapisuji metadata skupin"
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr "Systém souborů příliš malý pro ext2."
+
+#: libparted/fs/fat/calc.c:135
+#, fuzzy, c-format
+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 %dM volného místa "
+"(momentálně máte volných jen %dM)"
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:308
+#, fuzzy, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr "Oddíl je příliš velký/malý pro systém souborů %s"
+
+#: libparted/fs/fat/fat.c:474
+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."
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr "Pro tento typ FAT neexistuje možná konfigurace."
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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)."
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+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ů."
+
+#: libparted/fs/fat/fat.c:874
+#, fuzzy
+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/resize.c:159
+#, 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 ""
+"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ů."
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr "Chyba při zapisování do kořenového adresáře."
+
+#: libparted/fs/fat/resize.c:489
+#, fuzzy
+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."
+
+#: libparted/fs/fat/resize.c:492
+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)."
+
+#: libparted/fs/fat/resize.c:500
+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."
+
+#: libparted/fs/fat/resize.c:504
+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."
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr "Chcete použít FAT32?"
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: libparted/fs/fat/resize.c:551
+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."
+
+#: libparted/fs/fat/resize.c:567
+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."
+
+#: libparted/fs/fat/resize.c:580
+#, fuzzy
+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!"
+
+#: 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
+#, fuzzy
+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
+#, fuzzy
+msgid "File system has an invalid number of FATs."
+msgstr "Systém souborů má neplatný počet FAT."
+
+#: libparted/fs/fat/bootsector.c:139
+#, 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:164
+#, 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:213
+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:219
+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:225
+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:235
+#, fuzzy
+msgid "File system is FAT12, which is unsupported."
+msgstr "Souborový systém je FAT12, což není podporováno."
+
+#: libparted/fs/fat/bootsector.c:411
+#, 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/fat/count.c:152
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:174
+#, fuzzy, c-format
+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."
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:203
+#, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr "%s je %dk, ale má %d clusterů (%dk)."
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:269
+#, fuzzy, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "fat_table_set: cluster %ld mimo systém souborů"
+
+#: libparted/fs/fat/table.c:301
+#, fuzzy, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "fat_table_get: cluster %ld mimo systém souborů"
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "fat_table_alloc_cluster: nejsou volné clustery"
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, 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:318
+#, 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:358
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Nerozpoznaný podpis odkládacího oddílu linuxu '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr "Příliš mnoho špatných stránek."
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr ""
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr ""
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+msgid "Could not update the extent cache for HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+msgid "Trying to write HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+msgid "Could not update the extent cache for HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+msgid "Trying to write HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:320
+#, fuzzy
+msgid "writing HFS Master Directory Block"
+msgstr "Chyba při zapisování do kořenového adresáře."
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:720
+#, fuzzy
+msgid "Error while writing the allocation file."
+msgstr "Chyba při zapisování do kořenového adresáře."
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:904
+msgid ""
+"It seems there is an error in the HFS wrapper: the bad blocks file doesn't "
+"contain the embedded HFS+ volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:998
+#, fuzzy
+msgid "shrinking HFS wrapper"
+msgstr "zmenšuji"
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+msgid ""
+"This is not a real %s check. This is going to extract special low level "
+"files for debugging purposes."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+msgid ""
+"Invalid size of a transaction block while replaying the journal (%i bytes)."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:260
+msgid ""
+"Journal stored outside of the volume are not supported. Try to desactivate "
+"the journal and run Parted again."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:271
+#, fuzzy
+msgid "Journal offset or size is not multiple of the sector size."
+msgstr "Změna začátku clusteru = %d, což není násobek velikosti clusteru %d."
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:302
+msgid "Journal size mismatch between journal info block and journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:314
+#, fuzzy
+msgid "Some header fields are not multiple of the sector size."
+msgstr "Změna začátku clusteru = %d, což není násobek velikosti clusteru %d."
+
+#: libparted/fs/hfs/journal.c:323
+msgid ""
+"The sector size stored in the journal is not 512 bytes. Parted only "
+"supports 512 bytes length sectors."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:353
+msgid ""
+"The journal is not empty. Parted must replay the transactions before "
+"opening the file system. This will modify the file system."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:381
+msgid ""
+"The volume header or the master directory block has changed while replaying "
+"the journal. You should restart Parted."
+msgstr ""
+
+#: libparted/fs/hfs/probe.c:51
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to %"
+"d bytes."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+msgid ""
+"A reference to an extent comes from a place it should not. You should check "
+"the file system!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:475
+msgid "This HFS volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+msgid ""
+"The extents overflow file should not contain its own extents! You should "
+"check the file system."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+#, fuzzy
+msgid "Could not cache the file system in memory."
+msgstr "Nemohu detekovat systém souborů."
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:619
+msgid "This HFS+ volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr "zobrazí tuto zprávu nápovědy"
+
+#: parted/parted.c:95
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr "nikdy nežádá o intervenci uživatele"
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr "zobrazí verzi"
+
+#: parted/parted.c:111
+#, 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 je číslo oddílu používané Linuxem. Na jmenovkách disku msdos mají "
+"primární oddíly čísla 1-4 a logické oddíly jsou od 5 dál.\n"
+
+#: parted/parted.c:114
+msgid "LABEL-TYPE is one of: "
+msgstr "TYP-JMENOVKY je jeden z: "
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr "PŘEPÍNAČ je jeden z: "
+
+#: parted/parted.c:116
+#, fuzzy
+msgid "UNIT is one of: "
+msgstr "PŘEPÍNAČ je jeden z: "
+
+#: parted/parted.c:117
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "TYP-ODDÍLU je jeden z: primary, logical, extended\n"
+
+#: parted/parted.c:119
+msgid "FS-TYPE is one of: "
+msgstr "TYP-FS je jeden z: "
+
+#: parted/parted.c:120
+#, 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 ""
+"ZAČÁTEK a KONEC jsou v megabajtech. Záporné hodnoty se odčítají od konce "
+"disku.\n"
+
+#: parted/parted.c:123
+msgid "STATE is one of: on, off\n"
+msgstr "STAV je jeden z: on, off\n"
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "ZAŘÍZENÍ je obvykle /dev/hda nebo /dev/sda\n"
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr "NÁZEV je libovolné slovo\n"
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr ""
+
+#: parted/parted.c:130
+#, 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, 2003 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ý, ale BEZ JAKÉKOLI "
+"ZÁRUKY; bez i předpokládané záruky PRODEJNOSTI nebo VHODNOSTI PRO KONKRÉTNÍ "
+"ÚČEL. Další podrobnosti najdete v GNU General Public License.\n"
+"\n"
+
+#: parted/parted.c:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(zbylý čas %.2d:%.2d)"
+
+#: parted/parted.c:195
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:211
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Oddíl(a) na %s jsou používány."
+
+#: parted/parted.c:223
+msgid ""
+"The existing file system will be destroyed and all data on the partition "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+msgid "Partition number?"
+msgstr "Číslo oddílu?"
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr "Zdrojové zařízení?"
+
+#: parted/parted.c:504
+msgid "Source partition number?"
+msgstr "Číslo zdrojového oddílu?"
+
+#: parted/parted.c:509
+#, fuzzy
+msgid "Can't copy an extended partition."
+msgstr "Nemohu kopírovat rozšířené oddíly."
+
+#: parted/parted.c:515
+msgid "Destination partition number?"
+msgstr "Číslo cílového oddílu?"
+
+#: parted/parted.c:615
+msgid "New disk label type?"
+msgstr "Typ nové jmenovky disku?"
+
+#: parted/parted.c:656
+msgid "File system?"
+msgstr "Systém souborů?"
+
+#: parted/parted.c:707 parted/parted.c:878
+msgid "Partition type?"
+msgstr "Typ oddílu?"
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+msgid "Partition name?"
+msgstr "Název oddílu?"
+
+#: parted/parted.c:722 parted/parted.c:895
+msgid "File system type?"
+msgstr "Typ souborového systému?"
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr "Začátek?"
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr "Konec?"
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+
+#: parted/parted.c:890
+#, fuzzy
+msgid "An extended partition cannot hold a file system. Did you want mkpart?"
+msgstr "Rozšířené oddíly nemohou mít systém souborů. Chtěli jste mkpart?"
+
+#: parted/parted.c:1050
+#, fuzzy
+msgid "Can't move an extended partition."
+msgstr "Nemohu přesouvat rozšířené oddíly."
+
+#: parted/parted.c:1079
+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?"
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr "Minor: %d\n"
+
+#: parted/parted.c:1228
+#, fuzzy, c-format
+msgid "Flags: %s\n"
+msgstr "Přepínače: "
+
+#: parted/parted.c:1229
+#, c-format
+msgid "File System: %s\n"
+msgstr "Systém souborů: %s\n"
+
+#: parted/parted.c:1230
+#, fuzzy
+msgid "Size: "
+msgstr "Velikost: %10.3fMb (%d%%)\n"
+
+#: parted/parted.c:1235
+#, fuzzy
+msgid "Minimum size: "
+msgstr "Minimální velikost: %10.3fMb (%d%%)\n"
+
+#: parted/parted.c:1238
+#, fuzzy
+msgid "Maximum size: "
+msgstr "Maximální velikost: %10.3fMb (%d%%)\n"
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:1364
+#, fuzzy, c-format
+msgid "Disk %s: %s\n"
+msgstr "%s %s %s"
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:1383
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d. Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:1392
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "Název oddílu?"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr ""
+
+#: parted/parted.c:1406 parted/parted.c:1409
+#, fuzzy
+msgid "Start"
+msgstr "Začátek?"
+
+#: parted/parted.c:1407 parted/parted.c:1410
+#, fuzzy
+msgid "End"
+msgstr "Konec?"
+
+#: parted/parted.c:1410
+#, fuzzy
+msgid "Size"
+msgstr "resize"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr ""
+
+#: parted/parted.c:1416
+#, fuzzy
+msgid "File system"
+msgstr "Systém souborů?"
+
+#: parted/parted.c:1419
+#, fuzzy
+msgid "Name"
+msgstr "name"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr "Přepínače"
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1624
+#, fuzzy, 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 %.3fMb -> %.3fMb. Chcete jej přidat do tabulky "
+"oddílů?"
+
+#: parted/parted.c:1663
+msgid "searching for file systems"
+msgstr "hledám systémy souborů"
+
+#: parted/parted.c:1877
+msgid "New device?"
+msgstr "Nové zařízení?"
+
+#: parted/parted.c:1902
+#, fuzzy
+msgid "Flag to Invert?"
+msgstr "Přepínač, který změnit?"
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr "Nový stav?"
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "check"
+
+#: parted/parted.c:2096
+#, fuzzy
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr ""
+"check MINOR provést jednoduchou kontrolu systému souborů"
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "cp"
+
+#: parted/parted.c:2105
+#, fuzzy
+msgid ""
+"cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another "
+"partition"
+msgstr ""
+"cp [OD-ZAŘÍZENÍ] OD-MINOR DO-MINOR zkopírovat systém souborů na jiný "
+"oddíl"
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:2114
+#, fuzzy
+msgid ""
+"help [COMMAND] print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [PŘÍKAZ] vypíše obecnou nápovědu nebo nápovědu o PŘÍKAZu"
+
+#: parted/parted.c:2120
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:2120
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:2123
+#, fuzzy
+msgid ""
+"mklabel,mktable LABEL-TYPE create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel TYP-JMENOVKY vytvořit novou jmenovku disku (tabulku oddílů)"
+
+#: parted/parted.c:2129
+msgid "mkfs"
+msgstr "mkfs"
+
+#: parted/parted.c:2132
+#, fuzzy
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+"mkfs MINOR TYP-FS vytvořit systém souborů FS-TYPE na oddílu MINOR"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:2141
+#, fuzzy
+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:2147
+#, 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 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:2152
+msgid "mkpartfs"
+msgstr "mkpartfs"
+
+#: parted/parted.c:2155
+#, fuzzy
+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ů"
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr "move"
+
+#: parted/parted.c:2164
+#, fuzzy
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "move MINOR ZAČÁTEK KONEC přesunout oddíl MINOR"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:2172
+#, fuzzy
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr "name MINOR NÁZEV pojmenovat oddíl MINOR NÁZEV"
+
+#: parted/parted.c:2177
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr "print [MINOR] zobrazit tabulku oddílů nebo oddíl"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:2199
+#, fuzzy
+msgid "quit exit program"
+msgstr "quit ukončit program"
+
+#: parted/parted.c:2204
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:2207
+#, fuzzy
+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:2213
+msgid "resize"
+msgstr "resize"
+
+#: parted/parted.c:2216
+#, fuzzy
+msgid ""
+"resize NUMBER START END resize partition NUMBER and its "
+"file system"
+msgstr ""
+"rescue ZAČÁTEK KONEC zachránit ztracený oddíl poblíž ZAČÁTKU a KONCE"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:2227
+#, fuzzy
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "rm MINOR odstranit oddíl MINOR"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:2235
+#, fuzzy
+msgid "select DEVICE choose the device to edit"
+msgstr "select ZAŘÍZENÍ zvolit upravované zařízení"
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:2243
+#, fuzzy
+msgid ""
+"set NUMBER FLAG STATE change the FLAG on partition NUMBER"
+msgstr "set MINOR PŘEPÍNAČ STAV změnit přepínač na oddílu MINOR"
+
+#: parted/parted.c:2249
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:2252
+msgid ""
+"toggle [NUMBER [FLAG]] toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:2258
+#, fuzzy
+msgid "unit"
+msgstr "quit"
+
+#: parted/parted.c:2261
+#, fuzzy
+msgid "unit UNIT set the default unit to UNIT"
+msgstr "quit ukončit program"
+
+#: parted/parted.c:2266
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:2269
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:2273
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "Nenalezeno žádné zařízení"
+
+#: parted/parted.c:2412
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:2450
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Nezapomeňte aktualizovat /etc/fstab, je-li to potřeba.\n"
+
+#: parted/ui.c:160
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:163
+#, 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 ""
+"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, běží v "
+"interaktivním režimu.\n"
+
+#: parted/ui.c:168
+#, 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:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:372
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:377
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:420
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:523
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:1024
+msgid "Expecting a partition number."
+msgstr "Očekávám číslo oddílu."
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "Oddíl neexistuje."
+
+#: parted/ui.c:1053
+msgid "Expecting a file system type."
+msgstr "Očekávám typ systému souborů."
+
+#: parted/ui.c:1060
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Neznámý typ systému souborů \"%s\"."
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr "Očekávám typ jmenovky disku."
+
+#: parted/ui.c:1178
+msgid "Can't create any more partitions."
+msgstr "Nemohu vytvářet další oddíly."
+
+#: parted/ui.c:1188
+msgid "Expecting a partition type."
+msgstr "Očekávám typ oddílu."
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr "on"
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr "off"
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "PŘEPÍNAČe:"
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "PŘÍKAZy:"
+
+#: parted/ui.c:1445
+#, c-format
+msgid "Using %s\n"
+msgstr "Používám %s\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "je-li potřeba, požádá o intervenci uživatele"
+
+#, 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 argumentů zobrazí celou tabulku oddílů. Je-li zadáno číslo "
+#~ "oddílu, zobrazí se o tomto oddílu podrobnější informace.\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 ""
+#~ "Velikost sektoru na %s je %d bajtů. Ví se, že parted nepracuje správně s "
+#~ "disky s velikostí sektoru jinou než %d bajtů"
+
+#~ msgid "Could not read geometry of %s - %s."
+#~ msgstr "Nemohu přečíst geometrii %s - %s."
+
+#~ msgid "Device %s has dodgey geometry."
+#~ msgstr "Zařízení %s má riskantní geometrii."
+
+#~ 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 ""
+#~ "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 ""
+#~ "You requested to create a partition at %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Požadovali jste vytvoření oddílu na %.3f-%.3fMb. Nejbližší, co Parted "
+#~ "může zvládnout, je %.3f-%.3fMb."
+
+#~ msgid ""
+#~ "You requested to move the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Požadovali jste přesun oddílu na %.3f-%.3fMb. Nejbližší, co Parted může "
+#~ "zvládnout, je %.3f-%.3fMb."
+
+#~ 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 "Minor Start End "
+#~ msgstr "Minor Začátek Konec "
+
+#~ msgid "Type "
+#~ msgstr "Typ "
+
+#~ msgid "Filesystem "
+#~ msgstr "Sys souborů "
+
+#~ msgid "Name "
+#~ msgstr "Název "
+
+#~ msgid ""
+#~ "You requested to resize the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Požadovali jste změnu velikosti oddílu na %.3f-%.3fMb. Nejbližší, co "
+#~ "Parted může zvládnout, je %.3f-%.3fMb."
+
+#~ msgid "resize MINOR START END resize filesystem on partition MINOR"
+#~ msgstr ""
+#~ "resize MINOR ZAČÁTEK KONEC změnit velikost systému souborů na oddílu "
+#~ "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 ""
+#~ "Našli jste chybu v GNU parted. Pošlete prosím e-mailem hlášení o chybě na "
+#~ "bug-parted@gnu.org obsahující verzi (%s) a následující zprávu:\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 ""
+#~ "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."
+
+#~ msgid ""
+#~ "The operating system thinks the geometry on %s is %d/%d/%d. Therefore, "
+#~ "cylinder 1024 ends at %.3fM.%s"
+#~ msgstr ""
+#~ "Operační systém si myslí, že geometrie na %s je %d/%d/%d. Cylindr 1024 "
+#~ "tedy končí na %.3fM.%s"
+
+#~ msgid "The operating system thinks the geometry on %s is %d/%d/%d.%s"
+#~ msgstr "Operační systém si myslí, že geometrie na %s je %d/%d/%d.%s"
diff --git a/parted-1.8.7/po/da.gmo b/parted-1.8.7/po/da.gmo
new file mode 100644
index 0000000..6d37035
--- /dev/null
+++ b/parted-1.8.7/po/da.gmo
Binary files differ
diff --git a/parted-1.8.7/po/da.po b/parted-1.8.7/po/da.po
new file mode 100644
index 0000000..a47f0e5
--- /dev/null
+++ b/parted-1.8.7/po/da.po
@@ -0,0 +1,3569 @@
+# Danish messages for parted
+# Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
+# Keld Simonsen <keld@dkuug.dk>, 2001-2002.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 1.6.5-pre1\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2007-05-09 17:02-0400\n"
+"PO-Revision-Date: 2003-01-17 17:09+0200\n"
+"Last-Translator: Keld Simonsen <keld@dkuug.dk>\n"
+"Language-Team: Danish <dansk@klid.dk>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Ukendt filsystemstype '%s'."
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "En fejl opstod da %s åbnedes: %s"
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, 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:411 libparted/arch/linux.c:1431
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s under positionering for at læse på %s"
+
+#: libparted/arch/beos.c:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s under læsning på %s"
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, 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:496 libparted/arch/linux.c:1570
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s under positionering for at skrive på %s"
+
+#: libparted/arch/beos.c:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s under skrivning på %s"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "For mange dårlige sider."
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr "Kunne ikke åbne %s."
+
+#: libparted/arch/gnu.c:114
+msgid "Unable to probe store."
+msgstr "Kunne ikke undersøge lageret."
+
+#: libparted/arch/gnu.c:352
+#, 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 ""
+"Partitionstabellen kunne ikke genindlæses, så derfor skal du starte maskine "
+"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:369
+#, 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 ""
+"partitionstabellen på %s (%s). Det betyder at Linux 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:380 parted/parted.c:2443
+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:772
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s prøver at synkronisere %s med disk"
+
+#: libparted/arch/linux.c:408
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Kunne ikke tage status på enheden %s - %s."
+
+#: libparted/arch/linux.c:523
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:539
+#, c-format
+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 ""
+
+#: libparted/arch/linux.c:579
+#, fuzzy, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Kunne ikke bestemme størrelsen på %s (%s)"
+
+#: libparted/arch/linux.c:668
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Kunne ikke finde identitet for enhed %s - %s"
+
+#: libparted/arch/linux.c:677
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:698
+#, 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:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "En fejl opstod ved initiering af SCSI-enheden %s - %s"
+
+#: libparted/arch/linux.c:928
+#, fuzzy, c-format
+msgid ""
+"The device %s has zero length, and can't possibly store a file system or "
+"partition table. Perhaps you selected the wrong device?"
+msgstr ""
+"Enheden %s har længden nul, og kan slet ikke indeholde et filsystem eller en "
+"partitionstabel. Måske har du valgt den forkerte enhed?"
+
+#: libparted/arch/linux.c:1032
+#, 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 ""
+"Kunne ikke bestemme geometrien på filen/enheden. Du bør ikke bruge Parted "
+"hvis du ikke er RIGTIGT sikker på hvad du gør!"
+
+#: libparted/arch/linux.c:1110
+msgid "DAC960 RAID controller"
+msgstr "Styrekort for DAC960 RAID"
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr "Styrekort for ATARAID"
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr "I2O-styrekort"
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr ""
+
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "Ukendt"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "ped_device_new() Understøttelse mangler for denne enhedstype"
+
+#: libparted/arch/linux.c:2083
+#, 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 ""
+"Fejl vel 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:2262
+#, 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 ""
+"Kernen kunne ikke genindlæse partitionstabellen på %s (%s). Det betyder at "
+"Linux ikke véd noget som helst om de ændringer du lavede før du "
+"genopstarter. Du bør genstarte maskinen inden du gør noget som helst med %s."
+
+#: libparted/arch/linux.c:2368
+#, fuzzy, c-format
+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 ""
+"Kernen kunne ikke genindlæse partitionstabellen på %s (%s). Det betyder at "
+"Linux ikke véd noget som helst om de ændringer du lavede før du "
+"genopstarter. Du bør genstarte maskinen inden du gør noget som helst med %s."
+
+#: libparted/cs/geom.c:162
+msgid "Can't have the end before the start!"
+msgstr "Kan ikke have slutningen før begyndelsen!"
+
+#: 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:366
+#, fuzzy, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr "Forsøgte skrive sektorerne %ld-%ld udenfor partitionen på %s"
+
+#: libparted/cs/geom.c:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr "kontroller for dårlige blokke"
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "Kan ikke åbne %s - ukendt filallokeringstabel."
+
+#: libparted/disk.c:471
+#, 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:598
+#, fuzzy, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "Partition %d er %.3fMb, men filsystemet er %.3fMb."
+
+#: libparted/disk.c:1075
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "Filallokeringstabeller for %s understøtter ikke udvidede partitioner."
+
+#: libparted/disk.c:1634
+#, 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:1647
+#, fuzzy
+msgid "Too many primary partitions."
+msgstr "For mange primære partitioner"
+
+#: libparted/disk.c:1656
+#, 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:1680
+#, fuzzy, 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:1690
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Kan ikke have logiske partitioner udenfor den udvidede partition."
+
+#: libparted/disk.c:1715
+#, 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:1725 libparted/disk.c:1779 libparted/disk.c:1945
+#, fuzzy
+msgid "Can't have overlapping partitions."
+msgstr "Kan ikke have overlappende partitioner."
+
+#: libparted/disk.c:1733
+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:2140
+msgid "metadata"
+msgstr "metadata"
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "ledigt"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "udvidet"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "logisk"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "primær"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "start"
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr "rod"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr "swapplads"
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "skjult"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2190
+#, fuzzy, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Ukendt partitionsflag, %d."
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "Information"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "Advarsel"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "Fejl"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "Fatal"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "Programfejl"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr "Ikke implementeret"
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr "Reparér"
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "Ja"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "Nej"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "Forsøg igen"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "Ignorér"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "Annullér"
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org containing at least the version (%s) and the following "
+"message: "
+msgstr ""
+"Send en fejlrapport med e-post til bug-parted@gnu.org, hvor du angiver "
+"versionsnumret (%s) og følgende meddelelse:"
+
+#: libparted/filesys.c:384
+msgid "Could not detect file system."
+msgstr "Kunne ikke finde noget filsystem."
+
+#: libparted/filesys.c:395
+#, fuzzy
+msgid "The file system is bigger than its volume!"
+msgstr "Filsystemet er større end dets plads på diskdrevet!"
+
+#: libparted/filesys.c:403
+#, c-format
+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."
+
+#: libparted/filesys.c:445
+#, c-format
+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."
+
+#: libparted/filesys.c:505
+#, c-format
+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."
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr "kopiering af rå blokke"
+
+#: libparted/filesys.c:582
+msgid "growing file system"
+msgstr "udvider filsystem"
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr "Kan ikke kopiere til en overlappende partition."
+
+#: libparted/filesys.c:644
+#, fuzzy, c-format
+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."
+
+#: libparted/filesys.c:658
+#, c-format
+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."
+
+#: libparted/filesys.c:696
+#, c-format
+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."
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, fuzzy
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr "Filsystemet er større end dets plads på diskdrevet!"
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "tjek"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, fuzzy
+msgid ""
+"The reiserfs file system passed a basic check. For a more comprehensive "
+"check, run reiserfsck --check."
+msgstr ""
+"Filsystemet (e2fs) klarede et grundlæggende test. For et mere gennemgående "
+"test, brug programmet e2fsck."
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, fuzzy
+msgid "Sorry, can't move the start of reiserfs partitions yet."
+msgstr "Kan ikke flytte en ext2-partitions begyndelse endnu!"
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+msgid "shrinking"
+msgstr "krymper"
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "Advarsel"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, fuzzy, c-format
+msgid "Device is too small for %lu blocks."
+msgstr "Filsystem for lille til ext2."
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr ""
+"Understøttelse for at oprette filsystemer af type %s er ikke implementeret "
+"endnu."
+
+#: libparted/labels/aix.c:148
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr ""
+"Understøttelse for at oprette filsystemer af type %s er ikke implementeret "
+"endnu."
+
+#: libparted/labels/aix.c:161
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+"Understøttelse for at oprette filsystemer af type %s er ikke implementeret "
+"endnu."
+
+#: libparted/labels/aix.c:171
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"Understøttelse for at oprette filsystemer af type %s er ikke implementeret "
+"endnu."
+
+#: libparted/labels/aix.c:189
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"Understøttelse for at oprette filsystemer af type %s er ikke implementeret "
+"endnu."
+
+#: libparted/labels/aix.c:199
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+"Understøttelse for at oprette filsystemer af type %s er ikke implementeret "
+"endnu."
+
+#: libparted/labels/bsd.c:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Kunne ikke opfylde alle begrænsninger på partitionen."
+
+#: libparted/labels/bsd.c:526
+#, fuzzy
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Kan ikke tildele en plads til bsd-disketikette"
+
+#: libparted/labels/dasd.c:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "Kunne ikke bestemme størrelsen på %s (%s)"
+
+#: libparted/labels/dasd.c:781
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Kan ikke tildele en plads til bsd-disketikette"
+
+#: libparted/labels/dos.c:827
+#, fuzzy, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Ugyldig partitionstabel på %s - fejlagtig signatur %x"
+
+#: libparted/labels/dos.c:855
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Ugyldig partitionstabel - rekursiv partition på %s."
+
+#: libparted/labels/dos.c:1318
+#, fuzzy
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "Ext2-partitioner kan ikke gemmes i filsystemer af typen msdos."
+
+#: libparted/labels/dos.c:1958
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+#: libparted/labels/dvh.c:190
+#, fuzzy, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr ""
+"%s har ingen udvidet partition (bindhoved-partition). Hvis du ignorerer "
+"dette vil alle opstarts-bind blive slettet."
+
+#: libparted/labels/dvh.c:313
+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:616
+msgid "Only primary partitions can be root partitions."
+msgstr "Kun primære partitioner kan være rod-partitioner."
+
+#: libparted/labels/dvh.c:630
+msgid "Only primary partitions can be swap partitions."
+msgstr "Kun primære partitioner kan være swap-partitioner."
+
+#: libparted/labels/dvh.c:644
+msgid "Only logical partitions can be a boot file."
+msgstr "Kun logiske partitioner kan være en opstatsfil."
+
+#: libparted/labels/dvh.c:721
+msgid "Only logical partitions (boot files) have a name."
+msgstr "Kun logiske partitioner (opstartsfiler) har et navn."
+
+#: libparted/labels/dvh.c:812
+msgid "Too many primary partitions"
+msgstr "For mange primære partitioner"
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "%s under skrivning på %s"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, fuzzy, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr "%s %s %s"
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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 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:648
+#, fuzzy, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+msgstr ""
+"Formatet på GPT-partitionstabellen er nyere end hvad Parted kan genkende. "
+"Fortæl os om det! bug-parted@gnu.org"
+
+#: libparted/labels/gpt.c:698
+#, 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:827
+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:862
+#, fuzzy
+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:870
+#, 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 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/mac.c:181
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Ugyldig signatur %x for en filallokeringstabel for Mac."
+
+#: libparted/labels/mac.c:226
+msgid "Partition map has no partition map entry!"
+msgstr "Partitionstabellen mangler oplysninger om sig selv!"
+
+#: libparted/labels/mac.c:273
+#, 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:532
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Partition %d har en ugyldig signatur %x."
+
+#: libparted/labels/mac.c:550
+#, 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:580
+#, fuzzy
+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:597
+#, fuzzy
+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:611
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "Partitionens startområde optager ikke hele partitionens plads."
+
+#: libparted/labels/mac.c:622
+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:675
+#, 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:688
+#, 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:736
+msgid "No valid partition map found."
+msgstr "Ingen gyldig partitionstabel kunne findes."
+
+#: libparted/labels/mac.c:795
+#, fuzzy, 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:822
+#, fuzzy
+msgid "Weird! There are 2 partitions map entries!"
+msgstr "Mærkeligt - 2 poster i partitionstabellen!"
+
+#: libparted/labels/mac.c:1347
+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:1443
+#, fuzzy
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr ""
+"Kan ikke tilføje endnu en primær partition - partitionstabellen er for lille."
+
+#: libparted/labels/pc98.c:354
+#, fuzzy, c-format
+msgid "Invalid partition table on %s."
+msgstr "Ugyldig partitionstabel på %s"
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, fuzzy, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries. This is still "
+"unsupported."
+msgstr ""
+"Partitionen %d ligger ikke på hel cylindergrænse. Skal tilføje "
+"understøttelse for dette."
+
+#: libparted/labels/pc98.c:791
+msgid "Can't add another partition."
+msgstr "Kan ikke tilføje endnu en partition."
+
+#: libparted/labels/rdb.c:162
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:497
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:600
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:697
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:740
+#, fuzzy, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Kan ikke bestemme om partitionen er monteret."
+
+#: libparted/labels/rdb.c:1069
+#, fuzzy
+msgid "Unable to allocate a partition number."
+msgstr "Forventer et partitionsnummer."
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr "En beskadiget Sun disk-etikette blev fundet."
+
+#: libparted/labels/sun.c:266
+#, 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 ""
+"Disk CHS-geometrien (%d,%d,%d) passer ikke med geometrien gemt på disk-"
+"etiketten (%d,%d,%d)."
+
+#: libparted/labels/sun.c:288
+#, 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:442
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:737
+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:752
+msgid "Sun disk label is full."
+msgstr "Sun disk-etikette er fuld."
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr "Ikke mere hukommelse."
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, fuzzy, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "Kan ikke oprette en partition udenfor enheden."
+
+#: libparted/unit.c:527
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "Kan ikke bestemme om partitionen er monteret."
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:72
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s under skrivning på %s"
+
+#: libparted/fs/amiga/amiga.c:278
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:289
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:318
+#, fuzzy, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "Kan ikke bestemme om partitionen er monteret."
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr "Inkonsistente gruppebeskrivere!"
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+#, fuzzy
+msgid "File system full!"
+msgstr "Filsystemet er fuldt!"
+
+#: libparted/fs/ext2/ext2.c:686
+#, fuzzy
+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?"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+#, fuzzy
+msgid "File system has errors! You should run e2fsck."
+msgstr "Filsystemet indholder fejl! Kør e2fsck først."
+
+#: libparted/fs/ext2/ext2.c:711
+#, fuzzy
+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! Brug e2fsck."
+
+#: libparted/fs/ext2/ext2.c:731
+#, fuzzy
+msgid "File system has an incompatible feature enabled."
+msgstr "Filsystemet har en inkompatibel finesse aktiveret"
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr "Kunne ikke reservere buffercache"
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+#, fuzzy
+msgid ""
+"Found an inode with a incorrect link count. Better go run e2fsck first!"
+msgstr "Fandt en inode med fejlagtigt antal lænker. Kør e2fsck først."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr "Der findes ikke tilstrækkeligt mange frie inoder!"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+#, fuzzy
+msgid "File system is too full to remove a group!"
+msgstr "Filsystemet er for optaget til at fjerne en gruppe!"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+#, fuzzy
+msgid "File system has too many allocated inodes to remove a group!"
+msgstr "Filsystemet har for mange reserverede inoder for at fjerne en gruppe!"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr "tilføjer grupper"
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, fuzzy, c-format
+msgid "Your file system is too full to resize it to %i blocks. Sorry."
+msgstr "Filsystemet er for optaget til at ændre dets størrelse til %i blokke."
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, fuzzy, c-format
+msgid ""
+"Your file system has too many occupied inodes to resize it to %i blocks. "
+"Sorry."
+msgstr ""
+"Filsystemet har for mange optagede inoder til at ændre dets størrelse til %i "
+"blokke."
+
+#: libparted/fs/ext2/ext2_resize.c:666
+#, fuzzy
+msgid "File system was not cleanly unmounted! You should run e2fsck."
+msgstr "Filsystemet er ikke afmonteret på rette måde! Brug e2fsck."
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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 ""
+
+#: libparted/fs/ext2/ext2_resize.c:691
+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 ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+#, fuzzy
+msgid "Cross-linked blocks found! Better go run e2fsck first!"
+msgstr "Krydslænkede blokke fundet! Kør e2fsck først!"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, fuzzy, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "Blok %i har ingen reference? Mærkeligt"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, fuzzy, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "Blok %i burde ikke være mærket!"
+
+#: libparted/fs/ext2/interface.c:186
+#, fuzzy
+msgid ""
+"The ext2 file system passed a basic check. For a more comprehensive check, "
+"use the e2fsck program."
+msgstr ""
+"Filsystemet (e2fs) klarede et grundlæggende test. For et mere gennemgående "
+"test, brug programmet e2fsck."
+
+#: libparted/fs/ext2/interface.c:203
+msgid "Sorry, can't move the start of ext2 partitions yet!"
+msgstr "Kan ikke flytte en ext2-partitions begyndelse endnu!"
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr "Kunne ikke rense buffercachen!"
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr "skriver metadata for hver gruppe"
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr "Filsystem for lille til ext2."
+
+#: libparted/fs/fat/calc.c:135
+#, fuzzy, c-format
+msgid ""
+"You need %s of free disk space to shrink this partition to this size. "
+"Currently, only %s is free."
+msgstr ""
+"Du behøver %dM ledig plads for at formindske størrelsen på denne partition "
+"til angiven størrelse. (der er kun %dM ledigt)"
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+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"
+
+#: libparted/fs/fat/fat.c:308
+#, fuzzy, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr "Partitionen for stor eller lille til at indeholde et %s-filsystem"
+
+#: libparted/fs/fat/fat.c:474
+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."
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr "Det findes ingen mulige kombinationer for denne FAT-type."
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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)."
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:874
+#, fuzzy
+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 blive blokeret."
+
+#: libparted/fs/fat/resize.c:159
+#, 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 ikke tilstrækkeligt med plads for alle filer i rodkataloget. Vælg "
+"enten at annullere, eller ignorere og tabe filerne."
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr "En fejl opstod ved skrivning til rodkataloget."
+
+#: libparted/fs/fat/resize.c:489
+#, fuzzy
+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."
+
+#: libparted/fs/fat/resize.c:492
+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)."
+
+#: libparted/fs/fat/resize.c:500
+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."
+
+#: libparted/fs/fat/resize.c:504
+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."
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr "Ønsker du at bruge FAT32?"
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: libparted/fs/fat/resize.c:551
+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."
+
+#: libparted/fs/fat/resize.c:567
+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."
+
+#: libparted/fs/fat/resize.c:580
+#, fuzzy
+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!"
+
+#: 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
+#, fuzzy
+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
+#, fuzzy
+msgid "File system has an invalid number of FATs."
+msgstr "Filsystemet har et fejlagtigt antal filallokeringstabeller."
+
+#: libparted/fs/fat/bootsector.c:139
+#, 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:164
+#, 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:213
+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:219
+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:225
+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:235
+#, fuzzy
+msgid "File system is FAT12, which is unsupported."
+msgstr "Filsystemet er FAT12, som ikke understøttes."
+
+#: libparted/fs/fat/bootsector.c:411
+#, 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/fat/count.c:152
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:174
+#, fuzzy, c-format
+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 for %s. Du "
+"bør køre dosfsck eller scandisk."
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:203
+#, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr "%s er %dk, men den har %d klynger (%dk)."
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:269
+#, fuzzy, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "fat_table_set: klynge %ld ligger udenfor filsystemet"
+
+#: libparted/fs/fat/table.c:301
+#, fuzzy, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "fat_table_get: klynge %ld ligger udenfor filsystemet"
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "fat_table_alloc_cluster: ingen ledige klynger"
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Ukendt signatur for Linux swapplads \\\"%10s\\\"."
+
+#: libparted/fs/linux_swap/linux_swap.c:318
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Ukendt signatur for Linux swapplads \\\"%10s\\\"."
+
+#: libparted/fs/linux_swap/linux_swap.c:358
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Ukendt signatur for Linux swapplads \\\"%10s\\\"."
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr "For mange dårlige sider."
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr ""
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr ""
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+msgid "Could not update the extent cache for HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+msgid "Trying to write HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+msgid "Could not update the extent cache for HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+msgid "Trying to write HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:320
+#, fuzzy
+msgid "writing HFS Master Directory Block"
+msgstr "En fejl opstod ved skrivning til rodkataloget."
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:720
+#, fuzzy
+msgid "Error while writing the allocation file."
+msgstr "En fejl opstod ved skrivning til rodkataloget."
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:904
+msgid ""
+"It seems there is an error in the HFS wrapper: the bad blocks file doesn't "
+"contain the embedded HFS+ volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:998
+#, fuzzy
+msgid "shrinking HFS wrapper"
+msgstr "krymper"
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+msgid ""
+"This is not a real %s check. This is going to extract special low level "
+"files for debugging purposes."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+msgid ""
+"Invalid size of a transaction block while replaying the journal (%i bytes)."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:260
+msgid ""
+"Journal stored outside of the volume are not supported. Try to desactivate "
+"the journal and run Parted again."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:271
+#, fuzzy
+msgid "Journal offset or size is not multiple of the sector size."
+msgstr ""
+"Klynge-startforskel er %d, hvilket ikke er en multipel af klyngestørrelsen %d"
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:302
+msgid "Journal size mismatch between journal info block and journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:314
+#, fuzzy
+msgid "Some header fields are not multiple of the sector size."
+msgstr ""
+"Klynge-startforskel er %d, hvilket ikke er en multipel af klyngestørrelsen %d"
+
+#: libparted/fs/hfs/journal.c:323
+msgid ""
+"The sector size stored in the journal is not 512 bytes. Parted only "
+"supports 512 bytes length sectors."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:353
+msgid ""
+"The journal is not empty. Parted must replay the transactions before "
+"opening the file system. This will modify the file system."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:381
+msgid ""
+"The volume header or the master directory block has changed while replaying "
+"the journal. You should restart Parted."
+msgstr ""
+
+#: libparted/fs/hfs/probe.c:51
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to %"
+"d bytes."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+msgid ""
+"A reference to an extent comes from a place it should not. You should check "
+"the file system!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:475
+msgid "This HFS volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+msgid ""
+"The extents overflow file should not contain its own extents! You should "
+"check the file system."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+#, fuzzy
+msgid "Could not cache the file system in memory."
+msgstr "Kunne ikke finde noget filsystem."
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:619
+msgid "This HFS+ volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr "viser denne hjælpetekst"
+
+#: parted/parted.c:95
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr "spørger aldrig brugeren om alternativer"
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr "viser versionen"
+
+#: parted/parted.c:111
+#, 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 ""
+"LILLE er partitionsnumret som Linux bruger. På filsystemer af type MSDOS er "
+"de primære partitioner numrerede fra 1 til 4, og de logiske partitioner fra "
+"5 og opad.\n"
+
+#: parted/parted.c:114
+msgid "LABEL-TYPE is one of: "
+msgstr "LABEL-TYPE er en af:"
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr "FLAG er et af: "
+
+#: parted/parted.c:116
+#, fuzzy
+msgid "UNIT is one of: "
+msgstr "FLAG er et af: "
+
+#: parted/parted.c:117
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "PART-TYPE er en af: primær, logisk, udvidet\n"
+
+#: parted/parted.c:119
+msgid "FS-TYPE is one of: "
+msgstr "FS-TYPE er en af: "
+
+#: parted/parted.c:120
+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:123
+msgid "STATE is one of: on, off\n"
+msgstr "TILSTAND er en af: på, af\n"
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "ENHED er normalt /dev/hda eller /dev/sda\n"
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr "NAVN er et vilkårligt ord\n"
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr ""
+
+#: parted/parted.c:130
+#, 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 ""
+"Ophavsret © 1998, 1999, 2000, 2001, 2002 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:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(tid tilbage %.2d:%.2d)"
+
+#: parted/parted.c:195
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:211
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Partitionen på %s er i brug."
+
+#: parted/parted.c:223
+msgid ""
+"The existing file system will be destroyed and all data on the partition "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+msgid "Partition number?"
+msgstr "Nummer på partitionen?"
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr "Kildeenhed?"
+
+#: parted/parted.c:504
+msgid "Source partition number?"
+msgstr "Nummer på kildepartitionen?"
+
+#: parted/parted.c:509
+#, fuzzy
+msgid "Can't copy an extended partition."
+msgstr "Kan ikke kopiere udvidede partitioner."
+
+#: parted/parted.c:515
+msgid "Destination partition number?"
+msgstr "Nummer på målpartitionen?"
+
+#: parted/parted.c:615
+msgid "New disk label type?"
+msgstr "Type på ny disketikette?"
+
+#: parted/parted.c:656
+msgid "File system?"
+msgstr "Filsystem?"
+
+#: parted/parted.c:707 parted/parted.c:878
+msgid "Partition type?"
+msgstr "Type på partitionen"
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+msgid "Partition name?"
+msgstr "Navn på partitionen?"
+
+#: parted/parted.c:722 parted/parted.c:895
+msgid "File system type?"
+msgstr "Type på filsystemet?"
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr "Start?"
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr "Slut?"
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+
+#: parted/parted.c:890
+#, fuzzy
+msgid "An extended partition cannot hold a file system. Did you want mkpart?"
+msgstr "Udvidede partitioner kan ikke have filsystemer. Ønskede du mkpart?"
+
+#: parted/parted.c:1050
+#, fuzzy
+msgid "Can't move an extended partition."
+msgstr "Kan ikke flytte udvidede partitioner."
+
+#: parted/parted.c:1079
+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"
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr "Lille: %d\n"
+
+#: parted/parted.c:1228
+#, fuzzy, c-format
+msgid "Flags: %s\n"
+msgstr "Flag: "
+
+#: parted/parted.c:1229
+#, c-format
+msgid "File System: %s\n"
+msgstr "Filsystem: %s\n"
+
+#: parted/parted.c:1230
+#, fuzzy
+msgid "Size: "
+msgstr "Størrelse: %10.3fMb (%d%%)\n"
+
+#: parted/parted.c:1235
+#, fuzzy
+msgid "Minimum size: "
+msgstr "Mindste størrelse: %10.3fMb (%d%%)\n"
+
+#: parted/parted.c:1238
+#, fuzzy
+msgid "Maximum size: "
+msgstr "Største størrelse: %10.3fMb (%d%%)\n"
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:1364
+#, fuzzy, c-format
+msgid "Disk %s: %s\n"
+msgstr "%s %s %s"
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:1383
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d. Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:1392
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "Navn på partitionen?"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr ""
+
+#: parted/parted.c:1406 parted/parted.c:1409
+#, fuzzy
+msgid "Start"
+msgstr "Start?"
+
+#: parted/parted.c:1407 parted/parted.c:1410
+#, fuzzy
+msgid "End"
+msgstr "Slut?"
+
+#: parted/parted.c:1410
+#, fuzzy
+msgid "Size"
+msgstr "ændr_størrelse"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr ""
+
+#: parted/parted.c:1416
+#, fuzzy
+msgid "File system"
+msgstr "Filsystem?"
+
+#: parted/parted.c:1419
+#, fuzzy
+msgid "Name"
+msgstr "name"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr "Flag"
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1624
+#, fuzzy, 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å %.3fMb -> %.3fMb. Ønsker du at tilføje "
+"den til partitionstabellen?"
+
+#: parted/parted.c:1663
+msgid "searching for file systems"
+msgstr "leder efter filsystemer"
+
+#: parted/parted.c:1877
+msgid "New device?"
+msgstr "Ny enhed?"
+
+#: parted/parted.c:1902
+#, fuzzy
+msgid "Flag to Invert?"
+msgstr "Flag der skal ændres?"
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr "Ny tilstand?"
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "tjek"
+
+#: parted/parted.c:2096
+#, fuzzy
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr "tjek LILLE lav en simpel test af filsystemet"
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "cp"
+
+#: parted/parted.c:2105
+#, fuzzy
+msgid ""
+"cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another "
+"partition"
+msgstr ""
+"cp [FRA ENHED] FRA-LILLE TIL-LILLE kopiér et filsystem til et andet"
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "hjælp"
+
+#: parted/parted.c:2114
+#, fuzzy
+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:2120
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:2120
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:2123
+#, fuzzy
+msgid ""
+"mklabel,mktable LABEL-TYPE create a new disklabel (partition "
+"table)"
+msgstr "mklabel PART-TYPE lav en ny partitionstabel"
+
+#: parted/parted.c:2129
+msgid "mkfs"
+msgstr "mkfs"
+
+#: parted/parted.c:2132
+#, fuzzy
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+"mkfs LILLE FS-TYPE lav et filsystem af typen TYPE på partition LILLE"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:2141
+#, fuzzy
+msgid "mkpart PART-TYPE [FS-TYPE] START END make a partition"
+msgstr "mkpart PARTITIONSTYPE [FS-TYPE] START SLUT lav en partition"
+
+#: parted/parted.c:2147
+#, 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 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:2152
+msgid "mkpartfs"
+msgstr "mkpartfs"
+
+#: parted/parted.c:2155
+#, fuzzy
+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"
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr "move"
+
+#: parted/parted.c:2164
+#, fuzzy
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "move LILLE START SLUT flyt partition LILLE"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:2172
+#, fuzzy
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr "name LILLE NAVN navngiv partition LILLE NAVN"
+
+#: parted/parted.c:2177
+msgid "print"
+msgstr "skriv"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"skriv [LILLE] vis partitionstabellen, eller en partition"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "afslut"
+
+#: parted/parted.c:2199
+#, fuzzy
+msgid "quit exit program"
+msgstr "afslut afslut programmet"
+
+#: parted/parted.c:2204
+msgid "rescue"
+msgstr "red"
+
+#: parted/parted.c:2207
+#, fuzzy
+msgid ""
+"rescue START END rescue a lost partition near START "
+"and END"
+msgstr ""
+"red START SLUT red tabte partitioner nær ved START og SLUT"
+
+#: parted/parted.c:2213
+msgid "resize"
+msgstr "ændr_størrelse"
+
+#: parted/parted.c:2216
+#, fuzzy
+msgid ""
+"resize NUMBER START END resize partition NUMBER and its "
+"file system"
+msgstr ""
+"red START SLUT red tabte partitioner nær ved START og SLUT"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:2227
+#, fuzzy
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "rm LILLE slet partition LILLE"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "vælg"
+
+#: parted/parted.c:2235
+#, fuzzy
+msgid "select DEVICE choose the device to edit"
+msgstr "vælg ENHED vælg enhed at redigere"
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr "sæt"
+
+#: parted/parted.c:2243
+#, fuzzy
+msgid ""
+"set NUMBER FLAG STATE change the FLAG on partition NUMBER"
+msgstr "sæt LILLE FLAG TILSTAND ændr et flag på partition LILLE"
+
+#: parted/parted.c:2249
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:2252
+msgid ""
+"toggle [NUMBER [FLAG]] toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:2258
+#, fuzzy
+msgid "unit"
+msgstr "afslut"
+
+#: parted/parted.c:2261
+#, fuzzy
+msgid "unit UNIT set the default unit to UNIT"
+msgstr "afslut afslut programmet"
+
+#: parted/parted.c:2266
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:2269
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:2273
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "Ingen enhed fundet"
+
+#: parted/parted.c:2412
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:2450
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Glem ikke at opdatere /etc/fstab, om nødvendigt.\n"
+
+#: parted/ui.c:160
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:163
+#, 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 ""
+"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:168
+#, 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:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:372
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:377
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:420
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:523
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:1024
+msgid "Expecting a partition number."
+msgstr "Forventer et partitionsnummer."
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "Partitionen findes ikke."
+
+#: parted/ui.c:1053
+msgid "Expecting a file system type."
+msgstr "Forventer en filsystemstype."
+
+#: parted/ui.c:1060
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Ukendt filsystemstype '%s'."
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr "Forventer en disketikettetype."
+
+#: parted/ui.c:1178
+msgid "Can't create any more partitions."
+msgstr "Kan ikke tilføje flere partitioner."
+
+#: parted/ui.c:1188
+msgid "Expecting a partition type."
+msgstr "Forventer et partitionstype."
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr "på"
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr "fra"
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "FLAG:"
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "KOMMANDOer:"
+
+#: parted/ui.c:1445
+#, c-format
+msgid "Using %s\n"
+msgstr "Bruger %s\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "hvor det er nødvendigt spørges brugeren om alternativer"
+
+#, 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 ""
+#~ "Uden argumenter udskriver 'skriv' hele partitionstabellen. Hvis et nummer "
+#~ "på en partition er angivet vil mere detaljeret information om denne "
+#~ "partition blive vist.\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 ""
+#~ "Sektorstørrelsen på %s er %d byte. Det er kendt at Parted ikke virker "
+#~ "ordentligt på drev med anden sektorstørrelse end %d byte"
+
+#~ msgid "Could not read geometry of %s - %s."
+#~ msgstr "Kunne ikke læse geometrien på %s - %s."
+
+#~ msgid "Device %s has dodgey geometry."
+#~ msgstr "Enheden %s har mærkelig geometri."
+
+#~ msgid "IDE"
+#~ msgstr "IDE"
+
+#~ msgid "SCSI"
+#~ msgstr "SCSI"
+
+#~ msgid "Device %s is neither a SCSI nor IDE drive."
+#~ msgstr "Enheden %s er hverken en SCSI- eller IDE-enhed."
+
+#~ msgid "Error reading %s (%s) to determine if partition is mounted."
+#~ msgstr ""
+#~ "En fejl opstod da %s (%s) skulle læses for at bestemme om partitionen er "
+#~ "monteret."
+
+#~ 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 ""
+#~ "Kan ikke afgøre om partitioner er monterede via /proc/mounts eller /etc/"
+#~ "mtab. Tjek at du ikke forsøger at ændre størrelse eller andre monterede "
+#~ "filsystemer (også monteret skrivebeskyttet)."
+
+#~ 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 ""
+#~ "Partitionstabellen på %s er ikke konsistent. Der kan være mange årsager "
+#~ "til dette. Den mest sandsynlige årsag er at Linux læste forkert "
+#~ "geometriinformation for %s i BIOS. GNU Parted mistænker den rigtige "
+#~ "geometri for at være %d/%d/%d (ikke %d/%d/%d). Du bør først kontrollere "
+#~ "din BIOS eftersom det kan være forkert. Du kan informere Linux gennem at "
+#~ "tilføje parameteren %s=%d,%d,%d på kommandolinjen. Mere information "
+#~ "findes i manualerne for LILO eller GRUB. Hvis du tror at Parteds "
+#~ "foreslåede geometri er rigtig kan du vælge Ignorér for at fortsætte (og "
+#~ "rette Linux senere). Ellers, vælg Afbryd (og ret Linux og/eller BIOS nu)."
+
+#~ 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 ""
+#~ "Partitionstabellen på %s er ikke konsistent. Det kan være mange årsager "
+#~ "til dette. Ofte er årsagen at Linux har læst geometriinformationen i BIOS "
+#~ "fejlagtigt. Det synes dog ikke være problemet her. Du kan ignorere "
+#~ "fejlen, men der kan opstå problemer (som kan rettes) med visse "
+#~ "opstartsprogrammer, og problemer med FAT-filsystemer. Brug af LBA "
+#~ "anbefales."
+
+#~ 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 ikke lægge partitionen på hel cylindergrænse. Det betyder ofte at "
+#~ "et andet partitionsværktøj skrev en ugyldig partitionstabel, baseret på "
+#~ "fejlagtig geometriinformation fra din BIOS. Du kan ignorere fejlen, men "
+#~ "der kan opstå problemer (som kan rettes) med visse opstartsprogrammer."
+
+#~ msgid "Attempt to read sectors %ld-%ld outside of partition on %s"
+#~ msgstr "Forsøgte læse sektorerne %ld-%ld udenfor partitionen på %s"
+
+#~ msgid ""
+#~ "This ext2 filesystem has a rather strange layout! Parted can't resize "
+#~ "this (yet)."
+#~ msgstr ""
+#~ "Dette ext2-filsystem har en ganske mærkelig udlægning! Parted kan ikke "
+#~ "ændre størrelse på dette (endnu)."
+
+#~ msgid "File system has an invalid signature for a FAT file systems."
+#~ msgstr "Filsystemet har en ugyldig signatur for filsystemer af typen FAT."
+
+#~ msgid "START and END are in megabytes\n"
+#~ msgstr "START og SLUT angives i megabyte\n"
+
+#~ msgid "Partition %s is being used."
+#~ msgstr "Partition %s er i brug."
+
+#~ msgid ""
+#~ "You requested to create a partition at %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Du bad om at oprette en partition på %.3f-%.3fMb. Det nærmeste Parted kan "
+#~ "klare er %.3f-%.3fMb."
+
+#~ msgid ""
+#~ "You requested to move the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Du bad om at flytte partitionen til %.3f-%.3fMb. Det nærmeste Parted kan "
+#~ "klare er %.3f-%.3fMb."
+
+#~ msgid "Disk geometry for %s: 0.000-%.3f megabytes\n"
+#~ msgstr "Diskgeometri på %s: 0.000-%.3f megabyte\n"
+
+#~ msgid "Disk label type: %s\n"
+#~ msgstr "Type af filsystem: %s\n"
+
+#~ msgid "Minor Start End "
+#~ msgstr "Lille Start Slut "
+
+#~ msgid "Type "
+#~ msgstr "Type "
+
+#~ msgid "Filesystem "
+#~ msgstr "Filsystem "
+
+#~ msgid "Name "
+#~ msgstr "Navn "
+
+#~ msgid ""
+#~ "You requested to resize the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Du bad om at ændre størrelse på partitionen til %.3f-%.3fMb. Det nærmeste "
+#~ "Parted kan klare er %.3f-%.3fMb."
+
+#~ msgid "resize MINOR START END resize filesystem on partition MINOR"
+#~ msgstr ""
+#~ "ændr_størrelse LILLE START SLUT ændr størrelse på filsystemet på "
+#~ "partition LILLE"
+
+#~ 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 fundet en fejl i GNU Parted. Send en fejlrapport til bug-"
+#~ "parted@gnu.org indholdende versionsnummer (%s) og følgende meddelelse:\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-partitioner, som ikke bruger LBA. Hvis din BIOS "
+#~ "understøtter LBA, så bør du skifte til LBA ved at sætte LBA-flaget på "
+#~ "alle FAT-partitioner. Ellers forsikr dig at styresystemet og BIOS-en har "
+#~ "den samme geometri før du laver om på størrelsen af nogen FAT-partitioner."
+
+#~ msgid ""
+#~ "The operating system thinks the geometry on %s is %d/%d/%d. Therefore, "
+#~ "cylinder 1024 ends at %.3fM.%s"
+#~ msgstr ""
+#~ "Operativsystemet tror at geometrien på %s er %d/%d/%d. Derfor slutter "
+#~ "cylinder 1024 på %.3fM.%s"
+
+#~ msgid "The operating system thinks the geometry on %s is %d/%d/%d.%s"
+#~ msgstr "Operativsystemet tror at geometrien på %s er %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 ""
+#~ "Filallokeringstabellerne er ikke store nok for at beskrive alle klynger! "
+#~ "Hver tabel er %d sektorer. Der findes %d klynger, hvilket indebærer at "
+#~ "hver tabel burde være %d sektorer. Dette er RIGTIGT mærkeligt. Skriv et "
+#~ "brev til os: 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 ""
+#~ "Denne swappartition er ikke kompatibel med Linux version 2.1.117 og "
+#~ "tidligere. Brug en mindre partition (maksimal størrelse 128 MB) hvis du "
+#~ "bruger ældre versioner af Linux."
+
+#~ msgid "The new partition overlaps with another partition."
+#~ msgstr "Den nye partition overlapper med en anden."
+
+#~ msgid ""
+#~ "Can't resize an extended partition so as to exclude a logical partition."
+#~ msgstr ""
+#~ "Kan ikke ændre størrelse på en udvidet partition for at ekskludere en "
+#~ "logisk partition."
+
+#~ msgid "Can't grow a partition onto used space."
+#~ msgstr "Kan ikke lade en partition vokse ind i brugt plads."
+
+#~ msgid "unknown"
+#~ msgstr "ukendt"
+
+# ??
+#~ msgid "Unknown SCSI"
+#~ msgstr "Ukendt SCSI"
+
+#~ msgid "GUID Partition Table Header Signature is wrong: "
+#~ msgstr "Signatur for GUID partitionstabelhovede er forkert: "
+
+#~ msgid " should be "
+#~ msgstr " skulle være "
+
+#~ msgid "GPT Header CRC check failed, %x should be %x."
+#~ msgstr "Kontrol af GPT-hoved mislykkedes, %x skulle være %x."
+
+#~ msgid "GPT Partition Entry Array CRC check failed, %x should be %x."
+#~ msgstr ""
+#~ "CRC-kontrol af GPT-partitionsindgangstabel mislykkedes, %x skulle være %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 ""
+#~ "Denne disk indeholder en gyldig primær og alternativ GUID-"
+#~ "PartitionsTabel, men den beskyttende MBR er ugyldig. Dette betyder "
+#~ "normalt at disken har GPT-partitioner på den, men så er et gammeldags "
+#~ "partitionsredigeringsværktøj blevet brugt til at ændre partitionstabellen "
+#~ "gemt i MBR.\n"
+#~ "Hvilke data er gyldige, GPT eller MBR?\n"
+#~ "Ja vil formode at GPT-informationen er korrekt, og vil genskrive den "
+#~ "beskyttende MBR.\n"
+#~ "Nej vil formode at MBR er korrekt, og slette GPT-informationen.\n"
+#~ "Ignorér vil formode at MBR er korrekt, men ikke ændre disken."
+
+#~ 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 ""
+#~ "Denne disk indeholder en gyldig alternativ GUID-PartitionsTabel, men den "
+#~ "primære GPT og beskyttende MBR er ugyldige. Dette betyder normalt at "
+#~ "disken har GPT-partitioner på den, men så er et gammeldags "
+#~ "partitionsredigeringsværktøj blevet brugt til at ændre partitionstabellen "
+#~ "gemt i MBR.\n"
+#~ "Hvilke data er gyldige, GPT eller MBR?\n"
+#~ "Ja vil formode at GPT-informationen er korrekt, og vil genskrive den "
+#~ "beskyttende MBR og den primære GPT.\n"
+#~ "Nej vil formode at MBR er korrekt, og slette GPT-informationen.\n"
+#~ "Ignorér vil formode at MBR er korrekt, men ikke ændre disken."
+
+#~ 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 ""
+#~ "Denne disk indeholder en gyldig primær GUID-PartitionsTabel, men den "
+#~ "alternative GPT og beskyttende MBR er ugyldige. Dette betyder normalt at "
+#~ "disken har GPT-partitioner på den, men så er et gammeldags "
+#~ "partitionsredigeringsværktøj blevet brugt til at ændre partitionstabellen "
+#~ "gemt i MBR.\n"
+#~ "Hvilke data er gyldige, GPT eller MBR?\n"
+#~ "Ja vil formode at GPT-informationen er korrekt, og vil genskrive den "
+#~ "beskyttende MBR og den alternative GPT.\n"
+#~ "Nej vil formode at MBR er korrekt, og slette GPT-informationen.\n"
+#~ "Ignorér vil formode at MBR er korrekt, men ikke ændre disken.\n"
+
+#~ msgid "Can't set non-Linux partitions as a root device."
+#~ msgstr "Kan ikke sætte andre partitioner end Linux' egne som rodenhed."
+
+#~ msgid "Can't set non-Linux partitions as a swap device."
+#~ msgstr "Kan ikke sætte en ikke-Linux partition som swapenhed."
+
+#~ msgid "No get_resize_constraint for %s!"
+#~ msgstr "get_resize_constraint mangler for %s!"
+
+#~ msgid "The %s file system code doesn't support %s disk labels."
+#~ msgstr ""
+#~ "Koden for filsystemet %s understøtter ikke filallokeringstabeller for %s."
+
+#~ msgid "Creating new %s disklabels is not implemented yet."
+#~ msgstr ""
+#~ "Understøttelse for at oprette nye partitionstabeller af typen %s er ikke "
+#~ "implementeret endnu."
+
+#~ msgid "The code to write the partition table hasn't been written for %s yet"
+#~ msgstr ""
+#~ "Understøttelse for at skrive partitionstabel for %s er ikke implementeret "
+#~ "endnu."
+
+#~ msgid "Insane! %d clusters!"
+#~ msgstr "Mærkeligt! %d klynger!"
+
+#~ 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 ""
+#~ "Filsystem bliver for stort for FAT16, så FAT32 vil blive brugt. Det er "
+#~ "ikke kompatibelt med MS-DOS, tidlige versioner af MS-Windows 95 eller "
+#~ "Windows NT. Hvis du bruger disse operativsystemer, vælg annullér og opret "
+#~ "en mindre partition. Hvis du kun anvender Linux, BSD, MS Windows 98 og/"
+#~ "eller MS Windows 95 B, vælg OK."
+
+#~ msgid "Weird: fat_calc_sizes() failed for FAT32!"
+#~ msgstr "Mærkeligt: fat_calc_sizes() mislykkedes for 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 ""
+#~ "Vil du bruge FAT32 som filsystem? Det er meget mere effektivt med "
+#~ "diskpladsen, men det er ikke kompatibelt med tidlige versioner af Windows "
+#~ "95 eller Windows NT. Vælg kun JA hvis du kun anvender Linux, BSD, MS "
+#~ "Windows 98 og/eller 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 ""
+#~ "Filsystemet har ikke en størrelse som Windows kan lide. Antal klynger er %"
+#~ "d (%d forventet); størrelsen på FAT-erne er %d sektorer (%d forventet)."
+
+#~ msgid ""
+#~ "Partition size (%ld sectors) and filesystem size (%ld sectors) do not "
+#~ "match."
+#~ msgstr ""
+#~ "Partitionens størrelse (%ld sektorer) og filsystemets størrelse (%ld "
+#~ "sektorer) stemmer ikke overens."
+
+#~ msgid "Linux-swap partitions can not be hidden on msdos disk labels."
+#~ msgstr ""
+#~ "Linux swappartitioner kan ikke skjules på et filsystem af typen msdos."
+
+#~ msgid "Linux-swap partitions can not be bootable on pc98 disk labels."
+#~ msgstr "Linux swappartitioner er ikke opstartelige på pc98."
+
+#~ msgid "HFS partitions can't be hidden on msdos disk labels."
+#~ msgstr ""
+#~ "Partitioner af type HFS kan ikke skjules på filsystemer af typen msdos."
+
+#~ msgid "JFS partitions can't be hidden on msdos disk labels."
+#~ msgstr ""
+#~ "Partitioner af type JFS kan ikke skjules på filsystemer af typen msdos."
+
+#~ msgid "Reiserfs partitions can't be hidden on msdos disk labels."
+#~ msgstr ""
+#~ "Partitioner af type Reiserfs kan ikke skjules på filsystemer af typen "
+#~ "msdos."
+
+#~ msgid "Reiserfs partitions must be bootable on pc98 disk labels."
+#~ msgstr "Reiserfs-partitioner skal være opstartelige på pc98."
+
+#~ msgid "XFS partitions can't be hidden on msdos disk labels."
+#~ msgstr ""
+#~ "Partitioner af type XFS kan ikke skjules på filsystemer af typen 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 ""
+#~ "Operativsystemet tror at %s geometri er %d/%d/%d. Du bør kontrollere at "
+#~ "dette stemmer overens med informationen i BIOS inden du anvender "
+#~ "programmet."
diff --git a/parted-1.8.7/po/de.gmo b/parted-1.8.7/po/de.gmo
new file mode 100644
index 0000000..c3d6963
--- /dev/null
+++ b/parted-1.8.7/po/de.gmo
Binary files differ
diff --git a/parted-1.8.7/po/de.po b/parted-1.8.7/po/de.po
new file mode 100644
index 0000000..e3fe541
--- /dev/null
+++ b/parted-1.8.7/po/de.po
@@ -0,0 +1,3371 @@
+# German message for GNU parted.
+# Copyright (C) 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
+# Martin von Löwis <martin@v.loewis.de>, 1999, 2000, 2001, 2002.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU parted 1.6.4-pre2\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2007-05-09 17:02-0400\n"
+"PO-Revision-Date: 2002-12-06 08:55+0100\n"
+"Last-Translator: Martin von Löwis <martin@v.loewis.de>\n"
+"Language-Team: German <de@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: lib/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Unbekannter Dateisystemtyp »%s«."
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Fehler beim Öffnen von %s: %s."
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, 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 zum Lesen geöffnet."
+
+#: libparted/arch/beos.c:411 libparted/arch/linux.c:1431
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s, während %s zum Lesen positioniert wurde."
+
+#: libparted/arch/beos.c:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s, während von %s gelesen wurde."
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, 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:496 libparted/arch/linux.c:1570
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s, während %s zum Schreiben positioniert wurde."
+
+#: libparted/arch/beos.c:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s, während auf %s geschrieben wurde."
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "Zu viele falsche Seiten."
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr "%s kann nicht geöffnet werden."
+
+#: libparted/arch/gnu.c:114
+msgid "Unable to probe store."
+msgstr "Der Speicher konnte nicht untersucht werden."
+
+#: libparted/arch/gnu.c:352
+#, 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 ""
+"Ihre Partitionstabelle konnte nicht neu gelesen werden; Sie müssen also neu "
+"booten, bevor Sie geänderte Partitionen einhängen. Sie müssen auch Ihren "
+"Bootlader vor dem Booten reinstallieren (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 reinstallieren. Lesen "
+"Sie Abschnitt 4 der Parted-Nutzerdokumentation für Details."
+
+# XXX Englischer Text ist Unsinn.
+#: libparted/arch/gnu.c:369
+#, 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 ""
+"Die Partitionstabelle auf %s (%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:380 parted/parted.c:2443
+msgid ""
+"You should reinstall your boot loader before rebooting. Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Sie sollten Ihren Bootlader neu installieren vor dem Neubooten. Lesen Sie "
+"Abschnitt 4 der Parted-Nutzerdokumentation für mehr Information."
+
+#: libparted/arch/gnu.c:772
+#, 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:408
+#, 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:523
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:539
+#, c-format
+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 ""
+
+#: libparted/arch/linux.c:579
+#, fuzzy, 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:668
+#, 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:677
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:698
+#, 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:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Fehler in der Initialisierung von SCSI-Gerät %s - %s."
+
+#: libparted/arch/linux.c:928
+#, fuzzy, c-format
+msgid ""
+"The device %s has zero length, and can't 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:1032
+#, 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 ""
+"Geometrie von Datei/Gerät konnte nicht ermittelt werden. Sie sollten Parted "
+"nicht verwenden, wenn sie nicht WIRKLICH wissen was Sie tun!"
+
+#: libparted/arch/linux.c:1110
+msgid "DAC960 RAID controller"
+msgstr "DAC960 RAID controller"
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr "ATARAID Controller"
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr "I20 controller"
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr ""
+
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "Unbekannt"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "ped_device_new() Nichtunterstützter Gerätetyp."
+
+#: libparted/arch/linux.c:2083
+#, 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 ""
+"Fehler beim Informieren des Kernels über Änderungen der Partition %s - %s. "
+"Das bedeutet, dass Linux Ihre Änderungen an %s nicht bis zum Neustart sehen "
+"wird - Sie sollten die Partition nicht einhängen oder irgend sonst benutzen, "
+"bis Sie den Rechner neu gestartet haben."
+
+#: libparted/arch/linux.c:2262
+#, 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 ""
+"Der Kernel konnte die Partitionstabelle von %s nicht neu einlesen (%s). Das "
+"bedeutet, daß Linux bis zum Neustart nichts über Ihrer Modifikationen weiß. "
+"Sie sollten den Rechner neu starten, bevor Sie %s in irgend einer Art "
+"verwenden."
+
+#: libparted/arch/linux.c:2368
+#, fuzzy, c-format
+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, daß Linux bis zum Neustart nichts über Ihrer Modifikationen weiß. "
+"Sie sollten den Rechner neu starten, bevor Sie %s in irgend einer Art "
+"verwenden."
+
+#: libparted/cs/geom.c:162
+msgid "Can't have the end before the start!"
+msgstr "Das Ende kommt nicht vor dem Start!"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "Partitionen ausserhalb der Platte sind nicht möglich!"
+
+#: libparted/cs/geom.c:366
+#, fuzzy, 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:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr "Test auf schlecte Blöcke"
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "%s kann nicht geöffnet werden - unerkanntes Disklabel."
+
+#: libparted/disk.c:471
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s. Perhaps it was compiled "
+"read-only."
+msgstr ""
+"Dieser libparted fehlt die Schreibuntertützung für %s. Vielleicht wurde sie "
+"nur zum Lesen übersetzt."
+
+#: libparted/disk.c:598
+#, fuzzy, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "Die Partition %d hat %.3fMb, aber das Dateisystem hat %.3fMb."
+
+#: libparted/disk.c:1075
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "%s-Disk-Labels unterstützen keine erweiterten Partitionen."
+
+#: libparted/disk.c:1634
+#, 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:1647
+#, fuzzy
+msgid "Too many primary partitions."
+msgstr "Zu viele primäre Partitionen."
+
+#: libparted/disk.c:1656
+#, 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:1680
+#, fuzzy, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Auf %s kann es höchstens eine erweiterte Partition geben."
+
+#: libparted/disk.c:1690
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr ""
+"Eine logische Partition kann nicht außerhalb der erweiterten Partition "
+"existieren."
+
+#: libparted/disk.c:1715
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr ""
+"Außerhalb der erweiterten Partition auf %s können keine logischen\n"
+"Partition existieren."
+
+#: libparted/disk.c:1725 libparted/disk.c:1779 libparted/disk.c:1945
+#, fuzzy
+msgid "Can't have overlapping partitions."
+msgstr "Überlappende Partitionen können nicht existieren."
+
+#: libparted/disk.c:1733
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Primäre Partition können nicht in erweiterten Partition existieren."
+
+#: libparted/disk.c:2140
+msgid "metadata"
+msgstr "Metadaten"
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "frei"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "erweitert"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "logisch"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "primär"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "boot"
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr "root"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "versteckt"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2190
+#, fuzzy, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Unbekanntes Partitionsflag %d."
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "Information"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "Warnung"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "Fehler"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "Fataler Fehler"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "Bug"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr "Keine Implementierung"
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr "Fix"
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "Ja"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "Nein"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "Wiederholen"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "Ignorieren"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "Abbrechen"
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org containing at least the version (%s) and the following "
+"message: "
+msgstr ""
+"Ein Bug in GNU parted wurde entdeckt. Bitte senden Sie einen Bugreport an "
+"bug-parted@gnu.org unter Angabe der Version (%s) und der folgenden Meldung:"
+
+#: libparted/filesys.c:384
+msgid "Could not detect file system."
+msgstr "Dateisystem wurde nicht erkannt."
+
+# XXX: volume?
+#: libparted/filesys.c:395
+#, fuzzy
+msgid "The file system is bigger than its volume!"
+msgstr "Das Dateisystem ist größer als seine Partition!"
+
+#: libparted/filesys.c:403
+#, c-format
+msgid "Support for opening %s file systems is not implemented yet."
+msgstr ""
+"Unterstützung für das Öffnen von Dateisystemen ist für %s noch nicht "
+"implementiert."
+
+#: libparted/filesys.c:445
+#, c-format
+msgid "Support for creating %s file systems is not implemented yet."
+msgstr "Erzeugung von Dateisystemen ist für %s noch nicht implementiert."
+
+#: libparted/filesys.c:505
+#, c-format
+msgid "Support for checking %s file systems is not implemented yet."
+msgstr "Überprüfung von Dateisystemen ist für %s noch nicht implementiert."
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr "Kopieren \"roher\" Blöcke"
+
+#: libparted/filesys.c:582
+msgid "growing file system"
+msgstr "Dateisystem wird vergrößert."
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr "Überlappende Partitionen können nicht kopiert werden."
+
+#: libparted/filesys.c:644
+#, fuzzy, c-format
+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 noch nicht für %"
+"s implementiert; Größenänderungen sind unterstützt. Deshalb kann das "
+"Dateisystem kopiert werden, wenn die neue Partition mindestens so gross ist "
+"we die alte. Also sollten Sie entweder die Partition, die Sie kopieren "
+"wollen, verkleinern, oder auf eine größere Partition kopieren."
+
+#: libparted/filesys.c:658
+#, c-format
+msgid "Support for copying %s file systems is not implemented yet."
+msgstr "Kopieren von Dateisystemen ist für %s noch nicht implementiert."
+
+#: libparted/filesys.c:696
+#, c-format
+msgid "Support for resizing %s file systems is not implemented yet."
+msgstr "Größenänderung von Dateisystemen ist für %s noch nicht implementiert."
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+# XXX: volume?
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, fuzzy
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr "Das Dateisystem ist größer als seine Partition!"
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "check"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, fuzzy
+msgid ""
+"The reiserfs file system passed a basic check. For a more comprehensive "
+"check, run reiserfsck --check."
+msgstr ""
+"Das ext2-Dateisystem hat den Basischeck bestanden. Um einen kompletteren "
+"Test auszuführen, benutzen Sie bitte e2fsck."
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, fuzzy
+msgid "Sorry, can't move the start of reiserfs partitions yet."
+msgstr ""
+"Leider kann der Anfang von ext2-Partitionen noch nicht verschoben werden."
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+msgid "shrinking"
+msgstr "verkleinernd"
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "Warnung"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, fuzzy, c-format
+msgid "Device is too small for %lu blocks."
+msgstr "Dateisystem zu klein für ext2."
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "Erzeugung von Dateisystemen ist für %s noch nicht implementiert."
+
+#: libparted/labels/aix.c:148
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "Erzeugung von Dateisystemen ist für %s noch nicht implementiert."
+
+#: libparted/labels/aix.c:161
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr "Erzeugung von Dateisystemen ist für %s noch nicht implementiert."
+
+#: libparted/labels/aix.c:171
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr "Erzeugung von Dateisystemen ist für %s noch nicht implementiert."
+
+#: libparted/labels/aix.c:189
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr "Erzeugung von Dateisystemen ist für %s noch nicht implementiert."
+
+#: libparted/labels/aix.c:199
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr "Erzeugung von Dateisystemen ist für %s noch nicht implementiert."
+
+#: libparted/labels/bsd.c:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+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:526
+#, fuzzy
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Kann keine BSD-Disklabel-Zeile allozieren."
+
+#: libparted/labels/dasd.c:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "Die Größe von %s kann nicht festgestellt werden (%s)."
+
+#: libparted/labels/dasd.c:781
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Kann keine BSD-Disklabel-Zeile allozieren."
+
+#: libparted/labels/dos.c:827
+#, fuzzy, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Ungültige Partitionstabelle auf %s - falsche Signature %x."
+
+#: libparted/labels/dos.c:855
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Ungültige Partitionstabelle - Rekursive Partition auf %s."
+
+#: libparted/labels/dos.c:1318
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr ""
+
+#: libparted/labels/dos.c:1958
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+#: libparted/labels/dvh.c:190
+#, fuzzy, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr ""
+"%s hat keine erweiterte Partition (volume header partition). Wenn Sie "
+"Ignorieren wählen, werden alle Boot-Volumen gelöscht."
+
+#: libparted/labels/dvh.c:313
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+"Die Prüfsumme ist falsch, was auf eine Korruption der Partitionstabelle "
+"hinweist."
+
+#: libparted/labels/dvh.c:616
+msgid "Only primary partitions can be root partitions."
+msgstr "Nur primäre Partitionen können Wurzelpartitionen werden."
+
+#: libparted/labels/dvh.c:630
+msgid "Only primary partitions can be swap partitions."
+msgstr "Nur primäre Partitionen können Swap-Partitionen werden."
+
+#: libparted/labels/dvh.c:644
+msgid "Only logical partitions can be a boot file."
+msgstr "Nur logische Partitionen können Boot-Dateien sein."
+
+#: libparted/labels/dvh.c:721
+msgid "Only logical partitions (boot files) have a name."
+msgstr "Nur logiche Partitionen (Boot-Dateien) haben einen Namen."
+
+#: libparted/labels/dvh.c:812
+msgid "Too many primary partitions"
+msgstr "Zu viele primäre Partitionen."
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "%s, während auf %s geschrieben wurde."
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, fuzzy, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr "%s %s %s"
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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 enthält GPT-Signaturen, die anzeigen, dass es eine GPT-Tabelle hat. Es "
+"ist jedoch keine gültige vorgetäuschte MSDOS-Partitionstabelle vorhanden, "
+"die eigentlich erforderlich ist. 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 die MSDOS-"
+"Partititonstabelle. Ist dieses eine GPT-Partitionstabelle?"
+
+#: libparted/labels/gpt.c:648
+#, fuzzy, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+msgstr ""
+"Das Format der GPT-Partitionstabelle ist neuer als das von Parted "
+"verstandene. Bitte melden Sie das an bug-parted@gnu.org!"
+
+#: libparted/labels/gpt.c:698
+#, 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 ""
+
+# XXX: Backup?
+#: libparted/labels/gpt.c:827
+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 Backup-GPT-Tabelle ist nicht am Ende der Platte, wie sie eigentlich sein "
+"sollte. Das kann bedeuten, dass ein anderes Betriebssystem glaubt, die "
+"Platte sei kleiner. Soll das korrigiert werden, durch Verschieben des "
+"Backups zum Ende (und löschen des alten Backups)?"
+
+#: libparted/labels/gpt.c:862
+#, fuzzy
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"Die primäre GPT-Tabelle ist korrupt, aber das Backup scheint in Ordnung zu "
+"sein, also wird dieses verwendet."
+
+# Versucht parted das selbst, oder ist das eine Aufforderung?
+#: libparted/labels/gpt.c:870
+#, 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 ""
+"Sowohl die primäre als auch die Backup-GPT-Tabelle sind korrupt. Versuchen "
+"Sie, eine neue Tabelle zu erzeugen, und die Partititionen mit Hilfe von "
+"Parted's Rettungsmöglichkeiten zu restaurieren."
+
+#: libparted/labels/mac.c:181
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Ungültige Signature %x für Mac-Disklabel."
+
+# XXX: Wie nennt Apple maps?
+#: libparted/labels/mac.c:226
+msgid "Partition map has no partition map entry!"
+msgstr "Partitionskarte (-map) hat keinen Partitionskarteneintrag!"
+
+#: libparted/labels/mac.c:273
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s ist zu klein für ein Mac-Disklabel!"
+
+#: libparted/labels/mac.c:532
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Partition %d hat eine ungültige Signatur %x."
+
+#: libparted/labels/mac.c:550
+#, 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:580
+#, fuzzy
+msgid "The data region doesn't start at the start of the partition."
+msgstr "Die Datenregion beginnt nicht mit dem Start einer Partition."
+
+#: libparted/labels/mac.c:597
+#, fuzzy
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "Die Bootregion beginnt nicht mit dem Start einer Partition."
+
+#: libparted/labels/mac.c:611
+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:622
+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:675
+#, 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:688
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"Die Treiberbeschreibung sagt, dass die physische Blockgröße %d Bytes ist; "
+"Linux sagt aber es sind %d Bytes."
+
+#: libparted/labels/mac.c:736
+msgid "No valid partition map found."
+msgstr "Keine gültige Partitionskarte gefunden."
+
+#: libparted/labels/mac.c:795
+#, fuzzy, 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 es "
+"sind %d Bytes, Eintrag %d sagt aber es sind %d!"
+
+#: libparted/labels/mac.c:822
+#, fuzzy
+msgid "Weird! There are 2 partitions map entries!"
+msgstr "Seltsam - 2 Partitionskarteneinträge!"
+
+#: libparted/labels/mac.c:1347
+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:1443
+#, fuzzy
+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:354
+#, fuzzy, c-format
+msgid "Invalid partition table on %s."
+msgstr "Ungültige Partitionstabelle auf %s."
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, fuzzy, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries. This is still "
+"unsupported."
+msgstr ""
+"Partition %d ist nicht auf Zylindergrenzen ausgerichtet. Das muss noch "
+"unterstützt werden."
+
+#: libparted/labels/pc98.c:791
+msgid "Can't add another partition."
+msgstr "Kann keine weitere Partition hinzufügen."
+
+#: libparted/labels/rdb.c:162
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:497
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:600
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:697
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:740
+#, fuzzy, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Es ist nicht feststellbar, ob die Partition eingehangen (mounted) ist."
+
+#: libparted/labels/rdb.c:1069
+#, fuzzy
+msgid "Unable to allocate a partition number."
+msgstr "Partitionsnummer erwartet."
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr "Zerstörtes Sun-Disklabel entdeckt."
+
+#: libparted/labels/sun.c:266
+#, 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 ""
+"Die CHS-Geometrie der Platte (%d,%d,%d) stimmt nicht mit der Geometrie des "
+"Disklabels (%d,%d,%d) überein."
+
+#: libparted/labels/sun.c:288
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "Das Disklabel beschreibt eine Platte größer als %s."
+
+#: libparted/labels/sun.c:442
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:737
+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) mag sie "
+"auch."
+
+#: libparted/labels/sun.c:752
+msgid "Sun disk label is full."
+msgstr "Das Sun-Disklabel ist voll."
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr "Hauptspeicher erschöpft."
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr ""
+
+#: libparted/unit.c:527
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "Es ist nicht feststellbar, ob die Partition eingehangen (mounted) ist."
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:72
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s, während auf %s geschrieben wurde."
+
+#: libparted/fs/amiga/amiga.c:278
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:289
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:318
+#, fuzzy, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "Es ist nicht feststellbar, ob die Partition eingehangen (mounted) ist."
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr "Inkonsistente Gruppendeskriptoren!"
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+#, fuzzy
+msgid "File system full!"
+msgstr "Dateisystem voll!"
+
+#: libparted/fs/ext2/ext2.c:686
+#, fuzzy
+msgid "Invalid superblock. Are you sure this is an ext2 file system?"
+msgstr ""
+"Ungültiger Superblock. Sind Sie sicher, daß das ein ext2-Dateisystem ist?"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+#, fuzzy
+msgid "File system has errors! You should run e2fsck."
+msgstr "Das Dateisystem hat Fehler! Sie sollten e2fsck aufrufen."
+
+#: libparted/fs/ext2/ext2.c:711
+#, fuzzy
+msgid ""
+"File system was not cleanly unmounted! You should run e2fsck. Modifying an "
+"unclean file system could cause severe corruption."
+msgstr ""
+"Dateisystem wurde nicht sauber ausgehangen (unmounted)! Sie sollten e2fsck "
+"ausführen."
+
+#: libparted/fs/ext2/ext2.c:731
+#, fuzzy
+msgid "File system has an incompatible feature enabled."
+msgstr "Das Dateisystem hat eine inkompatibles Funktion aktiviert."
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr "Fehler beim Allozieren des Puffercaches."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+#, fuzzy
+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 erst e2fsck aus!"
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr "Nicht genügend freie I-Nodes!"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+#, fuzzy
+msgid "File system is too full to remove a group!"
+msgstr "Dateisystem ist zu belegt, um eine Gruppe zu löschen!"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+#, fuzzy
+msgid "File system has too many allocated inodes to remove a group!"
+msgstr ""
+"Dateisystem hat zu viele allozierte I-Nodes, um eine Gruppe zu löschen!"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr "Hinzufügen von Gruppen"
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, fuzzy, c-format
+msgid "Your file system is too full to resize it to %i blocks. Sorry."
+msgstr ""
+"Ihr Dateisystem ist zu belegt, um es auf %i Blöcke zu reduzieren. Schade."
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, fuzzy, c-format
+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 zu "
+"reduzieren."
+
+#: libparted/fs/ext2/ext2_resize.c:666
+#, fuzzy
+msgid "File system was not cleanly unmounted! You should run e2fsck."
+msgstr ""
+"Dateisystem wurde nicht sauber ausgehangen (unmounted)! Sie sollten e2fsck "
+"ausführen."
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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 ""
+
+#: libparted/fs/ext2/ext2_resize.c:691
+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 ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+#, fuzzy
+msgid "Cross-linked blocks found! Better go run e2fsck first!"
+msgstr ""
+"Überkreuz-verbundene I-Nodes gefunden! Führen Sie lieber erst e2fsck aus!"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, fuzzy, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "Block %i hat keine Referenz? Komisch."
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, fuzzy, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "Block %i dürfte nicht markiert sein!"
+
+#: libparted/fs/ext2/interface.c:186
+#, fuzzy
+msgid ""
+"The ext2 file system passed a basic check. For a more comprehensive check, "
+"use the e2fsck program."
+msgstr ""
+"Das ext2-Dateisystem hat den Basischeck bestanden. Um einen kompletteren "
+"Test auszuführen, benutzen Sie bitte e2fsck."
+
+#: libparted/fs/ext2/interface.c:203
+msgid "Sorry, can't move the start of ext2 partitions yet!"
+msgstr ""
+"Leider kann der Anfang von ext2-Partitionen noch nicht verschoben werden."
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr "Der Puffercache konnte nicht geleert werden."
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr "Schreiben der Meta-Daten pro Gruppe"
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr "Dateisystem zu klein für ext2."
+
+#: libparted/fs/fat/calc.c:135
+#, fuzzy, c-format
+msgid ""
+"You need %s of free disk space to shrink this partition to this size. "
+"Currently, only %s is free."
+msgstr ""
+"Sie benötigen %dM freien Plattenplatz, um diese Partition auf diese Größe zu "
+"verkleinern (Sie haben gegenwärtig nur %dM frei)."
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+msgid ""
+"Cluster start delta = %d, which is not a multiple of the cluster size %d."
+msgstr "Clusterstart delta = %d, was kein Vielfaches der Clustergröße %d ist."
+
+#: libparted/fs/fat/fat.c:308
+#, fuzzy, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr "Partition ist zu groß/klein für ein %s-Dateisystem."
+
+#: libparted/fs/fat/fat.c:474
+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, "
+"wählen Sie Abbruch, rufen scandisk auf dem Dateisystem auf, und versuchen es "
+"nochmal."
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr "Es gibt keine mögliche Konfiguration für diesen FAT-Typ."
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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)."
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:874
+#, fuzzy
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes. FAT "
+"support will be disabled."
+msgstr ""
+"GNU parted ist fehlübersetzt: Der FAT-Bootsektor sollte 512 Bytes sein. FAT-"
+"Unterstützung wird deaktiviert."
+
+#: libparted/fs/fat/resize.c:159
+#, 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 ""
+"Es gibt nicht genug Platz für das Wurzelverzeichnis, für all die Dateien. "
+"Entweder abbrechen, oder ignorieren, und Dateien verlieren."
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr "Fehler beim Schreiben des Wurzelverzeichnisses."
+
+#: libparted/fs/fat/resize.c:489
+#, fuzzy
+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."
+
+#: libparted/fs/fat/resize.c:492
+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 reinstallieren. Wenn "
+"Sie das tun wollen, sollten Sie das Parted-Handbuch studieren (oder das "
+"Ihrer Distribution)."
+
+#: libparted/fs/fat/resize.c:500
+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 "
+"auslösen."
+
+#: libparted/fs/fat/resize.c:504
+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 Parted-Handbuch 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."
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr "Wollen Sie FAT32 verwenden?"
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: libparted/fs/fat/resize.c:551
+msgid ""
+"The file system can only be resized to this size by converting to FAT16."
+msgstr ""
+"Das Dateisystem kann nur größenverändert werden durch Konvertierung zu FAT16."
+
+#: libparted/fs/fat/resize.c:567
+msgid ""
+"The file system can only be resized to this size by converting to FAT32."
+msgstr ""
+"Das Dateisystem kann nur größenverändert werden durch Konvertierung zu FAT32."
+
+#: libparted/fs/fat/resize.c:580
+#, fuzzy
+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 verkleinern. Wir "
+"arbeiten dran!"
+
+#: 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 "Dateisystem hat eine ungültige Signature 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 "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 "Dateisystem hat eine ungültige Clustergröße für ein FAT-Dateisystem."
+
+#: libparted/fs/fat/bootsector.c:78
+#, fuzzy
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr ""
+"Dateisystem hat eine ungültige Zahl von reservierten Sektoren für ein FAT-"
+"Dateisystem."
+
+#: libparted/fs/fat/bootsector.c:85
+#, fuzzy
+msgid "File system has an invalid number of FATs."
+msgstr "Dateisystem hat eine ungültige Zahl von FATs."
+
+#: libparted/fs/fat/bootsector.c:139
+#, 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 für Sektorgrößen verschieden von 512 Bytes nicht richtig."
+
+#: libparted/fs/fat/bootsector.c:164
+#, 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:213
+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 komisch."
+
+#: libparted/fs/fat/bootsector.c:219
+msgid "FAT boot sector says there are no FAT tables. This is weird. "
+msgstr "Der FAT-Bootsektor sagt es gibt keine FAT-Tabellen. Das ist komisch."
+
+#: libparted/fs/fat/bootsector.c:225
+msgid "FAT boot sector says clusters are 0 sectors. This is weird. "
+msgstr ""
+"Der FAT-Bootsektor sagt Cluster seien 0 Sektoren groß. Das ist komisch."
+
+#: libparted/fs/fat/bootsector.c:235
+#, fuzzy
+msgid "File system is FAT12, which is unsupported."
+msgstr "Dateisystem ist FAT12, was gegenwärtig nicht unterstützt wird."
+
+#: libparted/fs/fat/bootsector.c:411
+#, 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 Bugreport. Wenn es sein muß, können Sie das "
+"auch ignorieren."
+
+#: libparted/fs/fat/count.c:152
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+msgid ""
+"Bad FAT: unterminated chain for %s. You should run dosfsck or scandisk."
+msgstr ""
+"Falsche FAT: unbeendete Kette für %s. Sie sollten dosfsck oder scandisk "
+"ausführen."
+
+#: libparted/fs/fat/count.c:174
+#, fuzzy, c-format
+msgid ""
+"Bad FAT: cluster %d outside file system in chain for %s. You should run "
+"dosfsck or scandisk."
+msgstr ""
+"FAT-Fehler: Cluster %d ist außerhalb des Dateisystems in Kette für %s. Sie "
+"sollten dosfsck oder scandisk ausführen."
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+msgid ""
+"Bad FAT: cluster %d is cross-linked for %s. You should run dosfsck or "
+"scandisk."
+msgstr ""
+"FAT-Fehler: Cluster %d ist überkreuz verbunden für %s. Sie sollten dosfsck "
+"oder scandisk ausführen."
+
+#: libparted/fs/fat/count.c:203
+#, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr "%s ist %dk, hat aber %d Cluster (%dk)."
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+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 wohl scandisk aufrufen."
+
+#: libparted/fs/fat/table.c:269
+#, fuzzy, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "fat_table_set: Cluster %ld ist außerhalb des Dateisystems."
+
+#: libparted/fs/fat/table.c:301
+#, fuzzy, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "fat_table_get: Cluster %ld ist außerhalb des Dateisystems."
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "fat_table_alloc_cluster: Keine freien Cluster."
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Unbekannte Linux-Swap-Signatur '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:318
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Unbekannte Linux-Swap-Signatur '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:358
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Unbekannte Linux-Swap-Signatur '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr "Zu viele falsche Seiten."
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr ""
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr ""
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+msgid "Could not update the extent cache for HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+msgid "Trying to write HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+msgid "Could not update the extent cache for HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+msgid "Trying to write HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:320
+#, fuzzy
+msgid "writing HFS Master Directory Block"
+msgstr "Fehler beim Schreiben des Wurzelverzeichnisses."
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:720
+#, fuzzy
+msgid "Error while writing the allocation file."
+msgstr "Fehler beim Schreiben des Wurzelverzeichnisses."
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:904
+msgid ""
+"It seems there is an error in the HFS wrapper: the bad blocks file doesn't "
+"contain the embedded HFS+ volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:998
+#, fuzzy
+msgid "shrinking HFS wrapper"
+msgstr "verkleinernd"
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+msgid ""
+"This is not a real %s check. This is going to extract special low level "
+"files for debugging purposes."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+msgid ""
+"Invalid size of a transaction block while replaying the journal (%i bytes)."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:260
+msgid ""
+"Journal stored outside of the volume are not supported. Try to desactivate "
+"the journal and run Parted again."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:271
+#, fuzzy
+msgid "Journal offset or size is not multiple of the sector size."
+msgstr "Clusterstart delta = %d, was kein Vielfaches der Clustergröße %d ist."
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:302
+msgid "Journal size mismatch between journal info block and journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:314
+#, fuzzy
+msgid "Some header fields are not multiple of the sector size."
+msgstr "Clusterstart delta = %d, was kein Vielfaches der Clustergröße %d ist."
+
+#: libparted/fs/hfs/journal.c:323
+msgid ""
+"The sector size stored in the journal is not 512 bytes. Parted only "
+"supports 512 bytes length sectors."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:353
+msgid ""
+"The journal is not empty. Parted must replay the transactions before "
+"opening the file system. This will modify the file system."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:381
+msgid ""
+"The volume header or the master directory block has changed while replaying "
+"the journal. You should restart Parted."
+msgstr ""
+
+#: libparted/fs/hfs/probe.c:51
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to %"
+"d bytes."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+msgid ""
+"A reference to an extent comes from a place it should not. You should check "
+"the file system!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:475
+msgid "This HFS volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+msgid ""
+"The extents overflow file should not contain its own extents! You should "
+"check the file system."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+#, fuzzy
+msgid "Could not cache the file system in memory."
+msgstr "Dateisystem wurde nicht erkannt."
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:619
+msgid "This HFS+ volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr "zeigt die Hilfe"
+
+#: parted/parted.c:95
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr "bittet nie um Nutzerintervention"
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr "zeigt die Version"
+
+#: parted/parted.c:111
+#, 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 ist die von Linux verwendete Partitionsnummer. Auf MS-DOS-Disklabel "
+"haben die primären Partitionen die Nummern 1-4, die logischen Laufwerke "
+"beginnen bei 5.\n"
+
+#: parted/parted.c:114
+msgid "LABEL-TYPE is one of: "
+msgstr "LABEL-TYP ist eines aus: "
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr "FLAG ist eines aus: "
+
+#: parted/parted.c:116
+#, fuzzy
+msgid "UNIT is one of: "
+msgstr "FLAG ist eines aus: "
+
+#: parted/parted.c:117
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "PART-TYP ist eines aus: primary, logical, extended\n"
+
+#: parted/parted.c:119
+msgid "FS-TYPE is one of: "
+msgstr "FS-TYP ist eines aus: "
+
+#: parted/parted.c:120
+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:123
+msgid "STATE is one of: on, off\n"
+msgstr "STATE ist eines aus: on, off\n"
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "GERÄT ist normalerweise /dev/hda oder /dev/sda\n"
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr "NAME ist ein beliebiges Wort Ihrer Wahl.\n"
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr ""
+
+#: parted/parted.c:130
+#, 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"
+"Übersetzungen sind Copyright (C) 1999-2002 Free Software Foundation, Inc.\n"
+"Dieses Programm ist freie Software unter den Regeln der GNU General\n"
+"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:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(Restzeit %.2d:%.2d)"
+
+#: parted/parted.c:195
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:211
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Partition(en) auf %s sind benutzt."
+
+#: parted/parted.c:223
+msgid ""
+"The existing file system will be destroyed and all data on the partition "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+msgid "Partition number?"
+msgstr "Partitionsnummer?"
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr "Quellgerät?"
+
+#: parted/parted.c:504
+msgid "Source partition number?"
+msgstr "Quellpartitionsnummer?"
+
+#: parted/parted.c:509
+#, fuzzy
+msgid "Can't copy an extended partition."
+msgstr "Erweiterte Partitionen können nicht kopiert werden."
+
+#: parted/parted.c:515
+msgid "Destination partition number?"
+msgstr "Zielpartitionsnummer?"
+
+#: parted/parted.c:615
+msgid "New disk label type?"
+msgstr "Neuer Disk-Label-Typ?"
+
+#: parted/parted.c:656
+msgid "File system?"
+msgstr "Dateisystem?"
+
+#: parted/parted.c:707 parted/parted.c:878
+msgid "Partition type?"
+msgstr "Partitionstyp?"
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+msgid "Partition name?"
+msgstr "Partitionsname?"
+
+#: parted/parted.c:722 parted/parted.c:895
+msgid "File system type?"
+msgstr "Dateisystemtyp?"
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr "Start?"
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr "Ende?"
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+
+#: parted/parted.c:890
+#, fuzzy
+msgid "An extended partition cannot hold a file system. Did you want mkpart?"
+msgstr ""
+"Erweiterte Partitionen können kein Dateisystem haben. Wollten Sie mkpart?"
+
+#: parted/parted.c:1050
+#, fuzzy
+msgid "Can't move an extended partition."
+msgstr "Erweiterte Partition können nicht verschoben werden."
+
+#: parted/parted.c:1079
+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 Größenänderung (resize) versuchen?"
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr "Minor: %d\n"
+
+#: parted/parted.c:1228
+#, fuzzy, c-format
+msgid "Flags: %s\n"
+msgstr "Flags: "
+
+#: parted/parted.c:1229
+#, c-format
+msgid "File System: %s\n"
+msgstr "Dateisystem: %s\n"
+
+#: parted/parted.c:1230
+#, fuzzy
+msgid "Size: "
+msgstr "Größe: %10.3fMb (%d%%)\n"
+
+#: parted/parted.c:1235
+#, fuzzy
+msgid "Minimum size: "
+msgstr "Minimale Größe: %10.3fMb (%d%%)\n"
+
+#: parted/parted.c:1238
+#, fuzzy
+msgid "Maximum size: "
+msgstr "Maximale Größe: %10.3fMb (%d%%)\n"
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:1364
+#, fuzzy, c-format
+msgid "Disk %s: %s\n"
+msgstr "%s %s %s"
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:1383
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d. Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:1392
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "Partitionsname?"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr ""
+
+#: parted/parted.c:1406 parted/parted.c:1409
+#, fuzzy
+msgid "Start"
+msgstr "Start?"
+
+#: parted/parted.c:1407 parted/parted.c:1410
+#, fuzzy
+msgid "End"
+msgstr "Ende?"
+
+#: parted/parted.c:1410
+#, fuzzy
+msgid "Size"
+msgstr "resize"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr ""
+
+#: parted/parted.c:1416
+#, fuzzy
+msgid "File system"
+msgstr "Dateisystem?"
+
+#: parted/parted.c:1419
+#, fuzzy
+msgid "Name"
+msgstr "name"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr "Flags"
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1624
+#, fuzzy, 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 %.3fMb -> %.3fMb gefunden. Wollen Sie die zur "
+"Partitionstabelle hinzufügen?"
+
+#: parted/parted.c:1663
+msgid "searching for file systems"
+msgstr "es wird nach Dateisystemen gesucht"
+
+#: parted/parted.c:1877
+msgid "New device?"
+msgstr "Neues Gerät?"
+
+#: parted/parted.c:1902
+#, fuzzy
+msgid "Flag to Invert?"
+msgstr "Zu änderndes Flag?"
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr "Neuer Zustand?"
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "check"
+
+#: parted/parted.c:2096
+#, fuzzy
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr ""
+"check MINOR Einen einfachen Test auf den Dateisystemen "
+"ausführen."
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "cp"
+
+#: parted/parted.c:2105
+#, fuzzy
+msgid ""
+"cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another "
+"partition"
+msgstr ""
+"cp [VON-GERÄT] VON-MINOR AUF-MINOR Dateisystem auf andere Partition "
+"kopieren."
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:2114
+#, fuzzy
+msgid ""
+"help [COMMAND] print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [KOMMANDO] Generelle Hilfe, oder Hilfe für KOMMANDO ausgeben."
+
+#: parted/parted.c:2120
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:2120
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:2123
+#, fuzzy
+msgid ""
+"mklabel,mktable LABEL-TYPE create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel LABEL-TYP Neues Disklabel (Partitionstabelle) erzeugen."
+
+#: parted/parted.c:2129
+msgid "mkfs"
+msgstr "mkfs"
+
+#: parted/parted.c:2132
+#, fuzzy
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+"mkfs MINOR FS-TYP Dateisystem FS-TYP auf Partition MINOR erzeugen."
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:2141
+#, fuzzy
+msgid "mkpart PART-TYPE [FS-TYPE] START END make a partition"
+msgstr "mkpart PART-TYP [FS-TYP] START END Partition erzeugen."
+
+# XXX to set a partition ID???
+#: parted/parted.c:2147
+#, 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 erzeugt eine Partition ohne ein neues Dateisystem auf der Partition\n"
+"zu erzeugen. FS-TYP kann angegeben werden, um eine geeignete Partitions-ID "
+"zu setzen.\n"
+
+#: parted/parted.c:2152
+msgid "mkpartfs"
+msgstr "mkpartfs"
+
+#: parted/parted.c:2155
+#, fuzzy
+msgid ""
+"mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system"
+msgstr ""
+"mkpartfs PART-TYP FS-TYP START END Partition mit Dateisystem erzeugen."
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr "move"
+
+#: parted/parted.c:2164
+#, fuzzy
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "move MINOR START ENDE Partition MINOR verschieben."
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:2172
+#, fuzzy
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr "name MINOR NAME Partition MINOR mit NAME benennen."
+
+#: parted/parted.c:2177
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr "print [MINOR] Partitionstabelle oder Partition anzeigen."
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:2199
+#, fuzzy
+msgid "quit exit program"
+msgstr "quit Programm beenden."
+
+#: parted/parted.c:2204
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:2207
+#, fuzzy
+msgid ""
+"rescue START END rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue START ENDE Eine verlorene Partitionen zwischen START und ENDE "
+"retten."
+
+#: parted/parted.c:2213
+msgid "resize"
+msgstr "resize"
+
+#: parted/parted.c:2216
+#, fuzzy
+msgid ""
+"resize NUMBER START END resize partition NUMBER and its "
+"file system"
+msgstr ""
+"rescue START ENDE Eine verlorene Partitionen zwischen START und ENDE "
+"retten."
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:2227
+#, fuzzy
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "rm MINOR Partion MINOR löschen."
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:2235
+#, fuzzy
+msgid "select DEVICE choose the device to edit"
+msgstr "select GERÄT Wählen Sie ein Gerät zur Bearbeitung."
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:2243
+#, fuzzy
+msgid ""
+"set NUMBER FLAG STATE change the FLAG on partition NUMBER"
+msgstr "set MINOR FLAG STATE FLAG auf Partition MINOR ändern."
+
+#: parted/parted.c:2249
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:2252
+msgid ""
+"toggle [NUMBER [FLAG]] toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:2258
+#, fuzzy
+msgid "unit"
+msgstr "quit"
+
+#: parted/parted.c:2261
+#, fuzzy
+msgid "unit UNIT set the default unit to UNIT"
+msgstr "quit Programm beenden."
+
+#: parted/parted.c:2266
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:2269
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:2273
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "Kein Gerät gefunden."
+
+#: parted/parted.c:2412
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:2450
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Vergessen Sie nicht, gegebenenfalls /etc/fstab zu ändern.\n"
+
+#: parted/ui.c:160
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:163
+#, 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 ""
+"Aufruf: parted [OPTIONen] [GERÄT [KOMMANDO [PARAMETER...]...]\n"
+"KOMMANDOs mit PARAMETERn für GERÄT ausführen. Wenn keine KOMMANDOs "
+"angegeben \n"
+"sind, interaktiv arbeiten.\n"
+
+#: parted/ui.c:168
+#, 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:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:372
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:377
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:420
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:523
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:1024
+msgid "Expecting a partition number."
+msgstr "Partitionsnummer erwartet."
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "Partition existiert nicht."
+
+#: parted/ui.c:1053
+msgid "Expecting a file system type."
+msgstr "Dateisystemtyp erwartet."
+
+#: parted/ui.c:1060
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Unbekannter Dateisystemtyp »%s«."
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr "Ein Disklabeltyp wird erwartet."
+
+#: parted/ui.c:1178
+msgid "Can't create any more partitions."
+msgstr "Kann keine weitere Partition erzeugen."
+
+#: parted/ui.c:1188
+msgid "Expecting a partition type."
+msgstr "Partitionstyp erwartet."
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr "on"
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr "off"
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "OPTIONen:"
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "KOMMANDOs:"
+
+#: parted/ui.c:1445
+#, c-format
+msgid "Using %s\n"
+msgstr "Verwende %s\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "wenn nötig, bittet um Nutzerintervention"
+
+#, 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 ""
+#~ "Ohne Argumente zeigt print die gesamte Partitionstabelle an. Wenn eine\n"
+#~ "Partitionsnummer angegeben wurde, werden weitere Details über diese\n"
+#~ "Partition angezeigt.\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 ""
+#~ "Die Sektorgröße von %s ist %d Bytes. Parted kann auf Laufwerken mit "
+#~ "Sektorgrößen verschieden von %d Bytes nicht arbeiten."
+
+#~ msgid "Could not read geometry of %s - %s."
+#~ msgstr "Die Geometrie von %s konnte nicht gelesen werden - %s."
+
+#~ msgid "Device %s has dodgey geometry."
+#~ msgstr "Gerät %s hat eine unglaubwürdige Geometrie."
+
+#~ msgid "IDE"
+#~ msgstr "IDE"
+
+#~ msgid "SCSI"
+#~ msgstr "SCSI"
+
+#~ msgid "Device %s is neither a SCSI nor IDE drive."
+#~ msgstr "Das Gerät %s ist weder ein SCSI- noch ein IDE-Laufwerk."
+
+#~ msgid "Error reading %s (%s) to determine if partition is mounted."
+#~ msgstr ""
+#~ "Fehler beim Lesen von %s (%s) um festzustellen ob die Partition "
+#~ "eingehangen (mounted) ist."
+
+#~ 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 ""
+#~ "Es konnte nicht bestimmt werden, ob Partition über /proc/mounts oder /etc/"
+#~ "mtab eingehangen (mounted) werden. Überprüfen Sie, dass Sie nicht "
+#~ "versuchen, ein eingehangenes Dateisystem zu vergrößern oder zu verändern "
+#~ "(selbst wenn es nur zum Lesen eingehangen wurde)."
+
+#~ 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 ""
+#~ "Die Partitionstabelle auf %s ist inkonsistent. Es gibt viele mögliche "
+#~ "Gründe dafür. Der wahrscheinlichste Grund ist, dass Linux die BIOS-"
+#~ "Geometrie für %s falsch erkannt hat. GNU Parted vermutet, dass die wahre "
+#~ "Geometrie %d/%d/%d ist (nicht %d/%d/%d). Sie sollten zunächst Ihr BIOS "
+#~ "überprüfen, da das falsch sein könnte. Sie können Linux durch Angabe des "
+#~ "Parameters %s=%d,%d,%d informieren. Lesen Sie LILO- oder GRUB-"
+#~ "Dokumentation für weitere Informationen. Wenn Sie glauben, Parteds "
+#~ "vorgeschlagene Geometrie ist richtig, wählen Sie Ignore um fortzusetzen "
+#~ "(und Linux später zu korrigieren). Ansonsten wählen Sie Cancel (und "
+#~ "korrigieren Linux und/oder das BIOS jetzt)."
+
+#~ 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 ""
+#~ "Die Partitionstabelle auf %s ist inkonsistent. Es gibt viele Gründe, "
+#~ "warum das der Fall sein könnte. Häufig ist der Grund, dass Linux die BIOS-"
+#~ "Geometry falsch erkannt hat. Das scheint jedoch hier nicht der Fall zu "
+#~ "sein. Man kann das getrost ignorieren; das kann aber (lösbare) Probleme "
+#~ "mit einigen Bootladern bewirken, und kann auf FAT-Dateisystemproblem zu "
+#~ "Problemen führen. Die Verwendung von LBA wird empfohlen."
+
+#~ 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 ""
+#~ "Die Partitionstabelle kann nicht korrekt ausgerichtet (aligned) werden. "
+#~ "Das bedeutet vermutlich, dass ein anderes Partitionswerkzeug eine "
+#~ "inkorrekte Partitionstabelle erzeugt hat, weil es nicht die richtige BIOS-"
+#~ "Geometrie kannte. Das kann man getrost ignorieren, Ignorieren kann aber "
+#~ "(lösbare) Probleme mit anderen Bootladern hervorrufen."
+
+#~ msgid "Attempt to read sectors %ld-%ld outside of partition on %s"
+#~ msgstr ""
+#~ "Versuch, die Sektoren %ld-%ld außerhalb der Partition auf %s zu lesen."
+
+#~ msgid ""
+#~ "This ext2 filesystem has a rather strange layout! Parted can't resize "
+#~ "this (yet)."
+#~ msgstr ""
+#~ "Dieses ext2-Dateisystem hat ein eher seltsames Layout! Parted kann hier "
+#~ "(noch) nichts tun."
+
+#~ msgid "File system has an invalid signature for a FAT file systems."
+#~ msgstr "Dateisystem hat eine ungültige Signature für ein FAT-Dateisystem."
+
+#~ msgid "START and END are in megabytes\n"
+#~ msgstr "START und ENDE sind in Megabytes.\n"
+
+#~ msgid "Partition %s is being used."
+#~ msgstr "Partition %s ist in Verwendung."
+
+#~ msgid ""
+#~ "You requested to create a partition at %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Sie haben die Erzeugung einer Partition bei %.3f-%.3fMb verlangt. Das "
+#~ "Beste, was Parted bieten kann, ist %.3f-%.3fMb."
+
+#~ msgid ""
+#~ "You requested to move the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Sie haben das Verschieben der Partition zu %.3f-%.3fMb verlangt. Das "
+#~ "Beste, was Parted bieten kann, ist %.3f-%.3fMb."
+
+#~ msgid "Disk geometry for %s: 0.000-%.3f megabytes\n"
+#~ msgstr "Plattengeometrie für %s: 0.000-%.3f Megabytes\n"
+
+#~ msgid "Disk label type: %s\n"
+#~ msgstr "Disk-Label-Typ: %s\n"
+
+#~ msgid "Minor Start End "
+#~ msgstr "Minor Start End "
+
+#~ msgid "Type "
+#~ msgstr "Type "
+
+#~ msgid "Filesystem "
+#~ msgstr "Dateisystem "
+
+#~ msgid "Name "
+#~ msgstr "Name "
+
+#~ msgid ""
+#~ "You requested to resize the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Sie haben das Verändern der Partition auf %.3f-%.3fMb verlangt. Das "
+#~ "Beste, was Parted bieten kann, ist %.3f-%.3fMb."
+
+#~ msgid "resize MINOR START END resize filesystem on partition MINOR"
+#~ msgstr ""
+#~ "resize MINOR START ENDE Dateisystemgröße auf Partition MINOR ändern."
+
+#~ 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 ""
+#~ "Sie haben ein Bug in GNU Parted gefunden. Bitte senden Sie einen "
+#~ "Bugreport an bug-parted@gnu.org unter Angabe der Version (%s) und der "
+#~ "folgenden Meldung:\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 ""
+#~ " Sie haben Windows FAT-Partition(en), die kein LBA verwenden. Wenn Ihr "
+#~ "BIOS LBA unterstützt, sollten Sie auf LBA umschalten, indem Sie das LBA-"
+#~ "Flag bei allen Partitionen setzen. Anderenfalls stellen Sie sicher, dass "
+#~ "das Betriebssystem und das BIOS die gleiche Geometrie verwenden, bevor "
+#~ "Sie die FAT-Partitionen verändern."
+
+#~ msgid ""
+#~ "The operating system thinks the geometry on %s is %d/%d/%d. Therefore, "
+#~ "cylinder 1024 ends at %.3fM.%s"
+#~ msgstr ""
+#~ "Das Betriebssystem glaubt, dass die Geometrie auf %s %d/%d/%d ist. "
+#~ "Deshalb endet Zylinder 1024 bei %.3fM.%s"
+
+#~ msgid "The operating system thinks the geometry on %s is %d/%d/%d.%s"
+#~ msgstr "Das Betriebssystem glaubt, die Geometrie auf %s sei %d/%d/%d.%s"
diff --git a/parted-1.8.7/po/en@boldquot.header b/parted-1.8.7/po/en@boldquot.header
new file mode 100644
index 0000000..fedb6a0
--- /dev/null
+++ b/parted-1.8.7/po/en@boldquot.header
@@ -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/parted-1.8.7/po/en@quot.header b/parted-1.8.7/po/en@quot.header
new file mode 100644
index 0000000..a9647fc
--- /dev/null
+++ b/parted-1.8.7/po/en@quot.header
@@ -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/parted-1.8.7/po/es.gmo b/parted-1.8.7/po/es.gmo
new file mode 100644
index 0000000..be38102
--- /dev/null
+++ b/parted-1.8.7/po/es.gmo
Binary files differ
diff --git a/parted-1.8.7/po/es.po b/parted-1.8.7/po/es.po
new file mode 100644
index 0000000..eddedb9
--- /dev/null
+++ b/parted-1.8.7/po/es.po
@@ -0,0 +1,3396 @@
+# 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: 2007-05-09 17:02-0400\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"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: lib/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Tipo de sistema de ficheros \"%s\" desconocido."
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+# o también "al abrir"
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Error al abrir %s: %s"
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, 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:411 libparted/arch/linux.c:1431
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s durante la preparación para lectura en %s"
+
+#: libparted/arch/beos.c:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s durante la lectura en %s"
+
+# para sólo lectura.
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, 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:496 libparted/arch/linux.c:1570
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s durante la preparación para escribir en %s"
+
+#: libparted/arch/beos.c:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s durante la escritura en %s"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "Demasiadas páginas incorrectas."
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr "No se puede abrir %s."
+
+# Unable to -> No se puede.
+#: libparted/arch/gnu.c:114
+msgid "Unable to probe store."
+msgstr "No se puede probar el guardar."
+
+# cargador "de" aranque (no del)
+#: libparted/arch/gnu.c:352
+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:369
+#, 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:380 parted/parted.c:2443
+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:772
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s intentando sincronizar %s al disco"
+
+#: libparted/arch/linux.c:408
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "No se puede hacer `stat' sobre el dispositivo %s - %s."
+
+#: libparted/arch/linux.c:523
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:539
+#, c-format
+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 ""
+
+#: libparted/arch/linux.c:579
+#, 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:668
+#, 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:677
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:698
+#, 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:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Error iniciando el dispositivo SCSI %s - %s"
+
+#: libparted/arch/linux.c:928
+#, c-format
+msgid ""
+"The device %s has zero length, and can't 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:1032
+#, 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:1110
+msgid "DAC960 RAID controller"
+msgstr "Controladora RAID DAC960"
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+# de Compaq
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr "Estructura Smart de Compaq"
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr "Controladora ATARAID"
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr "Controladora I20"
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr ""
+
+# ¿Qué, exactamente, es desconocido? ¿No será desconocida?
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "Desconocida"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "ped_device_new() Tipo de dispositivo no soportado"
+
+# informing the kernel -> al informar al núcleo
+# in any way -> de ninguna forma
+#: libparted/arch/linux.c:2083
+#, 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:2262
+#, 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/arch/linux.c:2368
+#, c-format
+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."
+
+#: libparted/cs/geom.c:162
+msgid "Can't have the end before the start!"
+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:366
+#, 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:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr "comprobando bloques erroneos"
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "No se puede abrir %s - etiqueta de disco desconocida."
+
+# para sólo lectura.
+#: libparted/disk.c:471
+#, 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:598
+#, 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:1075
+#, 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:1634
+#, 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:1647
+msgid "Too many primary partitions."
+msgstr "Demasiadas particiones primarias."
+
+#: libparted/disk.c:1656
+#, 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:1680
+#, 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:1690
+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:1715
+#, 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:1725 libparted/disk.c:1779 libparted/disk.c:1945
+msgid "Can't have overlapping partitions."
+msgstr "No se puede tener particiones superpuestas."
+
+#: libparted/disk.c:1733
+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:2140
+msgid "metadata"
+msgstr "metadata"
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "libre"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "extendida"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "lógica"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "primaria"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "arranque"
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr "raíz"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "oculta"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr "utilidad-hp"
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2190
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Modificador de particiones desconocido, %d."
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "Información"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "Aviso"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "Error"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "Fatal"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "Bicho"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr "Sin Implementación"
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr "Arreglar"
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "Sí"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "No"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "De acuerdo"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "Reintentar"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "Descartar"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "Cancelar"
+
+# bicho :-)
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org 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/filesys.c:384
+msgid "Could not detect file system."
+msgstr "No se puede detectar el sistema de ficheros."
+
+#: libparted/filesys.c:395
+msgid "The file system is bigger than its volume!"
+msgstr "¡El sistema de ficheros es más grande que su volumen!"
+
+#: libparted/filesys.c:403
+#, c-format
+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."
+
+#: libparted/filesys.c:445
+#, c-format
+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."
+
+#: libparted/filesys.c:505
+#, c-format
+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."
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr "copiando los bloque en bruto"
+
+#: libparted/filesys.c:582
+msgid "growing file system"
+msgstr "sistema de ficheros creciendo"
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr "No se puede copiar sobre una partición superpuesta."
+
+#: libparted/filesys.c:644
+#, c-format
+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."
+
+#: libparted/filesys.c:658
+#, c-format
+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."
+
+#: libparted/filesys.c:696
+#, c-format
+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."
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, 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!"
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "comprobar"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, 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."
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, 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!"
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+msgid "shrinking"
+msgstr "contrayendo"
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "Aviso"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, fuzzy, c-format
+msgid "Device is too small for %lu blocks."
+msgstr "Sistema de ficheros demasiado pequeño para ext2."
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, 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:148
+#, 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:161
+#, 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:171
+#, 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:189
+#, 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:199
+#, 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:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+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:526
+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:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "No se puede determinar el tamaño de %s (%s)."
+
+#: libparted/labels/dasd.c:781
+#, 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:827
+#, 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:855
+#, 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:1318
+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:1958
+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:190
+#, 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:313
+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:616
+msgid "Only primary partitions can be root partitions."
+msgstr "Sólo las particiones primarias pueden ser particiones raíz."
+
+#: libparted/labels/dvh.c:630
+msgid "Only primary partitions can be swap partitions."
+msgstr "Sólo las particiones primarias pueden ser particiones de intercambio."
+
+#: libparted/labels/dvh.c:644
+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:721
+msgid "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:812
+msgid "Too many primary partitions"
+msgstr "Demasiadas particiones primarias"
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "%s durante la escritura en %s"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, fuzzy, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr "%s %s %s"
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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:648
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+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:698
+#, 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:827
+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:862
+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:870
+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/mac.c:181
+#, 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:226
+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:273
+#, 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:532
+#, 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:550
+#, 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:580
+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:597
+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:611
+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:622
+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:675
+#, 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:688
+#, 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:736
+msgid "No valid partition map found."
+msgstr "Se encontró una tabla de particiones inválida."
+
+#: libparted/labels/mac.c:795
+#, 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:822
+msgid "Weird! There are 2 partitions map entries!"
+msgstr "¡Extraño! ¡Hay 2 entradas de tabla de particiones!"
+
+#: libparted/labels/mac.c:1347
+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:1443
+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:354
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Tabla de partición inválida en %s."
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, 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:791
+msgid "Can't add another partition."
+msgstr "No se puede añadir otra partición."
+
+#: libparted/labels/rdb.c:162
+#, 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:497
+#, 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:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s : Bucle detectado en el bloque %d."
+
+#: libparted/labels/rdb.c:600
+#, 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:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:697
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:740
+#, 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:1069
+msgid "Unable to allocate a partition number."
+msgstr "No se puede asignar un número de partición."
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr "Se ha detectado una etiqueta de disco Sun corrupta."
+
+#: libparted/labels/sun.c:266
+#, 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:288
+#, 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:442
+#, 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:737
+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:752
+msgid "Sun disk label is full."
+msgstr "La etiqueta de disco Sun está llena."
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr "No hay memoria."
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr ""
+
+#: libparted/unit.c:527
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, 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:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, 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:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, 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:72
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, 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:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s : Bucle detectado en el bloque %d."
+
+#: libparted/fs/amiga/amiga.c:278
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:289
+#, 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:318
+#, 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/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr "¡Descriptores de grupo inconsistentes!"
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+msgid "File system full!"
+msgstr "¡Sistema de ficheros lleno!"
+
+#: libparted/fs/ext2/ext2.c:686
+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?"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+msgid "File system has errors! You should run e2fsck."
+msgstr "¡El sistema de ficheros tiene errores! Debería ejecutar e2fsck."
+
+#: libparted/fs/ext2/ext2.c:711
+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."
+
+#: libparted/fs/ext2/ext2.c:731
+msgid "File system has an incompatible feature enabled."
+msgstr "El sistema de ficheros tiene activada una característica incompatible."
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr "Error asignando espacio en la caché del búfer."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+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!"
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr "¡No hay suficientes nodos-i libres!"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+msgid "File system is too full to remove a group!"
+msgstr "¡El sistema de ficheros está demasiado ocupado para borrar un grupo!"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+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!"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr "añadiendo grupos"
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, c-format
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, c-format
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:666
+msgid "File system was not cleanly unmounted! You should run e2fsck."
+msgstr ""
+"¡El sistema de ficheros no fue desmontado limpiamente! Debería ejecutar "
+"e2fsck."
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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'."
+
+#: libparted/fs/ext2/ext2_resize.c:691
+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 ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+msgid "Cross-linked blocks found! Better go run e2fsck first!"
+msgstr ""
+"¡Se encontraron bloques con referencia cruzada! ¡Mejor ejecutar primero "
+"e2fsck!"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "¿El bloque %i no tiene una referencia? Estraño."
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, fuzzy, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "¡El bloque %i no debería haber sido marcado!"
+
+#: libparted/fs/ext2/interface.c:186
+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."
+
+#: libparted/fs/ext2/interface.c:203
+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!"
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr "¡No se pudo vaciar la caché del búfer!"
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr "escribiendo metadatos por-grupo"
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr "Sistema de ficheros demasiado pequeño para ext2."
+
+#: libparted/fs/fat/calc.c:135
+#, c-format
+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."
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:308
+#, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr "Partición demasiado grande/pequeña para un sistema de ficheros %s."
+
+#: libparted/fs/fat/fat.c:474
+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."
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr "No hay configuraciones posibles para este tipo de FAT."
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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)."
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:874
+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/resize.c:159
+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."
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr "Error al escribir en el directorio root."
+
+#: libparted/fs/fat/resize.c:489
+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."
+
+#: libparted/fs/fat/resize.c:492
+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)."
+
+#: libparted/fs/fat/resize.c:500
+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."
+
+#: libparted/fs/fat/resize.c:504
+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."
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr "¿Le gustaría usar FAT32?"
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: libparted/fs/fat/resize.c:551
+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."
+
+#: libparted/fs/fat/resize.c:567
+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."
+
+#: libparted/fs/fat/resize.c:580
+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!"
+
+#: 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:139
+#, 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:164
+#, 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:213
+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:219
+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:225
+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:235
+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:411
+#, 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/fat/count.c:152
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:174
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:203
+#, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr "%s es %dk, pero tiene %d clusters (%dk)."
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:269
+#, fuzzy, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "fat_table_set: el cluster %ld está fuera del sistema de ficheros"
+
+#: libparted/fs/fat/table.c:301
+#, fuzzy, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "fat_table_get: el cluster %ld está fuera del sistema de ficheros"
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "fat_table_alloc_cluster: no quedan clusters libres"
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, 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:318
+#, 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:358
+#, 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/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr "Demasiadas páginas incorrectas."
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr "El sistema de ficheros contiene errores."
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr "No pueden leerse los bloques incorrectos."
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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!"
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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!"
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+msgid "Could not update the extent cache for HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+msgid "Trying to write HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+msgid "Could not update the extent cache for HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+msgid "Trying to write HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:320
+#, fuzzy
+msgid "writing HFS Master Directory Block"
+msgstr "Error al escribir en el directorio raíz."
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:720
+#, fuzzy
+msgid "Error while writing the allocation file."
+msgstr "Error al escribir en el directorio raíz."
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:904
+msgid ""
+"It seems there is an error in the HFS wrapper: the bad blocks file doesn't "
+"contain the embedded HFS+ volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:998
+#, fuzzy
+msgid "shrinking HFS wrapper"
+msgstr "contrayendo"
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+msgid ""
+"This is not a real %s check. This is going to extract special low level "
+"files for debugging purposes."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+msgid ""
+"Invalid size of a transaction block while replaying the journal (%i bytes)."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:260
+msgid ""
+"Journal stored outside of the volume are not supported. Try to desactivate "
+"the journal and run Parted again."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:271
+#, 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."
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:302
+msgid "Journal size mismatch between journal info block and journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:314
+#, 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."
+
+#: libparted/fs/hfs/journal.c:323
+msgid ""
+"The sector size stored in the journal is not 512 bytes. Parted only "
+"supports 512 bytes length sectors."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:353
+msgid ""
+"The journal is not empty. Parted must replay the transactions before "
+"opening the file system. This will modify the file system."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:381
+msgid ""
+"The volume header or the master directory block has changed while replaying "
+"the journal. You should restart Parted."
+msgstr ""
+
+#: libparted/fs/hfs/probe.c:51
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to %"
+"d bytes."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+msgid ""
+"A reference to an extent comes from a place it should not. You should check "
+"the file system!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:475
+msgid "This HFS volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+msgid ""
+"The extents overflow file should not contain its own extents! You should "
+"check the file system."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+#, fuzzy
+msgid "Could not cache the file system in memory."
+msgstr "No se puede detectar el sistema de ficheros."
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr "Ocurrió un error durante la relocalización de la extensión."
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:619
+msgid "This HFS+ volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr "mostrar este mensaje de ayuda"
+
+#: parted/parted.c:95
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr "no pedir nunca la intervención del usuario"
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr "mostrar la versión"
+
+#: parted/parted.c:111
+#, 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:114
+msgid "LABEL-TYPE is one of: "
+msgstr "TIPO_ETIQUETA es uno de: "
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr "FLAG es uno de: "
+
+#: parted/parted.c:116
+#, fuzzy
+msgid "UNIT is one of: "
+msgstr "FLAG es uno de: "
+
+#: parted/parted.c:117
+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:119
+msgid "FS-TYPE is one of: "
+msgstr "TIPO-SF es uno de: "
+
+#: parted/parted.c:120
+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:123
+msgid "STATE is one of: on, off\n"
+msgstr "ESTADO es uno de: on, off\n"
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "DISPOSITIVO es normalmente /dev/hda o /dev/sda\n"
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr "NOMBRE es cualquier palabra que quiera\n"
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr "La partición debe tener uno de los siguientes TIPOS de SF: "
+
+# 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:130
+#, 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:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(tiempo que queda %.2d:%.2d)"
+
+#: parted/parted.c:195
+#, 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:211
+#, 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:223
+msgid ""
+"The existing file system will be destroyed and all data on the partition "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+msgid "Partition number?"
+msgstr "¿Número de la partición?"
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr "¿Dispositivo de origen?"
+
+#: parted/parted.c:504
+msgid "Source partition number?"
+msgstr "¿Número de la partición de origen?"
+
+#: parted/parted.c:509
+#, fuzzy
+msgid "Can't copy an extended partition."
+msgstr "No es pueden copiar las particiones extendidas."
+
+#: parted/parted.c:515
+msgid "Destination partition number?"
+msgstr "¿Número de la partición de destino?"
+
+#: parted/parted.c:615
+msgid "New disk label type?"
+msgstr "¿Nuevo tipo de etiqueta de disco?"
+
+#: parted/parted.c:656
+msgid "File system?"
+msgstr "¿Sistema de ficheros?"
+
+#: parted/parted.c:707 parted/parted.c:878
+msgid "Partition type?"
+msgstr "¿Tipo de partición?"
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+msgid "Partition name?"
+msgstr "¿Nombre de la partición?"
+
+#: parted/parted.c:722 parted/parted.c:895
+msgid "File system type?"
+msgstr "¿Tipo de sistema de ficheros?"
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr "¿Inicio?"
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr "¿Fin?"
+
+#: parted/parted.c:769 parted/parted.c:938
+#, fuzzy, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+"Pidió mover la partición a %s - %s. Lo más cerca que Parted puede manejar es "
+"%s - %s."
+
+#: parted/parted.c:890
+#, 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?"
+
+#: parted/parted.c:1050
+msgid "Can't move an extended partition."
+msgstr "No se pueden mover una partición extendida."
+
+#: parted/parted.c:1079
+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?"
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr "Minor: %d\n"
+
+#: parted/parted.c:1228
+#, fuzzy, c-format
+msgid "Flags: %s\n"
+msgstr "Banderas: "
+
+#: parted/parted.c:1229
+#, c-format
+msgid "File System: %s\n"
+msgstr "Sistema de ficheros: %s\n"
+
+#: parted/parted.c:1230
+#, fuzzy
+msgid "Size: "
+msgstr "Tamaño: %10.3fMb (%d%%)\n"
+
+#: parted/parted.c:1235
+msgid "Minimum size: "
+msgstr "Tamaño mínimo: "
+
+#: parted/parted.c:1238
+msgid "Maximum size: "
+msgstr "Tamaño máximo: "
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:1364
+#, fuzzy, c-format
+msgid "Disk %s: %s\n"
+msgstr "%s %s %s"
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:1383
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d. Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:1392
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "¿Nombre de la partición?"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr "Numero"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Start"
+msgstr "Inicio"
+
+#: parted/parted.c:1407 parted/parted.c:1410
+msgid "End"
+msgstr "Fin"
+
+#: parted/parted.c:1410
+msgid "Size"
+msgstr "Tamaño"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr "Typo"
+
+#: parted/parted.c:1416
+msgid "File system"
+msgstr "Sistema de ficheros"
+
+#: parted/parted.c:1419
+msgid "Name"
+msgstr "Nombre"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr "Banderas"
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1624
+#, 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:1663
+msgid "searching for file systems"
+msgstr "buscando los sistemas de ficheros"
+
+#: parted/parted.c:1877
+msgid "New device?"
+msgstr "¿Nuevo dispositivo?"
+
+#: parted/parted.c:1902
+#, fuzzy
+msgid "Flag to Invert?"
+msgstr "¿Bandera a cambiar?"
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr "¿Nuevo estado?"
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr "¿Unidad?"
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "comprobar"
+
+#: parted/parted.c:2096
+#, fuzzy
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr ""
+"comprueba NUMERO hace una comprobación simple del sistema "
+"de ficheros"
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "cp"
+
+#: parted/parted.c:2105
+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"
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:2114
+#, 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:2120
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:2120
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:2123
+#, 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:2129
+msgid "mkfs"
+msgstr "mkfs"
+
+#: parted/parted.c:2132
+#, fuzzy
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+"mkfs NUMERO TIPO-SF crea un sistema de ficheros TIPO-SF en la "
+"partición NUMERO"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:2141
+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:2147
+#, 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:2152
+msgid "mkpartfs"
+msgstr "mkpartfs"
+
+#: parted/parted.c:2155
+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"
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr "move"
+
+#: parted/parted.c:2164
+#, fuzzy
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "move NUMERO INICIO FIN mueve la partición NUMERO"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:2172
+#, fuzzy
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr "name NUMERO NOMBRE nombra la partición NUMERO como NOMBRE"
+
+#: parted/parted.c:2177
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"print [NUMERO] muestra la tabla de las particiones, o una "
+"partición"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:2199
+#, fuzzy
+msgid "quit exit program"
+msgstr "quit sale del programa"
+
+#: parted/parted.c:2204
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:2207
+#, 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:2213
+msgid "resize"
+msgstr "resize"
+
+#: parted/parted.c:2216
+#, 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"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:2227
+#, fuzzy
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "rm NUMERO borra la partición NUMERO"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:2235
+#, fuzzy
+msgid "select DEVICE choose the device to edit"
+msgstr "select DISPOSITIVO elegir el dispositivo a editar"
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:2243
+#, 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:2249
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:2252
+#, fuzzy
+msgid ""
+"toggle [NUMBER [FLAG]] toggle the state of FLAG on "
+"partition NUMBER"
+msgstr "rm NUMERO borra la partición NUMERO"
+
+#: parted/parted.c:2258
+msgid "unit"
+msgstr "unit"
+
+#: parted/parted.c:2261
+#, fuzzy
+msgid "unit UNIT set the default unit to UNIT"
+msgstr ""
+"unit UNIDAD configura la unidad por defecto para UNIDAD"
+
+#: parted/parted.c:2266
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:2269
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:2273
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "No se encontró el dispositivo"
+
+#: parted/parted.c:2412
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:2450
+#, 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:160
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+# Uso: o Modo de empleo:
+#: parted/ui.c:163
+#, 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:168
+#, 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:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:372
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:377
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:420
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:523
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:1024
+msgid "Expecting a partition number."
+msgstr "Se esperaba un número de partición."
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "La partición no existe."
+
+#: parted/ui.c:1053
+msgid "Expecting a file system type."
+msgstr "Se esperaba un tipo de sistema de ficheros."
+
+#: parted/ui.c:1060
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Tipo de sistema de ficheros \"%s\" desconocido."
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr "Se esperaba un tipo de etiqueta de disco."
+
+# No se puede.
+#: parted/ui.c:1178
+msgid "Can't create any more partitions."
+msgstr "No se puede crear más particiones."
+
+#: parted/ui.c:1188
+msgid "Expecting a partition type."
+msgstr "Se esperaba un tipo de partición."
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr "on"
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr "off"
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "OPCIÓNes:"
+
+# Comando es una barbaridad. En es@li.org usamos "orden".
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "ORDENes:"
+
+#: parted/ui.c:1445
+#, c-format
+msgid "Using %s\n"
+msgstr "Usando %s\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "donde sea necesario, pedir la intervención del usuario"
+
+#, 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 ""
+#~ "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"
+
+# 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 ""
+#~ "You requested to create a partition at %s - %s. The closest Parted can "
+#~ "manage is %s - %s."
+#~ msgstr ""
+#~ "Pidió crear una partición en %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 ""
+#~ "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"
+
+# No se puede.
+#~ msgid "Could not read geometry of %s - %s."
+#~ msgstr "No se puede leer la geometría de %s - %s."
+
+# 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/parted-1.8.7/po/fr.gmo b/parted-1.8.7/po/fr.gmo
new file mode 100644
index 0000000..bc5aa6f
--- /dev/null
+++ b/parted-1.8.7/po/fr.gmo
Binary files differ
diff --git a/parted-1.8.7/po/fr.po b/parted-1.8.7/po/fr.po
new file mode 100644
index 0000000..82d190b
--- /dev/null
+++ b/parted-1.8.7/po/fr.po
@@ -0,0 +1,3842 @@
+# Messages français pour GNU Parted.
+# Copyright © 2001, 2004, 2005 Free Software Foundation, Inc.
+# Michel Robitaille <robitail@IRO.UMontreal.CA>, traducteur since/depuis 1996.
+# Laurent Marsac <laurent DOT marsac AT laposte DOT net> 2006
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 1.7.0rc1\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2007-05-09 17:02-0400\n"
+"PO-Revision-Date: 2006-07-15 10:52-0500\n"
+"Last-Translator: Michel Robitaille <robitail@IRO.UMontreal.CA>\n"
+"Language-Team: French <traduc@traduc.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: lib/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Type de système de fichiers inconnu \"%s\"."
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+#, fuzzy
+msgid "Invalid range end"
+msgstr "Nombre invalide."
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Erreur pendant l'ouverture de %s: %s"
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, 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:411 libparted/arch/linux.c:1431
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s lors d'un positionnement pour lecture sur %s"
+
+#: libparted/arch/beos.c:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s lors de la lecture sur %s"
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, 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:496 libparted/arch/linux.c:1570
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s lors d'un positionnement pour écriture sur %s"
+
+#: libparted/arch/beos.c:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s lors de l'écriture sur %s"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "Trop de pages erronées."
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr "Impossible d'ouvrir %s."
+
+#: libparted/arch/gnu.c:114
+msgid "Unable to probe store."
+msgstr "Impossible de sonder le stockage."
+
+#: libparted/arch/gnu.c:352
+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 choses ensemble ! 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:369
+#, 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 quoique ce soit avec %s."
+
+#: libparted/arch/gnu.c:380 parted/parted.c:2443
+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:772
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s essaie de synchroniser %s sur le disque"
+
+#: libparted/arch/linux.c:408
+#, 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:523
+#, fuzzy, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+"Impossible de téderminer la taille des secteurs de %s : %s.\n"
+"On utilise la taille des secteurs par defaut (%d)."
+
+#: libparted/arch/linux.c:539
+#, fuzzy, c-format
+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 %s est %d. Tous les composants de GNU "
+"Parted ne supportent pas cela pour l'instant.\n"
+
+#: libparted/arch/linux.c:579
+#, 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:668
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Ne peut obtenir l'identité du périphérique %s - %s"
+
+#: libparted/arch/linux.c:677
+msgid "Generic IDE"
+msgstr "IDE générique"
+
+#: libparted/arch/linux.c:698
+#, 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 de systèmes de fichiers spéciales, i.e. GPT et "
+"ext2/3.\n"
+"Merci de consulter le site web pour des informations à jour."
+
+#: libparted/arch/linux.c:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Erreur d'initialisation du périphérique SCSI %s - %s"
+
+#: libparted/arch/linux.c:928
+#, c-format
+msgid ""
+"The device %s has zero length, and can't possibly store a file system or "
+"partition table. Perhaps you selected the wrong device?"
+msgstr ""
+"Le périphérique %s a une taille nulle et ne peut donc 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:1032
+#, 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 ""
+"Impossible de déterminer la géométrie du fichier/périphérique. Vous ne "
+"devriez pas utiliser Parted sans VRAIMENT savoir ce que vous faites !"
+
+#: libparted/arch/linux.c:1110
+msgid "DAC960 RAID controller"
+msgstr "Contrôleur RAID DAC960"
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr "Contrôleur ATARAID"
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr "Contrôleur I2O"
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr "User-Mode Linux UBD"
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr ""
+
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "Inconnu"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "ped_device_new() Type de périphérique non supporté"
+
+#: libparted/arch/linux.c:2083
+#, 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 l'information 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:2262
+#, 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 ""
+"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 "
+"quoique ce soit avec %s."
+
+#: libparted/arch/linux.c:2368
+#, c-format
+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 "
+"quoique ce soit avec %s."
+
+#: libparted/cs/geom.c:162
+msgid "Can't have the end before the start!"
+msgstr "La fin ne peut pas être avant le début !"
+
+#: 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:366
+#, 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:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr "recherche de blocs défectueux"
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "Impossible d'ouvrir %s - étiquette de disque non reconnue."
+
+#: libparted/disk.c:471
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s. Perhaps it was compiled "
+"read-only."
+msgstr ""
+"Cette libparted n'a pas de support pour l'écriture pour %s. Peut-être a-t-il "
+"été compilé en lecture seule."
+
+#: libparted/disk.c:598
+#, 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:1075
+#, 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:1634
+#, 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:1647
+msgid "Too many primary partitions."
+msgstr "Trop de partitions primaires."
+
+#: libparted/disk.c:1656
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"Ne peut ajouter une partition logique sur %s parce qu'il n'y a pas de "
+"partition étendue."
+
+#: libparted/disk.c:1680
+#, 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:1690
+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:1715
+#, 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:1725 libparted/disk.c:1779 libparted/disk.c:1945
+msgid "Can't have overlapping partitions."
+msgstr "Ne peut avoir des partitions qui se chevauchent."
+
+#: libparted/disk.c:1733
+msgid "Can't have a primary partition inside an extended partition."
+msgstr ""
+"Ne peut avoir une partition primaire à l'intérieur d'une partition étendue."
+
+#: libparted/disk.c:2140
+msgid "metadata"
+msgstr "méta-données"
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "libre"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "étendue"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "logique"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "primaire"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "démarrage"
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr "racine"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "caché"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2190
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Fanion de partition inconnu %d."
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "Information"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "Avertissement"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "Erreur"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "Fatal"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "Bug"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr "Pas d'implantation"
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr "Fix"
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "Yes"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "No"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "Nouvel essai"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "Ignorer"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "Annuler"
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org 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 à bug-parted@gnu.org en précisant la version (%s) et le message "
+"suivant:"
+
+#: libparted/filesys.c:384
+msgid "Could not detect file system."
+msgstr "Ne peut détecter le système de fichiers."
+
+#: libparted/filesys.c:395
+msgid "The file system is bigger than its volume!"
+msgstr "Le système de fichiers est plus gros que son volume !"
+
+#: libparted/filesys.c:403
+#, c-format
+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."
+
+#: libparted/filesys.c:445
+#, c-format
+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é."
+
+#: libparted/filesys.c:505
+#, c-format
+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é."
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr "copie brute de blocs"
+
+#: libparted/filesys.c:582
+msgid "growing file system"
+msgstr "le système de fichiers grossit"
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr "Ne peut copier sur une partition qui en chevauche une autre."
+
+#: libparted/filesys.c:644
+#, c-format
+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."
+
+#: libparted/filesys.c:658
+#, c-format
+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é."
+
+#: libparted/filesys.c:696
+#, c-format
+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é."
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, fuzzy
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr "Le système de fichiers est plus gros que son volume !"
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "check"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, fuzzy
+msgid ""
+"The reiserfs file system passed a basic check. For a more comprehensive "
+"check, run reiserfsck --check."
+msgstr ""
+"Le système de fichiers ext2 a passé la vérification de base. Pour une "
+"vérification plus approfondie, utilisez e2fsck."
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, fuzzy
+msgid "Sorry, can't move the start of reiserfs partitions yet."
+msgstr "Désolé, on ne peut pas encore déplacer le début d'une partition ext2 !"
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+msgid "shrinking"
+msgstr "réduction"
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "Avertissement"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, fuzzy, c-format
+msgid "Device is too small for %lu blocks."
+msgstr "Système de fichiers trop petit pour ext2."
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr ""
+"Le support pour la création du système de fichiers %s n'est pas encore "
+"implanté."
+
+#: libparted/labels/aix.c:148
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr ""
+"Le support pour la création du système de fichiers %s n'est pas encore "
+"implanté."
+
+#: libparted/labels/aix.c:161
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+"Le support pour la création du système de fichiers %s n'est pas encore "
+"implanté."
+
+#: libparted/labels/aix.c:171
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"Le support pour la création du système de fichiers %s n'est pas encore "
+"implanté."
+
+#: libparted/labels/aix.c:189
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"Le support pour la création du système de fichiers %s n'est pas encore "
+"implanté."
+
+#: libparted/labels/aix.c:199
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+"Le support pour la création du système de fichiers %s n'est pas encore "
+"implanté."
+
+#: libparted/labels/bsd.c:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Impossible de satisfaire toutes les contraintes sur la partition."
+
+#: libparted/labels/bsd.c:526
+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:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "Impossible de déterminer la taille de %s (%s)."
+
+#: libparted/labels/dasd.c:781
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Impossible d'allouer l'entrée d'une étiquette de disque BSD."
+
+#: libparted/labels/dos.c:827
+#, 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:855
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Table de partition invalide - partition récursive sur %s."
+
+#: libparted/labels/dos.c:1318
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr ""
+"Les partitions étendues ne peuvent être cachées pour les étiquettes de "
+"disque MS-DOS."
+
+#: libparted/labels/dos.c:1958
+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:190
+#, 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:313
+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:616
+msgid "Only primary partitions can be root partitions."
+msgstr "Seules les partitions primaires peuvent être des partitions root."
+
+#: libparted/labels/dvh.c:630
+msgid "Only primary partitions can be swap partitions."
+msgstr "Seules les partitions primaires peuvent être des partitions d'échange."
+
+#: libparted/labels/dvh.c:644
+msgid "Only logical partitions can be a boot file."
+msgstr "Seules les partitions logiques peuvent être un fichier d'amorçage."
+
+#: libparted/labels/dvh.c:721
+msgid "Only logical partitions (boot files) have a name."
+msgstr "Seules les partitions logiques (fichiers d'amorçage) ont un nom."
+
+#: libparted/labels/dvh.c:812
+msgid "Too many primary partitions"
+msgstr "Trop de partitions primaires"
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "%s lors de l'écriture sur %s"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, fuzzy, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr "Disque %s : %s\n"
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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 une table de partition fictive 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 partition 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 partition GPT ?"
+
+#: libparted/labels/gpt.c:648
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+msgstr ""
+"Le format de la table de partitions GPT a la version %x, ce qui est plus "
+"récent que ce que Parted peut reconnaître. SVP nous aviser ! bug-parted@gnu."
+"org"
+
+#: libparted/labels/gpt.c:698
+#, 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:827
+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 table d'archive 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. Corriger en déplaçant l'archive à la fin (et "
+"enlever la vieille sauvegarde) ?"
+
+#: libparted/labels/gpt.c:862
+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 l'archive semble ok, elle sera donc "
+"utilisée."
+
+#: libparted/labels/gpt.c:870
+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 l'archive sont corrompues. Essayer de faire une "
+"nouvelle table et d'utiliser le mode de secours de Parted pour recupérer les "
+"partitions."
+
+#: libparted/labels/mac.c:181
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Signature invalide %x pour une étiquette de disque Mac."
+
+#: libparted/labels/mac.c:226
+msgid "Partition map has no partition map entry!"
+msgstr "La table de partition n'a pas d'entrée de table de partition !"
+
+#: libparted/labels/mac.c:273
+#, 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:532
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "La partition %d a une signature invalide %x."
+
+#: libparted/labels/mac.c:550
+#, 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:580
+msgid "The data region doesn't start at the start of the partition."
+msgstr "La zone de données n'est pas au début de la partition."
+
+#: libparted/labels/mac.c:597
+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:611
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr ""
+"La zone d'amorce de la partition n'occupe pas entièrement la partition."
+
+#: libparted/labels/mac.c:622
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr ""
+"La zone de données de la partition n'occupe pas entièrement la partition."
+
+#: libparted/labels/mac.c:675
+#, 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:688
+#, c-format
+msgid ""
+"The driver descriptor says the physical block size is %d bytes, but Linux "
+"says it is %d bytes."
+msgstr ""
+"Le descripteur de pilote indique une taille physique de bloc de %d octets, "
+"mais Linux lui indique %d octets."
+
+#: libparted/labels/mac.c:736
+msgid "No valid partition map found."
+msgstr "Aucune table de partition valide n'a été trouvée."
+
+#: libparted/labels/mac.c:795
+#, 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:822
+msgid "Weird! There are 2 partitions map entries!"
+msgstr "Bizarre - Il y a 2 entrées de table de partitions !"
+
+#: libparted/labels/mac.c:1347
+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 root ou swap empêchera Linux de les "
+"reconnaître en tant que telles."
+
+#: libparted/labels/mac.c:1443
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr ""
+"Ne peut ajouter une autre partition - la table de partition est trop petite !"
+
+#: libparted/labels/pc98.c:354
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Table de partition invalide sur %s."
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, 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. Besoin "
+"d'ajout de cette fonctionnalité."
+
+#: libparted/labels/pc98.c:791
+msgid "Can't add another partition."
+msgstr "Ne peut ajouter une autre partition."
+
+#: libparted/labels/rdb.c:162
+#, 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:497
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr "%s : N'a pas trouvé le bloc RDB, cela ne devrait jamais arriver."
+
+#: libparted/labels/rdb.c:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s : Boucle detectée sur le bloc %d."
+
+#: libparted/labels/rdb.c:600
+#, 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:689
+#, 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:697
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s : N'a pas pu lister les blocs de la partition."
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s : N'a pas pu lister les blocs du système de fichiers."
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s : N'a pas pu lister les blocs de démarrage."
+
+#: libparted/labels/rdb.c:740
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "N'a pas pu écrire le bloc descripteur de partition à %d."
+
+#: libparted/labels/rdb.c:1069
+msgid "Unable to allocate a partition number."
+msgstr "Impossible d'allouer un numéro de partition."
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr "Étiquette de disque Sun corrompue."
+
+#: libparted/labels/sun.c:266
+#, 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) rapporté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:288
+#, 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:442
+#, 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:737
+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 disponible restante. "
+"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émarragesur Sparc) en a besoin."
+
+#: libparted/labels/sun.c:752
+msgid "Sun disk label is full."
+msgstr "L'étiquette de disque SUN est remplie."
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr "Mémoire insuffisante."
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr "Il n'y a pas de taille unitaire pour l'unité spéciale 'COMPACT'."
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "\"%s\" a une syntaxe chs invalide."
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "Le nombre maximum de têtes est %d."
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "Le nombre maximum de secteurs est %d."
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "Le lieu %s est en dehors du périphérique %s."
+
+#: libparted/unit.c:527
+msgid "Invalid number."
+msgstr "Nombre invalide."
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s : N'a pas pu lister les blocs de la partition."
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, fuzzy, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s : N'a pas pu lister les blocs de démarrage."
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, fuzzy, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s : Boucle detectée sur le bloc %d."
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, fuzzy, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s : Boucle detectée sur le bloc %d."
+
+#: libparted/fs/amiga/amiga.c:72
+#, fuzzy, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s : N'a pas pu détecter les blocs défectueux"
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, fuzzy, 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."
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s : Boucle detectée sur le bloc %d."
+
+#: libparted/fs/amiga/amiga.c:278
+#, fuzzy, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s : N'a pas pu détecter les blocs défectueux"
+
+#: libparted/fs/amiga/amiga.c:289
+#, fuzzy, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s : N'a pas trouvé le bloc RDB, cela ne devrait jamais arriver."
+
+#: libparted/fs/amiga/amiga.c:318
+#, fuzzy, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s : N'a pas pu lister les blocs de la partition."
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr "Descripteurs de groupe inconsistant !"
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+msgid "File system full!"
+msgstr "Le système de fichiers est plein !"
+
+#: libparted/fs/ext2/ext2.c:686
+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 ?"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+msgid "File system has errors! You should run e2fsck."
+msgstr "Le système de fichiers a des erreurs ! Vous devriez exécuter e2fsck."
+
+#: libparted/fs/ext2/ext2.c:711
+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 incorrect pourrait provoquer de "
+"sérieux problèmes de corruption."
+
+#: libparted/fs/ext2/ext2.c:731
+msgid "File system has an incompatible feature enabled."
+msgstr "Le système de fichiers a une option incompatible activée."
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr "Erreur lors de l'allocation d'un tampon de cache."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+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 d'abord !"
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr "Pas asssez d'inodes libres!"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+msgid "File system is too full to remove a group!"
+msgstr "Le système de fichiers est trop plein pour enlever un groupe!"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+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 enlever un groupe!"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr "ajout de groupes"
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, c-format
+msgid "Your file system is too full to resize it to %i blocks. Sorry."
+msgstr ""
+"Votre système de fichiers est trop plein pour le redimensionner en %i blocs. "
+"Désolé."
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, c-format
+msgid ""
+"Your file system has too many occupied inodes to resize it to %i blocks. "
+"Sorry."
+msgstr ""
+"Le système de fichiers occupe trop d'inodes pour le redimensionner en %i "
+"blocs. Désolé."
+
+#: libparted/fs/ext2/ext2_resize.c:666
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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'."
+
+#: libparted/fs/ext2/ext2_resize.c:691
+#, 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 ""
+"Une opération de redimmentionnement sur ce système de fichier utilisera un "
+"code EXPERIMENTAL qui POURRAIT le CORROMPRE (s'il ne l'a pas déjà été). Vous "
+"devriez au moins sauvegarder vos données et ensuite lancer 'e2fsck -f'."
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+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 !"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "Le bloc %i n'a pas de référence ? Bizarre."
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, fuzzy, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "Le bloc %i ne devrait pas avoir été marqué !"
+
+#: libparted/fs/ext2/interface.c:186
+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."
+
+#: libparted/fs/ext2/interface.c:203
+msgid "Sorry, can't move the start of ext2 partitions yet!"
+msgstr "Désolé, on ne peut pas encore déplacer le début d'une partition ext2 !"
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr "Ne peut vider le cache!"
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr "écriture des métadonnées per-group"
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr "Système de fichiers trop petit pour ext2."
+
+#: libparted/fs/fat/calc.c:135
+#, c-format
+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."
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:308
+#, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr "La partition est trop grande/petite pour un système de fichiers %s."
+
+#: libparted/fs/fat/fat.c:474
+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 FAT ne concordent pas. Si vous ne savez pas ce que cela signifie alors "
+"sélectionnez « cancel » et exécutez scandisk sur le système de fichiers, "
+"puis recommencez."
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr "Il n'y a pas de configuration possible pour ce type FAT."
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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 pour "
+"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)"
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+msgid ""
+"File system is reporting the free space as %d clusters, not %d clusters."
+msgstr ""
+"Le système de fichiers rapporte un espace libre de %d clusters et non pas %d "
+"clusters."
+
+#: libparted/fs/fat/fat.c:874
+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 pour FAT sera désactivé."
+
+#: libparted/fs/fat/resize.c:159
+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 root pour tous les fichiers. "
+"Soit annuler (cancel), soit ignorer (ignore) avec perte de fichiers."
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr "Erreur d'écriture du répertoire root."
+
+#: libparted/fs/fat/resize.c:489
+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."
+
+#: libparted/fs/fat/resize.c:492
+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 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)."
+
+#: libparted/fs/fat/resize.c:500
+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."
+
+#: libparted/fs/fat/resize.c:504
+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."
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr "Voulez-vous utiliser FAT32 ?"
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: libparted/fs/fat/resize.c:551
+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."
+
+#: libparted/fs/fat/resize.c:567
+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."
+
+#: libparted/fs/fat/resize.c:580
+msgid ""
+"GNU Parted cannot resize this partition to this size. We're working on it!"
+msgstr ""
+"GNU Parted ne peut redimensionnr cette partition à cette taille. Nous y "
+"travaillons !"
+
+#: 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 invalide de FATs."
+
+#: libparted/fs/fat/bootsector.c:139
+#, 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:164
+#, 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 "
+"sera 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:213
+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:219
+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:225
+msgid "FAT boot sector says clusters are 0 sectors. This is weird. "
+msgstr ""
+"Le secteur d'amorce FAT indique des clusters ayant 0 secteurs. Ceci est "
+"bizarre."
+
+#: libparted/fs/fat/bootsector.c:235
+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:411
+#, 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 « "
+"cancel » pour le moment et transmettre un rapport d'anomalie. Si vous êtes "
+"désespéré, il est probablement prudent de sélectionner « ignore »."
+
+#: libparted/fs/fat/count.c:152
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+msgid ""
+"Bad FAT: unterminated chain for %s. You should run dosfsck or scandisk."
+msgstr ""
+"FAT erroné: chaîne non terminée pour %s. Vous devriez exécuter dosfsck ou "
+"scandisk."
+
+#: libparted/fs/fat/count.c:174
+#, c-format
+msgid ""
+"Bad FAT: cluster %d outside file system in chain for %s. You should run "
+"dosfsck or scandisk."
+msgstr ""
+"FAT erroné: le cluster %d est en dehors du système de fichiers dans la "
+"chaîne pour %s. Vous devriez exécuter dosfsck ou scandisk."
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+msgid ""
+"Bad FAT: cluster %d is cross-linked for %s. You should run dosfsck or "
+"scandisk."
+msgstr ""
+"FAT erroné: le cluster %d a des liens croisés pour %s. Vous devriez exécuter "
+"dosfsck ou scandisk."
+
+#: libparted/fs/fat/count.c:203
+#, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr "%s est %dk, mais il a %d clusters (%dk)."
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+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 système de fichiers. Cela signifie que son "
+"déplacement pourrait amener certains programmes à cesser de fonctionner."
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+msgid ""
+"FAT %d media %x doesn't match the boot sector's media %x. You should "
+"probably run scandisk."
+msgstr ""
+"La FAT %d du média %x ne concorde pas avec le secteur d'amorce du média %x. "
+"Vous devriez probablement exécuter scandisk."
+
+#: libparted/fs/fat/table.c:269
+#, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "fat_table_set: cluster %ld en dehors du système de fichiers"
+
+#: libparted/fs/fat/table.c:301
+#, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "fat_table_set: cluster %ld en dehors du système de fichiers"
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "fat_table_alloc_cluster: pas de cluster disponible"
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Signature swap de Linux non reconnue « %10s »."
+
+#: libparted/fs/linux_swap/linux_swap.c:318
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Signature swap de Linux non reconnue « %10s »."
+
+#: libparted/fs/linux_swap/linux_swap.c:358
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Signature swap de Linux non reconnue « %10s »."
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr "Trop de pages erronées."
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr "Le système de fichiers contient des erreurs."
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr "Les blocs défectueux ne peuvent pas être lus."
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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 un autre "
+"existe déjà à cette position. Vous devriez vérifier le système de fichiers !"
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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 un autre "
+"existe déjà à cette position. Cela ne devrait pas arriver !"
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+msgid "Could not update the extent cache for HFS file with CNID %X."
+msgstr ""
+"Ne peut mettre à jour le cache des fragments du fichier HFS ayant le CNID %X."
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+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."
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+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."
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+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."
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+msgid "Could not update the extent cache for HFS+ file with CNID %X."
+msgstr ""
+"Ne peut mettre à jour le cache des fragments du fichier HFS+ ayant le CNID %"
+"X."
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+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."
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+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."
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+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."
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr ""
+"Désolé, l'HFS ne peut être redimensionné de cette manière pour le moment."
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr "Le déplacement des données a échoué."
+
+#: libparted/fs/hfs/hfs.c:281
+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."
+
+#: libparted/fs/hfs/hfs.c:320
+msgid "writing HFS Master Directory Block"
+msgstr "écriture du Master Directory Block HFS"
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr "Aucune signature HFS[+X] valide trouvée lors de l'ouverture."
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr "La version %d du HFS+ n'est pas supportée."
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr "La version %d du HFSX n'est pas supportée."
+
+#: libparted/fs/hfs/hfs.c:672
+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."
+
+#: libparted/fs/hfs/hfs.c:720
+msgid "Error while writing the allocation file."
+msgstr "Erreur d'écriture du fichier d'allocation."
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr "Erreur d'écriture de la zone de compatibilité du fichier d'allocation."
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr "écriture du Volume Header du HFS+"
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr ""
+"Une erreur est survenue lors de la recherche du fichier non-optionnel des "
+"blocs défectueux."
+
+#: libparted/fs/hfs/hfs.c:904
+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 l'encapsulateur HFS : le fichier des "
+"blocs défectueux contient le volume HFS+ ."
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr ""
+"Désolé, l'HFS+ ne peut être redimensionné de cette manière pour le moment."
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr "réduction du volume HFS+"
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr "Le redimensionnement du volume HFS+ a échoué."
+
+#: libparted/fs/hfs/hfs.c:998
+msgid "shrinking HFS wrapper"
+msgstr "réduction de l'encapsulateur HFS"
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr "La mise à jour de l'encapsulateur HFS a échoué."
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+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éboguage."
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr "Mauvaise somme de contrôle de l'entête de la liste des blocs."
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+msgid ""
+"Invalid size of a transaction block while replaying the journal (%i bytes)."
+msgstr ""
+"Taille de bloc de transaction invalide pendant le replay du journal (%i "
+"octets)."
+
+#: libparted/fs/hfs/journal.c:260
+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 le journal et de relancer Parted."
+
+#: libparted/fs/hfs/journal.c:271
+msgid "Journal offset or size is not multiple of the sector size."
+msgstr "Le delta ou la taille n'est pas un multiple de la taille d'un secteur."
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr "Valeurs magiques incorrectes dans l'entête du journal."
+
+#: libparted/fs/hfs/journal.c:302
+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."
+
+#: libparted/fs/hfs/journal.c:314
+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."
+
+#: libparted/fs/hfs/journal.c:323
+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."
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr "Mauvaise somme de contrôle du journal."
+
+#: libparted/fs/hfs/journal.c:353
+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."
+
+#: libparted/fs/hfs/journal.c:381
+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 replay "
+"du journal. Vous devriez relancer Parted."
+
+#: libparted/fs/hfs/probe.c:51
+#, 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."
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr "Une zone n'a pas été réallouée."
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+msgid ""
+"A reference to an extent comes from a place it should not. You should check "
+"the file system!"
+msgstr ""
+"Une référence vers une zone provient d'un endroit dont il ne devrait pas. "
+"Vous devriez vérifier le système de fichiers."
+
+#: libparted/fs/hfs/reloc.c:381
+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 !"
+
+#: libparted/fs/hfs/reloc.c:475
+msgid "This HFS volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+"Ce volume HFS n'a pas de fichier des zones additionelles. C'est plutôt "
+"inhabituel !"
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+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."
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+msgid "Could not cache the file system in memory."
+msgstr "Impossible d'indexer le système de fichiers en mémoire."
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr "La liste des blocs défectueux ne peut être chargée."
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr "Une erreur est survenue pendant le déplacement de la zone."
+
+#: libparted/fs/hfs/reloc_plus.c:495
+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 !"
+
+#: libparted/fs/hfs/reloc_plus.c:619
+msgid "This HFS+ volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+"Ce volume HFS+ n'a pas de fichier des zones additionnelles. C'est plutôt "
+"inhabituel !"
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr "afficher l'aide-mémoire"
+
+#: parted/parted.c:95
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr "ne demande jamais l'intervention de l'utilisateur"
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr "affiche la version"
+
+#: parted/parted.c:111
+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 ""
+"MINEURE 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 de 5 à plus.\n"
+
+#: parted/parted.c:114
+msgid "LABEL-TYPE is one of: "
+msgstr "TYPE-D-ÉTIQUETTE est parmi : "
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr "FANION est parmi : "
+
+#: parted/parted.c:116
+msgid "UNIT is one of: "
+msgstr "UNIT est parmi : "
+
+#: parted/parted.c:117
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "PART-TYPE est parmi : primary, logical, extended\n"
+
+#: parted/parted.c:119
+msgid "FS-TYPE is one of: "
+msgstr "FS-TYPE est parmi : "
+
+#: parted/parted.c:120
+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 et END sont des emplacements, comme 4GB ou 10%. Les valeurs négatives "
+"comptent à partir de la fin du disque. Par exemple, =-1s spécifie "
+"précisément le dernier secteur.\n"
+
+#: parted/parted.c:123
+msgid "STATE is one of: on, off\n"
+msgstr "ÉTAT est un parmi : on, off\n"
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "PÉRIPHÉRIQUE est habituellement du genre /dev/hda ou /dev/sda\n"
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr "NOM est un mot de votre choix\n"
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr "La partition doit avoir un des FS-TYPES suivants : "
+
+#: parted/parted.c:130
+#, 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 - 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:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(temps restant %.2d:%.2d)"
+
+#: parted/parted.c:195
+#, fuzzy, 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:211
+#, 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:223
+msgid ""
+"The existing file system will be destroyed and all data on the partition "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+msgid "Partition number?"
+msgstr "Numéro de partition ?"
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr "Périphérique source ?"
+
+#: parted/parted.c:504
+msgid "Source partition number?"
+msgstr "Numéro de la partition source ?"
+
+#: parted/parted.c:509
+msgid "Can't copy an extended partition."
+msgstr "Ne peut copier une partition étendue."
+
+#: parted/parted.c:515
+msgid "Destination partition number?"
+msgstr "Numéro de la partition de destination ?"
+
+#: parted/parted.c:615
+msgid "New disk label type?"
+msgstr "Nouveau type d'étiquette de disque ?"
+
+#: parted/parted.c:656
+msgid "File system?"
+msgstr "Système de fichiers ?"
+
+#: parted/parted.c:707 parted/parted.c:878
+msgid "Partition type?"
+msgstr "Type de partition ?"
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+msgid "Partition name?"
+msgstr "Nom de la partition ?"
+
+#: parted/parted.c:722 parted/parted.c:895
+msgid "File system type?"
+msgstr "Type de système de fichiers ?"
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr "Début ?"
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr "Fin ?"
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+"Vous avez demandé une partition de %s à %s.\n"
+"La position la plus proche que nous pouvons gérer est %s à %s. Est-ce "
+"toujours acceptable pour vous ?"
+
+#: parted/parted.c:890
+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 ?"
+
+#: parted/parted.c:1050
+msgid "Can't move an extended partition."
+msgstr "Ne peut déplacer une partition étendue."
+
+#: parted/parted.c:1079
+msgid "Can't move a partition onto itself. Try using resize, perhaps?"
+msgstr ""
+"Ne peut déplacer une partition sur elle-même. Essayez peut-être un "
+"redimensionnement ?"
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr "Mineure : %d\n"
+
+#: parted/parted.c:1228
+#, c-format
+msgid "Flags: %s\n"
+msgstr "Fanions : %s\n"
+
+#: parted/parted.c:1229
+#, c-format
+msgid "File System: %s\n"
+msgstr "Système de fichiers : %s\n"
+
+#: parted/parted.c:1230
+msgid "Size: "
+msgstr "Taille: "
+
+#: parted/parted.c:1235
+msgid "Minimum size: "
+msgstr "Taille minimum : "
+
+#: parted/parted.c:1238
+msgid "Maximum size: "
+msgstr "Taille maximum : "
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:1364
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "Disque %s : %s\n"
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "Taille des secteurs (logiques/physiques): %lldB/%lldB\n"
+
+#: parted/parted.c:1383
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d. Each cylinder is %s.\n"
+msgstr ""
+"BIOS cylindre,tête,secteur géométrie : %d,%d,%d. Chaque cylindre est %s.\n"
+
+#: parted/parted.c:1392
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "Table de partition : %s\n"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr "Numéro"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Start"
+msgstr "Début"
+
+#: parted/parted.c:1407 parted/parted.c:1410
+msgid "End"
+msgstr "Fin"
+
+#: parted/parted.c:1410
+msgid "Size"
+msgstr "Taille"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr "Type"
+
+#: parted/parted.c:1416
+msgid "File system"
+msgstr "Système de fichiers"
+
+#: parted/parted.c:1419
+msgid "Name"
+msgstr "Nom"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr "Fanions"
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr "Espace libre"
+
+#: parted/parted.c:1624
+#, 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é trouvée à %s -> %s. Voulez-vous l'ajouter à la "
+"table de partition ?"
+
+#: parted/parted.c:1663
+msgid "searching for file systems"
+msgstr "recherche des systèmes de fichiers"
+
+#: parted/parted.c:1877
+msgid "New device?"
+msgstr "Nouveau périphérique ?"
+
+#: parted/parted.c:1902
+msgid "Flag to Invert?"
+msgstr "Fanion à inverser ?"
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr "Nouvel état ?"
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr "Unité ?"
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "check"
+
+#: parted/parted.c:2096
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr ""
+"check MINEURE faire une vérification simple du "
+"système de fichiers"
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "cp"
+
+#: parted/parted.c:2105
+msgid ""
+"cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another "
+"partition"
+msgstr ""
+"cp [PÉRIPHÉRIQUE-SOURCE] MINEURE-SOURCE MINEURE-DEST\n"
+" copier le système de fichiers vers une "
+"autre partition"
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:2114
+#, fuzzy
+msgid ""
+"help [COMMAND] print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [COMMANDE] affiche l'aide générale ou l'aide "
+"de la COMMANDE"
+
+#: parted/parted.c:2120
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:2120
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:2123
+#, fuzzy
+msgid ""
+"mklabel,mktable LABEL-TYPE create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel LABEL-TYPE créer une nouvelle étiquette de "
+"disque (table de partition)"
+
+#: parted/parted.c:2129
+msgid "mkfs"
+msgstr "mkfs"
+
+#: parted/parted.c:2132
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+"mkfs MINEURE TYPE-SF créer un système de fichiers TYPE-"
+"SF sur la partititon MINEURE"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:2141
+msgid "mkpart PART-TYPE [FS-TYPE] START END make a partition"
+msgstr "mkpart TYPE-PAR [TYPE-SF] DÉPART FIN créer une partition"
+
+#: parted/parted.c:2147
+#, 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 crée une partition sans créer un nouveau système de fichiers sur la "
+"partition. Le TYPE-SF doit être spécifié pour initialiser le type de "
+"partition approprié.\n"
+
+#: parted/parted.c:2152
+msgid "mkpartfs"
+msgstr "mkpartfs"
+
+#: parted/parted.c:2155
+msgid ""
+"mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system"
+msgstr ""
+"mkpartfs TYPE-PAR TYPE-SF DÉPART FIN créer une partition avec un "
+"système de fichiers"
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr "move"
+
+#: parted/parted.c:2164
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "move MINEURE DÉPART FIN déplacer la partition MINEURE"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "nom"
+
+#: parted/parted.c:2172
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr ""
+"name MINEURE NOM nommer une partition MINEURE NOM"
+
+#: parted/parted.c:2177
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"print [free|MINEURE|all] afficher la table de partitions ou "
+"une partition, ou tous les périphériques"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:2199
+msgid "quit exit program"
+msgstr "quit quitter le programme"
+
+#: parted/parted.c:2204
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:2207
+msgid ""
+"rescue START END rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue DÉPART FIN restaurer une partition perdue "
+"entre DÉPART et FIN"
+
+#: parted/parted.c:2213
+msgid "resize"
+msgstr "resize"
+
+#: parted/parted.c:2216
+msgid ""
+"resize NUMBER START END resize partition NUMBER and its "
+"file system"
+msgstr ""
+"resize MINEURE DÉPART FIN modifier la taille du système de "
+"fichiers MINEURE"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:2227
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "rm MINEURE détruire la partition MINEURE"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:2235
+msgid "select DEVICE choose the device to edit"
+msgstr ""
+"select PÉRIPHÉRIQUE sélectionner le périphérique à éditer"
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:2243
+msgid ""
+"set NUMBER FLAG STATE change the FLAG on partition NUMBER"
+msgstr ""
+"set MINEURE FANION ÉTAT modifier le FANION sur la partition "
+"MINEURE"
+
+#: parted/parted.c:2249
+msgid "toggle"
+msgstr "inverse"
+
+#: parted/parted.c:2252
+msgid ""
+"toggle [NUMBER [FLAG]] toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+"toggle [MINEUR [FANION]] inverser l'état du fanion sur la "
+"partition MINEUR"
+
+#: parted/parted.c:2258
+msgid "unit"
+msgstr "unit"
+
+#: parted/parted.c:2261
+msgid "unit UNIT set the default unit to UNIT"
+msgstr ""
+"unit UNIT affecte l'unité par defaut à UNIT"
+
+#: parted/parted.c:2266
+#, fuzzy
+msgid "version"
+msgstr "version"
+
+#: parted/parted.c:2269
+#, fuzzy
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"version affiche la version courrante de GNU "
+"Parted ainsi que l'information sur le copyright"
+
+#: parted/parted.c:2273
+#, fuzzy
+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:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "Aucun périphérique trouvé"
+
+#: parted/parted.c:2412
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:2450
+#, fuzzy
+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:160
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+"Bievenue sur GNU Parted ! Tappez 'help' pour voir la liste des commandes.\n"
+
+#: parted/ui.c:163
+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 [COMMANDE [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:168
+#, 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"
+"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 rapporter 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 size web de GNU Parted :\n"
+"\n"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"pour plus d'informations.\n"
+"\n"
+"Votre rapport dois contenir la version de cette release (%s)\n"
+"accompagné du message d'erreur dessous, le resultat de\n"
+"\n"
+"\tparted PÉRIPHÉRIQUE unit co print unit s print\n"
+"\n"
+"et des informations supplémentaires que vous trouvez importantes à propos de "
+"votre configration.\n"
+
+#: parted/ui.c:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+#, fuzzy
+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)"
+
+#: parted/ui.c:372
+#, fuzzy
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"Erreur : SEGV_ACCERR (Permissions invalides pour l'objet associé)"
+
+#: parted/ui.c:377
+#, fuzzy
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"Erreur : Un signal SIGSEGV général est survenu."
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"Erreur : FPE_INTDIV (Entier: division par zéro)"
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"Erreur : FPE_INTOVF (Entier: dépassement)"
+
+#: parted/ui.c:420
+#, fuzzy
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"Erreur : FPE_INTDIV (Flottant: division par zéro)"
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"Erreur : FPE_FLTOVF (Flottant: dépassement)"
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"Erreur : FPE_FLTUND (Flottant: soupassement)"
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"Erreur : PE_FLTRES (Flottant: résultat inexact)"
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"Erreur : (Flottant: opération invalide)"
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"Erreur : FPE_FLTSUB (Flottant: indicage hors de la plage)"
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"Erreur : Un signal SIGFPE général est survenu."
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"Erreur : ILL_ILLOPC (Opcode illégal)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"Erreur : ILL_ILLOPN (Opérande illégal)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"Erreur : ILL_ILLADR (Mode d'adressage illégal)"
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"Erreur : ILL_ILLTRP (Déroutement illégal)"
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"Erreur : ILL_PRVOPC (Opcode privilégié)"
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"Erreur : ILL_PRVREG (Registre privilégié)"
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"Erreur : ILL_COPROC (Erreur du coprocesseur)"
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"Erreur : ILL_BADSTK (Erreur de pile interne)"
+
+#: parted/ui.c:523
+#, fuzzy
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"Erreur : Un signal SIGILL général est survenu."
+
+#: parted/ui.c:1024
+msgid "Expecting a partition number."
+msgstr "Attente d'un numéro de partition."
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "La partition n'existe pas."
+
+#: parted/ui.c:1053
+msgid "Expecting a file system type."
+msgstr "Attente d'un type de système de fichiers."
+
+#: parted/ui.c:1060
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Type de système de fichiers inconnu \"%s\"."
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr "Attente d'un type d'étiquette de disque."
+
+#: parted/ui.c:1178
+msgid "Can't create any more partitions."
+msgstr "Ne peut ajouter de nouvelle partition."
+
+#: parted/ui.c:1188
+msgid "Expecting a partition type."
+msgstr "Attente d'un type de partition."
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr "on"
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr "off"
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "OPTIONS :"
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "COMMANDES :"
+
+#: parted/ui.c:1445
+#, c-format
+msgid "Using %s\n"
+msgstr "On utilise %s\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#~ 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"
+
+#, 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 ""
+#~ "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."
+
+#~ 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."
+
+#, 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 "Could not read geometry of %s - %s."
+#~ msgstr "Ne peut lire la géométrie de %s - %s."
+
+#~ 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/parted-1.8.7/po/gl.gmo b/parted-1.8.7/po/gl.gmo
new file mode 100644
index 0000000..6d298ff
--- /dev/null
+++ b/parted-1.8.7/po/gl.gmo
Binary files differ
diff --git a/parted-1.8.7/po/gl.po b/parted-1.8.7/po/gl.po
new file mode 100644
index 0000000..1dc8568
--- /dev/null
+++ b/parted-1.8.7/po/gl.po
@@ -0,0 +1,3731 @@
+# 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: 2007-05-09 17:02-0400\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"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Tipo de sistema de ficheiros descoñecido."
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Erro ao abrir %s: %s"
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, 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:411 libparted/arch/linux.c:1431
+#, 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:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s durante a lectura en %s"
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, 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:496 libparted/arch/linux.c:1570
+#, 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:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s durante a escritura en %s"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "Demasiadas páxinas incorrectas."
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr "Non se puido abrir %s."
+
+#: libparted/arch/gnu.c:114
+msgid "Unable to probe store."
+msgstr "Non se puido sondea-lo armacén."
+
+#: libparted/arch/gnu.c:352
+#, 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:369
+#, 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:380 parted/parted.c:2443
+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:772
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s tentando sincronizar %s no disco"
+
+#: libparted/arch/linux.c:408
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Non se puido facer \"stat\" sobre o dispositivo %s - %s."
+
+#: libparted/arch/linux.c:523
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:539
+#, c-format
+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 ""
+
+#: libparted/arch/linux.c:579
+#, 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:668
+#, 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:677
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:698
+#, 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:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Erro ao inicializa-lo dispositivo SCSI %s - %s"
+
+#: libparted/arch/linux.c:928
+#, fuzzy, c-format
+msgid ""
+"The device %s has zero length, and can't 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:1032
+#, 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:1110
+msgid "DAC960 RAID controller"
+msgstr "Controladora RAID DAC960"
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr "Controladora ATARAID"
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr "Controladora I2O"
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr ""
+
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "Descoñecido"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "ped_device_new() Tipo de dispositivo non soportado"
+
+#: libparted/arch/linux.c:2083
+#, 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:2262
+#, 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/arch/linux.c:2368
+#, fuzzy, c-format
+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."
+
+#: libparted/cs/geom.c:162
+msgid "Can't have the end before the start!"
+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:366
+#, 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:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr "buscando os bloques erróneos"
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "Non se puido abrir %s - etiqueta de disco non recoñecida."
+
+#: libparted/disk.c:471
+#, 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:598
+#, 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:1075
+#, 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:1634
+#, 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:1647
+#, fuzzy
+msgid "Too many primary partitions."
+msgstr "Demasiadas particións primarias."
+
+#: libparted/disk.c:1656
+#, 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:1680
+#, 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:1690
+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:1715
+#, 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:1725 libparted/disk.c:1779 libparted/disk.c:1945
+#, fuzzy
+msgid "Can't have overlapping partitions."
+msgstr "Non se poden ter particións solapándose."
+
+#: libparted/disk.c:1733
+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:2140
+msgid "metadata"
+msgstr "metadatos"
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "libre"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "estendida"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "lóxica"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "primaria"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "inicio"
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr "raiz"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr "intercambio"
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "oculta"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2190
+#, fuzzy, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Modificador de particións descoñecido, %d."
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "Información"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "Aviso"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "Erro"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "Moi grave"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "Erro"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr "Sen Implementación"
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr "Arranxar"
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "Si"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "Non"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "Aceptar"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "Reintentar"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "Ignorar"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org 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/filesys.c:384
+msgid "Could not detect file system."
+msgstr "Non se pode detectar un sistema de ficheiros."
+
+#: libparted/filesys.c:395
+#, fuzzy
+msgid "The file system is bigger than its volume!"
+msgstr "O sistema de ficheiros é maior có seu volume."
+
+#: libparted/filesys.c:403
+#, c-format
+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."
+
+#: libparted/filesys.c:445
+#, c-format
+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."
+
+#: libparted/filesys.c:505
+#, c-format
+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."
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr "copiando bloque a bloque"
+
+#: libparted/filesys.c:582
+msgid "growing file system"
+msgstr "aumentando o sistema de ficheiros"
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr "Non se pode copiar nunha partición que se solapa."
+
+#: libparted/filesys.c:644
+#, fuzzy, c-format
+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."
+
+#: libparted/filesys.c:658
+#, c-format
+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."
+
+#: libparted/filesys.c:696
+#, c-format
+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."
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, fuzzy
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr "O sistema de ficheiros é maior có seu volume."
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "check"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, 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."
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, 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!"
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+msgid "shrinking"
+msgstr "encollendo"
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "Aviso"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, fuzzy, c-format
+msgid "Device is too small for %lu blocks."
+msgstr "O sistema de ficheiros é pequeno de máis para ext2."
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, 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:148
+#, 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:161
+#, 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:171
+#, 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:189
+#, 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:199
+#, 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:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+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:526
+#, 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:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "Non se puido determina-lo tamaño de %s (%s)"
+
+#: libparted/labels/dasd.c:781
+#, 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:827
+#, 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:855
+#, 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:1318
+#, 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:1958
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+#: libparted/labels/dvh.c:190
+#, 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:313
+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:616
+msgid "Only primary partitions can be root partitions."
+msgstr "Só as particións primarias poden ser particións raiz."
+
+#: libparted/labels/dvh.c:630
+msgid "Only primary partitions can be swap partitions."
+msgstr "Só as particións primarias poden ser particións de intercambio."
+
+#: libparted/labels/dvh.c:644
+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:721
+msgid "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:812
+msgid "Too many primary partitions"
+msgstr "Demasiadas particións primarias."
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "%s durante a escritura en %s"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, fuzzy, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr "%s %s %s"
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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:648
+#, fuzzy, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+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:698
+#, 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:827
+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:862
+#, 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:870
+#, 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/mac.c:181
+#, 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:226
+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:273
+#, 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:532
+#, 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:550
+#, 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:580
+#, 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:597
+#, 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:611
+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:622
+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:675
+#, 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:688
+#, 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:736
+msgid "No valid partition map found."
+msgstr "Non se atopou un mapa de particións válido."
+
+#: libparted/labels/mac.c:795
+#, 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:822
+#, 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:1347
+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:1443
+#, 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:354
+#, fuzzy, c-format
+msgid "Invalid partition table on %s."
+msgstr "Táboa de particións incorrecta en %s"
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, 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:791
+msgid "Can't add another partition."
+msgstr "Non se pode engadir máis particións."
+
+#: libparted/labels/rdb.c:162
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:497
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:581
+#, fuzzy, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s non é un dispositivo de bloques."
+
+#: libparted/labels/rdb.c:600
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:697
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:740
+#, 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:1069
+#, fuzzy
+msgid "Unable to allocate a partition number."
+msgstr "Espérase un número de partición."
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr "Detectouse unha etiqueta de disco Sun corrompida."
+
+#: libparted/labels/sun.c:266
+#, 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:288
+#, 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:442
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:737
+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:752
+msgid "Sun disk label is full."
+msgstr "A etiqueta de disco Sun está chea."
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr "Memoria esgotada."
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, 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:527
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "Non se puido determinar se a partición está montada."
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, fuzzy, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s non é un dispositivo de bloques."
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, fuzzy, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s non é un dispositivo de bloques."
+
+#: libparted/fs/amiga/amiga.c:72
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s non é un dispositivo de bloques."
+
+#: libparted/fs/amiga/amiga.c:278
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:289
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:318
+#, fuzzy, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "Non se puido determinar se a partición está montada."
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr "¡Descriptores de grupo non consistentes!"
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+#, fuzzy
+msgid "File system full!"
+msgstr "¡Sistema de ficheiros cheo!"
+
+#: libparted/fs/ext2/ext2.c:686
+#, 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?"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+#, fuzzy
+msgid "File system has errors! You should run e2fsck."
+msgstr "¡O sistema de ficheiros ten erros! Debería executar e2fsck."
+
+#: libparted/fs/ext2/ext2.c:711
+#, 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."
+
+#: libparted/fs/ext2/ext2.c:731
+#, fuzzy
+msgid "File system has an incompatible feature enabled."
+msgstr "O sistema de ficheiros ten unha característica incompatible activada."
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr "Erro ao buscar espacio para o buffer cache."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+#, 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."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr "¡Non hai inodes libres dabondo!"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+#, fuzzy
+msgid "File system is too full to remove a group!"
+msgstr "¡O sistema de ficheiros está demasiado ocupado para eliminar un grupo!"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+#, 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!"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr "engadindo grupos"
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, fuzzy, c-format
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, fuzzy, c-format
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:666
+#, 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."
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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 ""
+
+#: libparted/fs/ext2/ext2_resize.c:691
+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 ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+#, fuzzy
+msgid "Cross-linked blocks found! Better go run e2fsck first!"
+msgstr ""
+"¡Atopáronse bloques ligados entre si! ¡Mellor será que empregue e2fsck antes!"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, fuzzy, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "¿O bloque %i non ten unha referencia? Moi raro."
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, fuzzy, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "¡O bloque %i non debería estar marcado!"
+
+#: libparted/fs/ext2/interface.c:186
+#, 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."
+
+#: libparted/fs/ext2/interface.c:203
+msgid "Sorry, can't move the start of ext2 partitions yet!"
+msgstr "¡Síntoo, ainda non podo move-lo principio das particións ext2!"
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr "¡Non se puido baleira-lo buffer cache!"
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr "gravando os metadatos por grupos"
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr "O sistema de ficheiros é pequeno de máis para ext2."
+
+#: libparted/fs/fat/calc.c:135
+#, fuzzy, c-format
+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)"
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:308
+#, fuzzy, c-format
+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"
+
+#: libparted/fs/fat/fat.c:474
+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."
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr "Non hai configuracións posibles para este tipo de FAT."
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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)."
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:874
+#, 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/resize.c:159
+#, 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."
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr "Erro ao escribir no directorio raiz."
+
+#: libparted/fs/fat/resize.c:489
+#, 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."
+
+#: libparted/fs/fat/resize.c:492
+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)."
+
+#: libparted/fs/fat/resize.c:500
+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."
+
+#: libparted/fs/fat/resize.c:504
+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."
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr "¿Quere usar FAT32?"
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: libparted/fs/fat/resize.c:551
+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."
+
+#: libparted/fs/fat/resize.c:567
+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."
+
+#: libparted/fs/fat/resize.c:580
+#, 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!"
+
+#: 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:139
+#, 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:164
+#, 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:213
+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:219
+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:225
+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:235
+#, fuzzy
+msgid "File system is FAT12, which is unsupported."
+msgstr "O sistema de ficheiros é FAT12, que non está soportado."
+
+#: libparted/fs/fat/bootsector.c:411
+#, 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/fat/count.c:152
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:174
+#, fuzzy, c-format
+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."
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:203
+#, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr "%s é de %dk, pero ten %d clusters (%dk)."
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:269
+#, fuzzy, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "fat_table_set: o cluster %ld está fóra do sistema de ficheiros"
+
+#: libparted/fs/fat/table.c:301
+#, fuzzy, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "fat_table_get: o cluster %ld está fóra do sistema de ficheiros"
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "fat_table_alloc_cluster: non hai clusters libres"
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, 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:318
+#, 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:358
+#, 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/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr "Demasiadas páxinas incorrectas."
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr ""
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr ""
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+msgid "Could not update the extent cache for HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+msgid "Trying to write HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+msgid "Could not update the extent cache for HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+msgid "Trying to write HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:320
+#, fuzzy
+msgid "writing HFS Master Directory Block"
+msgstr "Erro ao escribir no directorio raiz."
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:720
+#, fuzzy
+msgid "Error while writing the allocation file."
+msgstr "Erro ao escribir no directorio raiz."
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:904
+msgid ""
+"It seems there is an error in the HFS wrapper: the bad blocks file doesn't "
+"contain the embedded HFS+ volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:998
+#, fuzzy
+msgid "shrinking HFS wrapper"
+msgstr "encollendo"
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+msgid ""
+"This is not a real %s check. This is going to extract special low level "
+"files for debugging purposes."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+msgid ""
+"Invalid size of a transaction block while replaying the journal (%i bytes)."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:260
+msgid ""
+"Journal stored outside of the volume are not supported. Try to desactivate "
+"the journal and run Parted again."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:271
+#, 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."
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:302
+msgid "Journal size mismatch between journal info block and journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:314
+#, 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."
+
+#: libparted/fs/hfs/journal.c:323
+msgid ""
+"The sector size stored in the journal is not 512 bytes. Parted only "
+"supports 512 bytes length sectors."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:353
+msgid ""
+"The journal is not empty. Parted must replay the transactions before "
+"opening the file system. This will modify the file system."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:381
+msgid ""
+"The volume header or the master directory block has changed while replaying "
+"the journal. You should restart Parted."
+msgstr ""
+
+#: libparted/fs/hfs/probe.c:51
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to %"
+"d bytes."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+msgid ""
+"A reference to an extent comes from a place it should not. You should check "
+"the file system!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:475
+msgid "This HFS volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+msgid ""
+"The extents overflow file should not contain its own extents! You should "
+"check the file system."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+#, fuzzy
+msgid "Could not cache the file system in memory."
+msgstr "Non se pode detectar un sistema de ficheiros."
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:619
+msgid "This HFS+ volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr "amosar esta mensaxe de axuda"
+
+#: parted/parted.c:95
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr "non pedir nunca a intervención do usuario"
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr "amosa-la versión"
+
+#: parted/parted.c:111
+#, 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:114
+msgid "LABEL-TYPE is one of: "
+msgstr "TIPO-ETIQUETA é un destes: "
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr "MODIF é un destes: "
+
+#: parted/parted.c:116
+#, fuzzy
+msgid "UNIT is one of: "
+msgstr "MODIF é un destes: "
+
+#: parted/parted.c:117
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr ""
+"TIPO-PARTICION é: primary (primaria), logical (lóxica), extended "
+"(estendida)\n"
+
+#: parted/parted.c:119
+msgid "FS-TYPE is one of: "
+msgstr "TIPO-SF é un destes: "
+
+#: parted/parted.c:120
+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:123
+msgid "STATE is one of: on, off\n"
+msgstr "ESTADO é un destes: on, off\n"
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "DISPOSITIVO adoita ser /dev/hda ou /dev/sda\n"
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr "NOME é calquera palabra que queira\n"
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr ""
+
+#: parted/parted.c:130
+#, 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:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(tempo restante %.2d:%.2d)"
+
+#: parted/parted.c:195
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:211
+#, 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:223
+msgid ""
+"The existing file system will be destroyed and all data on the partition "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+msgid "Partition number?"
+msgstr "¿Número de partición?"
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr "¿Dispositivo orixe?"
+
+#: parted/parted.c:504
+msgid "Source partition number?"
+msgstr "¿Número da partición orixe?"
+
+#: parted/parted.c:509
+#, fuzzy
+msgid "Can't copy an extended partition."
+msgstr "Non se poden copiar particións estendidas."
+
+#: parted/parted.c:515
+msgid "Destination partition number?"
+msgstr "¿Número da partición de destino?"
+
+#: parted/parted.c:615
+msgid "New disk label type?"
+msgstr "¿Novo tipo de etiqueta de disco?"
+
+#: parted/parted.c:656
+msgid "File system?"
+msgstr "¿Sistema de ficheiros?"
+
+#: parted/parted.c:707 parted/parted.c:878
+msgid "Partition type?"
+msgstr "¿Tipo de partición?"
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+msgid "Partition name?"
+msgstr "¿Nome da partición?"
+
+#: parted/parted.c:722 parted/parted.c:895
+msgid "File system type?"
+msgstr "¿Tipo de sistema de ficheiros?"
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr "¿Inicio?"
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr "¿Fin?"
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+
+#: parted/parted.c:890
+#, 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?"
+
+#: parted/parted.c:1050
+#, fuzzy
+msgid "Can't move an extended partition."
+msgstr "Non se poden move-las particións extendidas."
+
+#: parted/parted.c:1079
+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?"
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr "Menor: %d\n"
+
+#: parted/parted.c:1228
+#, fuzzy, c-format
+msgid "Flags: %s\n"
+msgstr "Modificadores: "
+
+#: parted/parted.c:1229
+#, c-format
+msgid "File System: %s\n"
+msgstr "Sistema de Ficheiros: %s\n"
+
+#: parted/parted.c:1230
+#, fuzzy
+msgid "Size: "
+msgstr "Tamaño: %10.3fMb (%d%%)\n"
+
+#: parted/parted.c:1235
+#, fuzzy
+msgid "Minimum size: "
+msgstr "Tam. mínimo: %10.3fMb (%d%%)\n"
+
+#: parted/parted.c:1238
+#, fuzzy
+msgid "Maximum size: "
+msgstr "Tam. Máximo: %10.3fMb (%d%%)\n"
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:1364
+#, fuzzy, c-format
+msgid "Disk %s: %s\n"
+msgstr "%s %s %s"
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:1383
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d. Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:1392
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "¿Nome da partición?"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr ""
+
+#: parted/parted.c:1406 parted/parted.c:1409
+#, fuzzy
+msgid "Start"
+msgstr "¿Inicio?"
+
+#: parted/parted.c:1407 parted/parted.c:1410
+#, fuzzy
+msgid "End"
+msgstr "¿Fin?"
+
+#: parted/parted.c:1410
+#, fuzzy
+msgid "Size"
+msgstr "resize"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr ""
+
+#: parted/parted.c:1416
+#, fuzzy
+msgid "File system"
+msgstr "¿Sistema de ficheiros?"
+
+#: parted/parted.c:1419
+#, fuzzy
+msgid "Name"
+msgstr "name"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr "Modificadores"
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1624
+#, 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:1663
+msgid "searching for file systems"
+msgstr "buscando sistemas de ficheiros"
+
+#: parted/parted.c:1877
+msgid "New device?"
+msgstr "¿Novo dispositivo?"
+
+#: parted/parted.c:1902
+#, fuzzy
+msgid "Flag to Invert?"
+msgstr "¿Modificador a cambiar?"
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr "¿Novo estado?"
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "check"
+
+#: parted/parted.c:2096
+#, fuzzy
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr ""
+"check MENOR facer unha comprobación simple no sistema de "
+"ficheiros"
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "cp"
+
+#: parted/parted.c:2105
+#, 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"
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:2114
+#, 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:2120
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:2120
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:2123
+#, 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:2129
+msgid "mkfs"
+msgstr "mkfs"
+
+#: parted/parted.c:2132
+#, fuzzy
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+"mkfs MENOR TIPO-SF crear un sistema de ficheiros TIPO-SF na partición "
+"MENOR"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:2141
+#, 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:2147
+#, 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:2152
+msgid "mkpartfs"
+msgstr "mkpartfs"
+
+#: parted/parted.c:2155
+#, 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"
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr "move"
+
+#: parted/parted.c:2164
+#, fuzzy
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "move MENOR INICIO FIN move-la partición MENOR"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:2172
+#, fuzzy
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr "name MENOR NOME poñe-lo NOME á partición MENOR"
+
+#: parted/parted.c:2177
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"print [MENOR] amosa-la táboa de particións ou unha partición"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:2199
+#, fuzzy
+msgid "quit exit program"
+msgstr "quit saír do programa"
+
+#: parted/parted.c:2204
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:2207
+#, 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:2213
+msgid "resize"
+msgstr "resize"
+
+#: parted/parted.c:2216
+#, 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"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:2227
+#, fuzzy
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "rm MENOR borra-la partición MENOR"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:2235
+#, fuzzy
+msgid "select DEVICE choose the device to edit"
+msgstr "select DISPOSITIVO escolle-lo dispositivo a editar"
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:2243
+#, 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:2249
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:2252
+#, 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:2258
+#, fuzzy
+msgid "unit"
+msgstr "quit"
+
+#: parted/parted.c:2261
+#, fuzzy
+msgid "unit UNIT set the default unit to UNIT"
+msgstr "quit saír do programa"
+
+#: parted/parted.c:2266
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:2269
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:2273
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "Non se atopou o dispositivo."
+
+#: parted/parted.c:2412
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:2450
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Non esqueza actualizar /etc/fstab, se é necesario.\n"
+
+#: parted/ui.c:160
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:163
+#, 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:168
+#, 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:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:372
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:377
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:420
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:523
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:1024
+msgid "Expecting a partition number."
+msgstr "Espérase un número de partición."
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "A partición non existe."
+
+#: parted/ui.c:1053
+msgid "Expecting a file system type."
+msgstr "Espérase un tipo de sistema de ficheiros."
+
+#: parted/ui.c:1060
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Tipo de sistema de ficheiros \"%s\" descoñecido."
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr "Espérase un tipo de etiqueta de disco."
+
+#: parted/ui.c:1178
+msgid "Can't create any more partitions."
+msgstr "Non se poden crear máis particións."
+
+#: parted/ui.c:1188
+msgid "Expecting a partition type."
+msgstr "Espérase un tipo de partición."
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr "on"
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr "off"
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "OPCIÓNs:"
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "COMANDOs:"
+
+#: parted/ui.c:1445
+#, c-format
+msgid "Using %s\n"
+msgstr "Usando %s\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "onde sexa necesario, pedi-la intervención do usuario"
+
+#, 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 ""
+#~ "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"
+
+#~ 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 "Could not read geometry of %s - %s."
+#~ msgstr "Non se puido le-la xeometría de %s - %s."
+
+#~ 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 "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 "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 create a partition at %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Solicitou crear unha partición en %.3f-%.3fMb. O máis semellante que pode "
+#~ "manexar Parted é %.3f-%.3fMb."
+
+#~ 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 "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/parted-1.8.7/po/id.gmo b/parted-1.8.7/po/id.gmo
new file mode 100644
index 0000000..d69447c
--- /dev/null
+++ b/parted-1.8.7/po/id.gmo
Binary files differ
diff --git a/parted-1.8.7/po/id.po b/parted-1.8.7/po/id.po
new file mode 100644
index 0000000..c301da5
--- /dev/null
+++ b/parted-1.8.7/po/id.po
@@ -0,0 +1,3405 @@
+# Pesan Bahasa Indonesia untuk GNU parted
+# Copyright (C) 2006 Free Software Foundation, Inc.
+# This file is distributed under the same license as the GNU parted package.
+# Arif E. Nugroho <arif_endro@yahoo.com>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: GNU parted 1.8.1\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2007-05-09 17:02-0400\n"
+"PO-Revision-Date: 2006-12-24 22:00+0700\n"
+"Last-Translator: Arif E. Nugroho <arif_endro@yahoo.com>\n"
+"Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Tipe filesystem tidak diketahui \"%s\"."
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+#, fuzzy
+msgid "Invalid range end"
+msgstr "nomor tidak valid."
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Error membuka %s: %s"
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, 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:411 libparted/arch/linux.c:1431
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s selama pencarian untuk dibaca pada %s"
+
+#: libparted/arch/beos.c:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s selama pembacaan pada %s"
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, 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:496 libparted/arch/linux.c:1570
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s selama pencarian untuk menulis pada %s"
+
+#: libparted/arch/beos.c:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s selama penulisan pada %s"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "Terlalu banyak bad pages."
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr "Tidak dapat membuka %s."
+
+#: libparted/arch/gnu.c:114
+msgid "Unable to probe store."
+msgstr "Tidak dapat memprobe store."
+
+#: libparted/arch/gnu.c:352
+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:369
+#, 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:380 parted/parted.c:2443
+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:772
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s mencoba untuk mensinkronisasi %s pada disk"
+
+#: libparted/arch/linux.c:408
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Tidak dapat memperoleh statistik perangkat %s - %s."
+
+#: libparted/arch/linux.c:523
+#, 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 default ukuran sektor (%lld)."
+
+#: libparted/arch/linux.c:539
+#, c-format
+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"
+
+#: libparted/arch/linux.c:579
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Tidak dapat menentukan ukuran dari %s (%s)."
+
+#: libparted/arch/linux.c:668
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Tidak dapat memperoleh identitas dari perangkat %s - %s"
+
+#: libparted/arch/linux.c:677
+msgid "Generic IDE"
+msgstr "IDE umum"
+
+#: libparted/arch/linux.c:698
+#, 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:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Error menginisialisasi perangkat SCSI %s - %s"
+
+#: libparted/arch/linux.c:928
+#, c-format
+msgid ""
+"The device %s has zero length, and can't 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:1032
+#, 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:1110
+msgid "DAC960 RAID controller"
+msgstr "DAC960 RAID controller"
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr "Perangkat Promise SX8 SATA"
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr "IBM S390 DASD drive"
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr "IBM iSeries Virtual DASD"
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr "ATARAID Controller"
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr "I2O Controller"
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr "Mode-Pengguna Linux UBD"
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr "Linux device-mapper"
+
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "Tidak diketahui"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "ped_device_new() Tipe perangkat tidak disupport"
+
+#: libparted/arch/linux.c:2083
+#, 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:2262
+#, 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/arch/linux.c:2368
+#, c-format
+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."
+
+#: libparted/cs/geom.c:162
+msgid "Can't have the end before the start!"
+msgstr "Tidak dapat memiliki akhir sebelum start!"
+
+#: 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:366
+#, 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:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr "Mengecheck bad blocks"
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "Tidak dapat membuka %s - disk label tidak diketahui"
+
+#: libparted/disk.c:471
+#, 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:598
+#, 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:1075
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "%s disk label tidak mensupport partisi extended."
+
+#: libparted/disk.c:1634
+#, 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:1647
+msgid "Too many primary partitions."
+msgstr "Terlalu banyak primary partisi."
+
+#: libparted/disk.c:1656
+#, 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:1680
+#, 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:1690
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Tidak dapat memiliki partisi logical diluar dari partisi extended."
+
+#: libparted/disk.c:1715
+#, 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:1725 libparted/disk.c:1779 libparted/disk.c:1945
+msgid "Can't have overlapping partitions."
+msgstr "Tidak dapat memiliki partisi yang beroverlap."
+
+#: libparted/disk.c:1733
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Tidak dapat memiliki primary partisi didalam sebuah partisi extended."
+
+#: libparted/disk.c:2140
+msgid "metadata"
+msgstr "metadata"
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "free"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "extended"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "logical"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "primary"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "boot"
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr "root"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "tersembunyi"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2190
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "flag partisi tidak diketahui, %d."
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "Informasi"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "Peringatan"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "Error"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "Fatal"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "Bug"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr "Tidak ada Implementasi"
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr "Betulkan"
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "Ya"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "Tidak"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "Coba"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "Hiraukan"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "Batal"
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org 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/filesys.c:384
+msgid "Could not detect file system."
+msgstr "Tidak dapat mendeteksi filesystem."
+
+#: libparted/filesys.c:395
+msgid "The file system is bigger than its volume!"
+msgstr "File system lebih besar dari volumenya!"
+
+#: libparted/filesys.c:403
+#, c-format
+msgid "Support for opening %s file systems is not implemented yet."
+msgstr "Support untuk membuka file systems %s belum diimplementasikan."
+
+#: libparted/filesys.c:445
+#, c-format
+msgid "Support for creating %s file systems is not implemented yet."
+msgstr "Support untuk membuat file systems %s belum diimplementasikan."
+
+#: libparted/filesys.c:505
+#, c-format
+msgid "Support for checking %s file systems is not implemented yet."
+msgstr "Support untuk mengecheck file systems %s belum diimplementasikan."
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr "raw block copying"
+
+#: libparted/filesys.c:582
+msgid "growing file system"
+msgstr "memperbesar file system"
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr "Tidak dapat menyalin kedalam partisi yang overlap."
+
+#: libparted/filesys.c:644
+#, c-format
+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."
+
+#: libparted/filesys.c:658
+#, c-format
+msgid "Support for copying %s file systems is not implemented yet."
+msgstr "Support untuk menyalin filesystem %s belum diimplementasikan."
+
+#: libparted/filesys.c:696
+#, c-format
+msgid "Support for resizing %s file systems is not implemented yet."
+msgstr "Support untuk men-resize filesystem %s belum diimplementasikan."
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, fuzzy
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr "File system lebih besar dari volumenya!"
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "check"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, fuzzy
+msgid ""
+"The reiserfs file system passed a basic check. For a more comprehensive "
+"check, run reiserfsck --check."
+msgstr ""
+"File system ext2 lolos dari pengecheckan dasar. Untuk lebih komprehensif "
+"check, gunakan aplikasi e2fsck."
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, fuzzy
+msgid "Sorry, can't move the start of reiserfs partitions yet."
+msgstr "Maaf, tidak dapat memindahkan awal dari partisi ext2!"
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+msgid "shrinking"
+msgstr "mengecilkan"
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "Peringatan"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, fuzzy, c-format
+msgid "Device is too small for %lu blocks."
+msgstr "File system terlalu kecil untuk ext2."
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "Support untuk membuat file systems %s belum diimplementasikan."
+
+#: libparted/labels/aix.c:148
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "Support untuk membuat file systems %s belum diimplementasikan."
+
+#: libparted/labels/aix.c:161
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr "Support untuk membuat file systems %s belum diimplementasikan."
+
+#: libparted/labels/aix.c:171
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr "Support untuk membuat file systems %s belum diimplementasikan."
+
+#: libparted/labels/aix.c:189
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr "Support untuk membuat file systems %s belum diimplementasikan."
+
+#: libparted/labels/aix.c:199
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr "Support untuk membuat file systems %s belum diimplementasikan."
+
+#: libparted/labels/bsd.c:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Tidak dapat memenuhi semua constraints pada partisi."
+
+#: libparted/labels/bsd.c:526
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Tidak dapat mengalokasikan sebuah slot untuk bsd disklabel."
+
+#: libparted/labels/dasd.c:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "Tidak dapat menentukan ukuran dari %s (%s)."
+
+#: libparted/labels/dasd.c:781
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Tidak dapat mengalokasikan sebuah slot untuk bsd disklabel."
+
+#: libparted/labels/dos.c:827
+#, 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:855
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Table partisi tidak valid - rekursif partisi pada %s."
+
+#: libparted/labels/dos.c:1318
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "Partisi extended tidak dapat disembunyikan pada msdos disk labels."
+
+#: libparted/labels/dos.c:1958
+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:190
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%s tidak memiliki partisi extended (volume header partisi)."
+
+#: libparted/labels/dvh.c:313
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr "Checksum salah, mengindikasikan bahwa tabel partisi corrupt."
+
+#: libparted/labels/dvh.c:616
+msgid "Only primary partitions can be root partitions."
+msgstr "Hanya primary partisi yang dapat menjadi partisi root."
+
+#: libparted/labels/dvh.c:630
+msgid "Only primary partitions can be swap partitions."
+msgstr "Hanya primary partisi yang dapat menjadi partisi swap."
+
+#: libparted/labels/dvh.c:644
+msgid "Only logical partitions can be a boot file."
+msgstr "Hanya logical partisi yang dapat menjadi boot file."
+
+#: libparted/labels/dvh.c:721
+msgid "Only logical partitions (boot files) have a name."
+msgstr "Hanya logical partisi (boot files) yang memiliki nama."
+
+#: libparted/labels/dvh.c:812
+msgid "Too many primary partitions"
+msgstr "Terlalu banyak primary partisi"
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "%s selama penulisan pada %s"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, fuzzy, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr "Disk %s: %s\n"
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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:648
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+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:698
+#, 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:827
+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:862
+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 "
+"backup tersebut yang akan digunakan"
+
+#: libparted/labels/gpt.c:870
+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/mac.c:181
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Signature tidak valid %x untuk disklabels Mac."
+
+#: libparted/labels/mac.c:226
+msgid "Partition map has no partition map entry!"
+msgstr "Map partisi tidak memiliki masukan untuk map partisi!"
+
+#: libparted/labels/mac.c:273
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s terlalu kecil untuk sebuah disklabel Mac!"
+
+#: libparted/labels/mac.c:532
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Partisi %d memiliki signature yang tidak valid %x."
+
+#: libparted/labels/mac.c:550
+#, 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:580
+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:597
+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:611
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "Daerah boot partisi tidak menggunakan seluruh partisi."
+
+#: libparted/labels/mac.c:622
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "Daerah data partisi tidak menggunakan seluruh partisi."
+
+#: libparted/labels/mac.c:675
+#, 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:688
+#, 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:736
+msgid "No valid partition map found."
+msgstr "Tidak ditemukan map partisi yang valid."
+
+#: libparted/labels/mac.c:795
+#, 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:822
+msgid "Weird! There are 2 partitions map entries!"
+msgstr "Aneh! Ada 2 masukan map partisi!"
+
+#: libparted/labels/mac.c:1347
+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:1443
+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:354
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Tabel partisi tidak valid pada %s."
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, 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:791
+msgid "Can't add another partition."
+msgstr "Tidak dapat menambah partisi yang lain."
+
+#: libparted/labels/rdb.c:162
+#, 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:497
+#, 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:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s : Loop terdeteksi pada block %d."
+
+#: libparted/labels/rdb.c:600
+#, 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:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s : Gagal untuk men-list bad blocks."
+
+#: libparted/labels/rdb.c:697
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s : Gagal untuk men-list block partisi."
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s : Gagal untuk men-list file system blocks."
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s : Gagal untuk men-list boot blocks."
+
+#: libparted/labels/rdb.c:740
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Gagal untuk menulis block partisi pada %d."
+
+#: libparted/labels/rdb.c:1069
+msgid "Unable to allocate a partition number."
+msgstr "Tidak dapat mengalokasikan sebuah nomor partisi."
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr "Sun disk label terdeteksi terkorupsi."
+
+#: libparted/labels/sun.c:266
+#, 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:288
+#, 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:442
+#, 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:737
+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:752
+msgid "Sun disk label is full."
+msgstr "Sun disk label sudah penuh"
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr "Kehabisan memori"
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr "Tidak dapat mendapatkan ukuran unit untuk spesial unit 'COMPAT'."
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "\"%s\" memiliki syntax yang tidak valid untuk lokasi."
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "Nilai head maksimum adalah %d."
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "Nilai maksimum dari sektor adalah %d."
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "Lokasi %s terletak diluar dari perangkat %s."
+
+#: libparted/unit.c:527
+msgid "Invalid number."
+msgstr "nomor tidak valid."
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s : Gagal untuk men-list block partisi."
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, fuzzy, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s : Gagal untuk men-list boot blocks."
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, fuzzy, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s : Loop terdeteksi pada block %d."
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, fuzzy, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s : Loop terdeteksi pada block %d."
+
+#: libparted/fs/amiga/amiga.c:72
+#, fuzzy, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s : Gagal untuk men-list bad blocks."
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, fuzzy, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s : Checksum pada block %llu dengan tipe %s tidak baik."
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s : Loop terdeteksi pada block %d."
+
+#: libparted/fs/amiga/amiga.c:278
+#, fuzzy, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s : Gagal untuk men-list bad blocks."
+
+#: libparted/fs/amiga/amiga.c:289
+#, fuzzy, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s : Tidak menemukan rdb block, seharusnya tidak pernah terjadi."
+
+#: libparted/fs/amiga/amiga.c:318
+#, fuzzy, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s : Gagal untuk men-list block partisi."
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr "group descriptors tidak konsistent!"
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+msgid "File system full!"
+msgstr "File system full!"
+
+#: libparted/fs/ext2/ext2.c:686
+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?"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+msgid "File system has errors! You should run e2fsck."
+msgstr "File system memiliki errors! Anda seharusnya menjalankan e2fsck."
+
+#: libparted/fs/ext2/ext2.c:711
+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."
+
+#: libparted/fs/ext2/ext2.c:731
+msgid "File system has an incompatible feature enabled."
+msgstr "File system memiliki sebuah feature aktif yang tidak kompatibel."
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr "Error mengalokasikan buffer cache."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+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!"
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr "Tidak cukup free inodes!"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+msgid "File system is too full to remove a group!"
+msgstr "File system terlalu penuh untuk menghapus sebuah group!"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+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!"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr "menambahkan groups"
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, c-format
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, c-format
+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"
+
+#: libparted/fs/ext2/ext2_resize.c:666
+msgid "File system was not cleanly unmounted! You should run e2fsck."
+msgstr ""
+"File system tidak di-unmount secara bersih! Anda seharusnya menjalankan "
+"e2fsck."
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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'."
+
+#: libparted/fs/ext2/ext2_resize.c:691
+#, 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 ""
+"Sebuah operasi perubahan ukuran di file system ini akan menggunakan kode "
+"PERCOBAAN\n"
+"yang mungkin akan mengkorupsi file system ini (walaupun hal ini belum pernah "
+"terjadi\n"
+"sebelumnya).\n"
+"Anda seharusnya melakukan backup terlebih dahulu terhadap data anda dan "
+"menjalankan 'e2fsck -f' sesudahnya."
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+msgid "Cross-linked blocks found! Better go run e2fsck first!"
+msgstr ""
+"Cross-linked blocks ditemukan! Lebih baik menjalankan e2fsck terlebih daulu!"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "Block %i tidak memiliki reference? Aneh."
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "Block %i seharusnya tidak memiliki tanda (%d, %d)!"
+
+#: libparted/fs/ext2/interface.c:186
+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."
+
+#: libparted/fs/ext2/interface.c:203
+msgid "Sorry, can't move the start of ext2 partitions yet!"
+msgstr "Maaf, tidak dapat memindahkan awal dari partisi ext2!"
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr "Tidak dapat menflush buffer cache!"
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr "menulis per-group metadata"
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr "File system terlalu kecil untuk ext2."
+
+#: libparted/fs/fat/calc.c:135
+#, c-format
+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."
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:308
+#, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr "Partisi terlalu besar/kecil untuk sebuah file system %s."
+
+#: libparted/fs/fat/fat.c:474
+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."
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr "Tidak ada konfigurasi yang mungkin untuk tipe FAT ini."
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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)."
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:874
+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/resize.c:159
+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."
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr "Error menulis pada direktori root."
+
+#: libparted/fs/fat/resize.c:489
+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"
+
+#: libparted/fs/fat/resize.c:492
+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)."
+
+#: libparted/fs/fat/resize.c:500
+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."
+
+#: libparted/fs/fat/resize.c:504
+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."
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr "Maukah anda menggunakan FAT32?"
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: libparted/fs/fat/resize.c:551
+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."
+
+#: libparted/fs/fat/resize.c:567
+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."
+
+#: libparted/fs/fat/resize.c:580
+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!"
+
+#: 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:139
+#, 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:164
+#, 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:213
+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:219
+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:225
+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:235
+msgid "File system is FAT12, which is unsupported."
+msgstr "File system adalah FAT12, dimana file system ini tidak disupport."
+
+#: libparted/fs/fat/bootsector.c:411
+#, 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/fat/count.c:152
+#, c-format
+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"
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:174
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:203
+#, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr "%s adalah %dk, tetapi ini memiliki %d clusters (%dk)."
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:269
+#, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "fat_table_set: cluster %ld diluar file system"
+
+#: libparted/fs/fat/table.c:301
+#, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "fat_table_get: cluster %ld diluar file system"
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "fat_table_alloc_cluster: tidak ada cluster yang kosong"
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Linux swap signature tidak diketahui '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:318
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Linux swap signature tidak diketahui '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:358
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Linux swap signature tidak diketahui '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr "Terlalu banyak bad pages."
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr "File system memiliki kerusakan."
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr "Bad blocks tidak dapat dibaca."
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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 !"
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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!"
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+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."
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr "Mencoba untuk membaca file HFS dengan CNID %X dibelakang EOF."
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr "Tidak dapat menemukan sekto %lli dari file HFS dengan CNID %X."
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+msgid "Trying to write HFS file with CNID %X behind EOF."
+msgstr "Mencoba untuk menulis file HFS dengan CNID %X dibelakang EOF."
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+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."
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr "Mencoba untuk membaca file HFS+ dengan CNID %X dibelakang EOF."
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr "Tidak dapat menemukan sekto %lli dari file HFS+ dengan CNID %X."
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+msgid "Trying to write HFS+ file with CNID %X behind EOF."
+msgstr "Mencoba untuk menulis file HFS+ dengan CNID %X dibelakang EOF."
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr "Maaf, HFS tidak dapat di-resize."
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr "Data relocation telah gagal."
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr "Data relocation meninggalkan beberapa data pada akhir dari volume."
+
+#: libparted/fs/hfs/hfs.c:320
+msgid "writing HFS Master Directory Block"
+msgstr "menulis HFS Master Directory Block"
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr "Tanda tangan HFS[+X] tidak valid telah ditemukan ketika membuka."
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr "HFS+ versi %d tidak disupport."
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr "HFS+ versi %d tidak disupport."
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr "Data relocation meninggalkan beberapa data pada akhir dari volume."
+
+#: libparted/fs/hfs/hfs.c:720
+msgid "Error while writing the allocation file."
+msgstr "Error ketika menulis alokasi file."
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr "Error ketika menulis bagian kompatibilitas dari alokasi file."
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr "menulis HFS+ Volume Header"
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr "Sebuah error terjadi ketika mencari mandatory bad blocks file."
+
+#: libparted/fs/hfs/hfs.c:904
+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."
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr "Maaf, HFS+ tidak dapat di-resize dengan cara itu saat ini."
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr "mengecilkan embedded HFS+ volume"
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr "Resizing dari HFS+ volume telah gagal."
+
+#: libparted/fs/hfs/hfs.c:998
+msgid "shrinking HFS wrapper"
+msgstr "mengecilkan HFS wrapper"
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr "Update dari HFS wrapper telah gagal."
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+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."
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr "Daftar bad block header checksum."
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+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)."
+
+#: libparted/fs/hfs/journal.c:260
+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."
+
+#: libparted/fs/hfs/journal.c:271
+msgid "Journal offset or size is not multiple of the sector size."
+msgstr "Ukuran atau offset dari journal bukan kelipatan dari ukuran sektor"
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr "Nilai magic tidak benar dalam header journal."
+
+#: libparted/fs/hfs/journal.c:302
+msgid "Journal size mismatch between journal info block and journal header."
+msgstr ""
+"Ukuran journal tidak cocok diantara journal info block dan journal header."
+
+#: libparted/fs/hfs/journal.c:314
+msgid "Some header fields are not multiple of the sector size."
+msgstr "Beberapa fields header bukan kelipatan dari ukuran sektor."
+
+#: libparted/fs/hfs/journal.c:323
+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."
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr "Journal checksum jelek."
+
+#: libparted/fs/hfs/journal.c:353
+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."
+
+#: libparted/fs/hfs/journal.c:381
+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."
+
+#: libparted/fs/hfs/probe.c:51
+#, 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."
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr "Sebuah extent tidak dapat direlokasikan."
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+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!"
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr "HFS volume tidak memiliki catalog file. Ini sangat tidak biasa!"
+
+#: libparted/fs/hfs/reloc.c:475
+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!"
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+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."
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+msgid "Could not cache the file system in memory."
+msgstr "Tidak dapat men-cache filesystem dalam memori."
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr "Daftar bad blocks tidak dapat diload."
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr "Terjadi error ketika extent relocation."
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr "HFS+ volume tidak memiliki catalog file. Ini sangat tidak biasa!"
+
+#: libparted/fs/hfs/reloc_plus.c:619
+msgid "This HFS+ volume has no extents overflow file. This is quite unusual!"
+msgstr "HFS+ volume tidak memiliki extent overflow file. Ini tidak biasa!"
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr "tampilkan pesan bantuan ini"
+
+#: parted/parted.c:95
+#, fuzzy
+msgid "lists partition layout on all block devices"
+msgstr "daftar tabel partisi dari seluruh perangkat yang terdeteksi"
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr "jangan menanyakan intervensi pengguna"
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr "tampilkan versi dari program ini"
+
+#: parted/parted.c:111
+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:114
+msgid "LABEL-TYPE is one of: "
+msgstr "TIPE-LABEL adalah salah satu dari: "
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr "TANDA adalah salah satu dari: "
+
+#: parted/parted.c:116
+msgid "UNIT is one of: "
+msgstr "SATUAN adalah salah satu dari: "
+
+#: parted/parted.c:117
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "TIPE-PART adalah salah satu dari: primary, logical, extended\n"
+
+#: parted/parted.c:119
+msgid "FS-TYPE is one of: "
+msgstr "TIPE-FS adalah salah satu dari: "
+
+#: parted/parted.c:120
+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:123
+msgid "STATE is one of: on, off\n"
+msgstr "STATUS adalah salah satu dari: on, off\n"
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "PERANGKAT biasanya menggunakan nama /dev/hda atau /dev/sda\n"
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr "NAMA adalah kata apapun yang anda inginkan\n"
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr "Partisi harus memiliki salah satu dari TIPE-FS berikut ini: "
+
+#: parted/parted.c:130
+#, 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 ""
+"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, tetapi TANPA "
+"ADANYA GARANSI; bahkan untuk PENJUALAN atau KESESUAIAN UNTUK TUJUAN "
+"TERTENTU. Lihat GNU General Public License untuk informasi yang lebih "
+"detail.\n"
+
+#: parted/parted.c:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(waktu tersisa %.2d:%.2d)"
+
+#: parted/parted.c:195
+#, 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:211
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Partisi pada %s sedang digunakan."
+
+#: parted/parted.c:223
+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?"
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+msgid "Partition number?"
+msgstr "Nomor partisi?"
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr "Perangkat asal?"
+
+#: parted/parted.c:504
+msgid "Source partition number?"
+msgstr "Nomor partisi asal?"
+
+#: parted/parted.c:509
+msgid "Can't copy an extended partition."
+msgstr "Tidak dapat mengkopi sebuah partisi extended."
+
+#: parted/parted.c:515
+msgid "Destination partition number?"
+msgstr "Nomor partisi tujuan?"
+
+#: parted/parted.c:615
+msgid "New disk label type?"
+msgstr "Tipe disk label baru?"
+
+#: parted/parted.c:656
+msgid "File system?"
+msgstr "File system?"
+
+#: parted/parted.c:707 parted/parted.c:878
+msgid "Partition type?"
+msgstr "Tipe partisi?"
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+msgid "Partition name?"
+msgstr "Nama partisi?"
+
+#: parted/parted.c:722 parted/parted.c:895
+msgid "File system type?"
+msgstr "Tipe file system?"
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr "Awal?"
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr "Akhir?"
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+"Anda meminta sebuah partisi dari %s sampai %s.\n"
+"Pendekatan Parted yang paling dekat adalah %s - %s. Apakah ini dapat "
+"diterima oleh anda?"
+
+#: parted/parted.c:890
+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?"
+
+#: parted/parted.c:1050
+msgid "Can't move an extended partition."
+msgstr "Tidak dapat memindahkan sebuah partisi extended."
+
+#: parted/parted.c:1079
+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?"
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr "Minor: %d\n"
+
+#: parted/parted.c:1228
+#, c-format
+msgid "Flags: %s\n"
+msgstr "Tanda: %s\n"
+
+#: parted/parted.c:1229
+#, c-format
+msgid "File System: %s\n"
+msgstr "File System: %s\n"
+
+#: parted/parted.c:1230
+msgid "Size: "
+msgstr "Ukuran: "
+
+#: parted/parted.c:1235
+msgid "Minimum size: "
+msgstr "Ukuran minimal: "
+
+#: parted/parted.c:1238
+msgid "Maximum size: "
+msgstr "Ukuran maksimal: "
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr "Model: %s (%s)\n"
+
+#: parted/parted.c:1364
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "Disk %s: %s\n"
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "Ukuran sektor (logical/physical): %lldB/%lldB\n"
+
+#: parted/parted.c:1383
+#, 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:1392
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "Tabel Partisi: %s\n"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr "Nomor"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Start"
+msgstr "Awal"
+
+#: parted/parted.c:1407 parted/parted.c:1410
+msgid "End"
+msgstr "Akhir"
+
+#: parted/parted.c:1410
+msgid "Size"
+msgstr "Ukuran"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr "Tipe"
+
+#: parted/parted.c:1416
+msgid "File system"
+msgstr "File system"
+
+#: parted/parted.c:1419
+msgid "Name"
+msgstr "Nama"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr "Tanda"
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr "Ruang Kosong"
+
+#: parted/parted.c:1624
+#, 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:1663
+msgid "searching for file systems"
+msgstr "mencari untuk file systems"
+
+#: parted/parted.c:1877
+msgid "New device?"
+msgstr "Perangkat baru?"
+
+#: parted/parted.c:1902
+msgid "Flag to Invert?"
+msgstr "Tanda yang akan dirubah?"
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr "Status baru?"
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr "Satuan?"
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "check"
+
+#: parted/parted.c:2096
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr ""
+"check NOMOR melakukan penge-check-an sederhana "
+"pada file system"
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "salin"
+
+#: parted/parted.c:2105
+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"
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "bantuan"
+
+#: parted/parted.c:2114
+#, fuzzy
+msgid ""
+"help [COMMAND] print general help, or help on "
+"COMMAND"
+msgstr ""
+"bantuan [PERINTAH] menampilkan bantuan umum, atau "
+"bantuan pada PERINTAH"
+
+#: parted/parted.c:2120
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:2120
+msgid "mktable"
+msgstr "mktable"
+
+#: parted/parted.c:2123
+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:2129
+msgid "mkfs"
+msgstr "mkfs"
+
+#: parted/parted.c:2132
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+"mkfs NOMOR TIPE-FS membuat TIPE-FS filesystem pada "
+"partisi NOMOR"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:2141
+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:2147
+#, 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 membuat sebuah partisi tanpa membuat sebuah file system baru pada "
+"partisi. TIPE-FS mungkin dispesifikasikan untuk mengeset ID partisi.\n"
+
+#: parted/parted.c:2152
+msgid "mkpartfs"
+msgstr "mkpartfs"
+
+#: parted/parted.c:2155
+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"
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr "pindah"
+
+#: parted/parted.c:2164
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "pindah NOMOR AWAL AKHIR memindahkan partisi NOMOR"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "nama"
+
+#: parted/parted.c:2172
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr ""
+"nama NOMOR NAMA memberi nama partisi NOMOR dengan "
+"NAMA"
+
+#: parted/parted.c:2177
+msgid "print"
+msgstr "cetak"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr "daftar tabel partisi dari seluruh perangkat yang terdeteksi"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "berhenti"
+
+#: parted/parted.c:2199
+msgid "quit exit program"
+msgstr "berhenti keluar dari program"
+
+#: parted/parted.c:2204
+msgid "rescue"
+msgstr "selamatkan"
+
+#: parted/parted.c:2207
+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:2213
+msgid "resize"
+msgstr "resize"
+
+#: parted/parted.c:2216
+msgid ""
+"resize NUMBER START END resize partition NUMBER and its "
+"file system"
+msgstr ""
+"resize NOMOR AWAL AKHIR merubah ukuran partisi NOMOR dan "
+"isi filesystemnya"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "hapus"
+
+#: parted/parted.c:2227
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "hapus NOMOR hapus partisi NOMOR"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "pilih"
+
+#: parted/parted.c:2235
+msgid "select DEVICE choose the device to edit"
+msgstr ""
+"pilih PERANGKAT pilih perangkat yang akan di edit"
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:2243
+msgid ""
+"set NUMBER FLAG STATE change the FLAG on partition NUMBER"
+msgstr ""
+"set NOMOR FLAG STATUS merubah tanda pada partisi NOMOR"
+
+#: parted/parted.c:2249
+msgid "toggle"
+msgstr "ubah"
+
+#: parted/parted.c:2252
+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:2258
+msgid "unit"
+msgstr "satuan"
+
+#: parted/parted.c:2261
+msgid "unit UNIT set the default unit to UNIT"
+msgstr ""
+"satuan SATUAN mengeset satuan default pada SATUAN"
+
+#: parted/parted.c:2266
+msgid "version"
+msgstr "versi"
+
+#: parted/parted.c:2269
+#, fuzzy
+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:2273
+#, fuzzy
+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:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "Tidak ditemukan perangkat"
+
+#: parted/parted.c:2412
+#, fuzzy
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr "PERINGATAN: Anda bukan superuser. Perhatikan permisi anda.\n"
+
+#: parted/parted.c:2450
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Jangan lupa untuk meng-update /etc/fstab, jika diperlukan.\n"
+
+#: parted/ui.c:160
+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:163
+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:168
+#, 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"
+"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"
+"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 beberapa informasi tambahan mengenai setting yang telah anda lakukan "
+"yang menurut anda penting.\n"
+
+#: parted/ui.c:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+#, fuzzy
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"Error: SEGV_MAPPER (Alamat tidak di map ke objek)"
+
+#: parted/ui.c:372
+#, fuzzy
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"Error: SEGV_ACCER (Permisi tidak sah untuk objek yang dimap)"
+
+#: parted/ui.c:377
+#, fuzzy
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"Error: Sebuah sinyal SIGSEGV umum telah ditemui."
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"Error: FPE_INTDIV (Integer: dibagi dengan nol)"
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+
+#: parted/ui.c:420
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"Error: FPE_FLTDIV (Float: dibagi dengan nol)"
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"Error: FPE_FLTRES (Float: hasil tidak eksak)"
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"Error: FPE_FLTINV (Float: operasi tidak valid)"
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript diluar dari jangkauan)"
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"Error: Sebuah sinyal SIGFPE umum telah ditemukan."
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"Error: ILL_ILLADDR (Illegal mode pengalamatan)"
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+
+#: parted/ui.c:523
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"Error: Sebuah sinyal SIGILL umum telah ditemukan."
+
+#: parted/ui.c:1024
+msgid "Expecting a partition number."
+msgstr "Memperkirakan sebuah nomor partisi."
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "Partisi tidak ada."
+
+#: parted/ui.c:1053
+msgid "Expecting a file system type."
+msgstr "Memperkirakan sebuah tipe filesystem."
+
+#: parted/ui.c:1060
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Tipe filesystem tidak diketahui \"%s\"."
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr "Memperkirakan sebuah tipe disk label."
+
+#: parted/ui.c:1178
+msgid "Can't create any more partitions."
+msgstr "Tidak dapat membuat partisi lagi."
+
+#: parted/ui.c:1188
+msgid "Expecting a partition type."
+msgstr "Memperkirakan sebuah tipe partisi."
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr "nyala"
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr "mati"
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "OPSI:"
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "PERINTAH:"
+
+#: parted/ui.c:1445
+#, c-format
+msgid "Using %s\n"
+msgstr "Menggunakan perangkat %s\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#~ 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/parted-1.8.7/po/insert-header.sin b/parted-1.8.7/po/insert-header.sin
new file mode 100644
index 0000000..b26de01
--- /dev/null
+++ b/parted-1.8.7/po/insert-header.sin
@@ -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/parted-1.8.7/po/it.gmo b/parted-1.8.7/po/it.gmo
new file mode 100644
index 0000000..3031ccc
--- /dev/null
+++ b/parted-1.8.7/po/it.gmo
Binary files differ
diff --git a/parted-1.8.7/po/it.po b/parted-1.8.7/po/it.po
new file mode 100644
index 0000000..8f48665
--- /dev/null
+++ b/parted-1.8.7/po/it.po
@@ -0,0 +1,3307 @@
+# Italian translation for the parted package
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# Giuseppe Sacco <eppesuig@debian.org>, 2004-2006.
+#
+# Thanks to Danilo Piazzalunga and Claudio Gilardoni
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 1.7.0rc1\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2007-05-09 17:02-0400\n"
+"PO-Revision-Date: 2006-04-11 21:18+0200\n"
+"Last-Translator: Giuseppe Sacco <eppesuig@debian.org>\n"
+"Language-Team: Italian <tp@lists.linux.it>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=utf-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Tipo \"%s\" di file system sconosciuto."
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+#, fuzzy
+msgid "Invalid range end"
+msgstr "Numero non valido."
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Errore nell'apertura di %s: %s"
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, c-format
+msgid "Unable to open %s read-write (%s). %s has been opened read-only."
+msgstr ""
+"Non posso aprire %s in lettura/scrittura (%s). %s è stato aperto in sola "
+"lettura."
+
+#: libparted/arch/beos.c:411 libparted/arch/linux.c:1431
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s durante il posizionamento per la lettura su %s"
+
+#: libparted/arch/beos.c:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s durante la lettura su %s"
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, 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:496 libparted/arch/linux.c:1570
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s durante il posizionamento per la scrittura su %s"
+
+#: libparted/arch/beos.c:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s durante la scrittura su %s"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "Troppe pagine inutilizzabili."
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr "Impossibile aprire %s."
+
+#: libparted/arch/gnu.c:114
+msgid "Unable to probe store."
+msgstr "Impossibile rilevare il dispositivo di «storage»."
+
+#: libparted/arch/gnu.c:352
+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 è stato possibile rileggere la tabella delle partizioni, quindi si deve "
+"riavviare il computer prima di montare le partizioni modificate. È anche "
+"necessario installare nuovamente il «boot loader» prima del riavvio (il che "
+"può richiedere di montare le partizioni modificate.) Non è possibile fare "
+"entrambe! Quindi si avvii la macchina da un disco di ripristino e si "
+"reinstalli il «boot loader» da quel disco. Leggere la sezione 4 della "
+"documentazione utente di Parted per ulteriori informazioni."
+
+#: libparted/arch/gnu.c:369
+#, 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 vuol "
+"dire che Hurd non sa assolutamente nulla delle modifiche fatte. Riavviare il "
+"computer prima di fare qualsiasi cosa con %s."
+
+#: libparted/arch/gnu.c:380 parted/parted.c:2443
+msgid ""
+"You should reinstall your boot loader before rebooting. Read section 4 of "
+"the Parted User documentation for more information."
+msgstr ""
+"Si dovrebbe installare nuovamente il «boot loader» prima di riavviare. "
+"Leggere la sezione 4 della documentazione utente di Parted per ulteriori "
+"informazioni."
+
+#: libparted/arch/gnu.c:772
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s tentanto di fare il «sync» di %s sul disco"
+
+#: libparted/arch/linux.c:408
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Non posso fare lo «stat» del device %s - %s."
+
+#: libparted/arch/linux.c:523
+#, fuzzy, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+"Non è stato possibile determinare la dimensione del settore per %s: %s.\n"
+"Verrà utilizzata la dimensione predefinita·(%lld)."
+
+#: libparted/arch/linux.c:539
+#, fuzzy, c-format
+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 dimensione del settore logico per %s è %lld. In questo momento, non tutte "
+"le parti di GNU Parted la supportano e il relativo codice è ALTAMENTE "
+"SPERIMENTALE.\n"
+
+#: libparted/arch/linux.c:579
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Impossibile determinare la dimensione di %s (%s)."
+
+#: libparted/arch/linux.c:668
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Non posso identificare il device %s -%s"
+
+#: libparted/arch/linux.c:677
+msgid "Generic IDE"
+msgstr "IDE generico"
+
+#: libparted/arch/linux.c:698
+#, 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 multipli (%d) settori logici per ogni settore fisico.\n"
+"GNU Parted supporta questa configurazione in maniera SPERIMENTALE per alcune "
+"combinazioni di tipi di etichetta/file system, come GPT e ext2/3.\n"
+"Consultare il sito web per una documentazione aggiornata."
+
+#: libparted/arch/linux.c:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Errore nell'inizializzazione del device SCSI %s - %s"
+
+#: libparted/arch/linux.c:928
+#, c-format
+msgid ""
+"The device %s has zero length, and can't possibly store a file system or "
+"partition table. Perhaps you selected the wrong device?"
+msgstr ""
+"Il device %s ha dimensione zero e probabilmente non può contenere un file "
+"system o una tabella delle partizioni. È stato selezionato il device errato?"
+
+#: libparted/arch/linux.c:1032
+#, 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 è possibile determinare la geometria del file/device. Non si dovrebbe "
+"utilizzare parted a meno che non si sappia VERAMENTE cosa si sta facendo!"
+
+#: libparted/arch/linux.c:1110
+msgid "DAC960 RAID controller"
+msgstr "Controller RAID DAC960"
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr "Controller ATARAID"
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr "Controller I2O"
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr "User-Mode Linix UBD"
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr ""
+
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "Sconosciuto"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "ped_device_new() Tipo di device non supportato"
+
+#: libparted/arch/linux.c:2083
+#, 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 ""
+"C'è stato un errore nell'informare il kernel delle modifiche alla partizione "
+"%s -- %s. Questo vuol dire che Linux non sarà al corrente dei cambiamenti "
+"fatti a %s fino al prossimo riavvio -- quindi non montare o usare in alcun "
+"modo la partizione fino ad allora."
+
+#: libparted/arch/linux.c:2262
+#, 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 ""
+"Il kernel non è stato capace di rileggere la tabella delle partizioni su %s "
+"(%s). Questo vuol dire che Linux non sarà al corrente dei cambiamenti fatti "
+"fino al riavvio. Si dovrebbe riavviare il computer prima di fare qualsiasi "
+"cosa con %s."
+
+#: libparted/arch/linux.c:2368
+#, c-format
+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 ""
+"Il kernel non è stato capace di rileggere la tabella delle partizioni su %s "
+"(%s). Questo vuol dire che Linux non sarà al corrente dei cambiamenti fatti "
+"fino al riavvio. Si dovrebbe riavviare il computer prima di fare qualsiasi "
+"cosa con %s."
+
+#: libparted/cs/geom.c:162
+msgid "Can't have the end before the start!"
+msgstr "Non si puè avere la fine prima dell'inizio!"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "Non si può avere una partizione al di fuori del disco!"
+
+#: libparted/cs/geom.c:366
+#, 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 %s."
+
+#: libparted/cs/geom.c:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr "controllo dei blocchi difettosi"
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "Impossibile aprire %s - etichetta del disco sconosciuta."
+
+#: libparted/disk.c:471
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s. Perhaps it was compiled "
+"read-only."
+msgstr ""
+"Questo libparted non supporta la scrittura per %s. Forse è stato compilato "
+"per la sola lettura."
+
+#: libparted/disk.c:598
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "La partizione %d è %s, ma il file system è %s."
+
+#: libparted/disk.c:1075
+#, 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:1634
+#, 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:1647
+msgid "Too many primary partitions."
+msgstr "Troppe partizioni primarie."
+
+#: libparted/disk.c:1656
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"Non è possibile aggiungere una partizione logica a %s perché non ci sono "
+"partizioni estese."
+
+#: libparted/disk.c:1680
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Non è possibile avere più di una partizione estesa su %s."
+
+#: libparted/disk.c:1690
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr ""
+"Non è possibile avere partizioni logiche al di fuori della partizione estesa."
+
+#: libparted/disk.c:1715
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr ""
+"Non è possibile avere una partizione logica esterna alla partizione estesa "
+"su %s."
+
+#: libparted/disk.c:1725 libparted/disk.c:1779 libparted/disk.c:1945
+msgid "Can't have overlapping partitions."
+msgstr "Non è possibile avere partizioni che si sovrappongono."
+
+#: libparted/disk.c:1733
+msgid "Can't have a primary partition inside an extended partition."
+msgstr ""
+"Non è possibile avere una partizione primaria all'interno di una estesa."
+
+#: libparted/disk.c:2140
+msgid "metadata"
+msgstr "metadati"
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "libero"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "estesa"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "logica"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "primaria"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "avvio"
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr "root"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "nascosta"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2190
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Flag di partizione %d sconosciuto."
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "Informazione"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "Avviso"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "Errore"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "Irrimediabile"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "Bug"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr "Non implementato"
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr "Fix"
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "Sì"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "No"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "Riprova"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "Ignora"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "Annulla"
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org containing at least the version (%s) and the following "
+"message: "
+msgstr ""
+"È stato trovato un bug di GNU parted. Controllare il sito web di parted "
+"http://www.gnu.org/software/parted/parted.html per maggiori informazioni su "
+"cosa è utile comunicare nelle segnalazioni. Si segnali un bug a bug-"
+"parted@gnu.org specificando la versione (%s) e il seguente messaggio: "
+
+#: libparted/filesys.c:384
+msgid "Could not detect file system."
+msgstr "Non è stato possibile rilevare il file system."
+
+#: libparted/filesys.c:395
+msgid "The file system is bigger than its volume!"
+msgstr "Il file system è più ampio del proprio volume!"
+
+#: libparted/filesys.c:403
+#, c-format
+msgid "Support for opening %s file systems is not implemented yet."
+msgstr ""
+"Il supporto per aprire un file system %s non è ancora stato implementato."
+
+#: libparted/filesys.c:445
+#, c-format
+msgid "Support for creating %s file systems is not implemented yet."
+msgstr ""
+"Il supporto per creare il file system %s non è ancora stato implementato."
+
+#: libparted/filesys.c:505
+#, c-format
+msgid "Support for checking %s file systems is not implemented yet."
+msgstr ""
+"Il supporto per controllare il file system %s non è ancora stato "
+"implementato."
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr "copia dei blocchi"
+
+#: libparted/filesys.c:582
+msgid "growing file system"
+msgstr "aumento del file system"
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr "Non è possibile copiare su una partizione sovrapposta."
+
+#: libparted/filesys.c:644
+#, c-format
+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 file system %s non è ancora implementato, ma è "
+"presente quello per ridimensionarlo. Quindi il file system è copiabile se la "
+"partizione di destinazione è grande almeno quanto quella di origine. Quindi "
+"si può rimpicciolire la partizione di partenza oppure copiare in una più "
+"grande."
+
+#: libparted/filesys.c:658
+#, c-format
+msgid "Support for copying %s file systems is not implemented yet."
+msgstr ""
+"Il supporto per copiare file system %s non è ancora stato implementato."
+
+#: libparted/filesys.c:696
+#, c-format
+msgid "Support for resizing %s file systems is not implemented yet."
+msgstr ""
+"Il supporto per ridimensionare il file system %s non è stato ancora "
+"implementato."
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, fuzzy
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr "Il file system è più ampio del proprio volume!"
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "controllo"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, fuzzy
+msgid ""
+"The reiserfs file system passed a basic check. For a more comprehensive "
+"check, run reiserfsck --check."
+msgstr ""
+"Il file system ext2 ha passato i controlli di base. Per un controllo più "
+"approfondito utilizzare il programma e2fsck."
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, fuzzy
+msgid "Sorry, can't move the start of reiserfs partitions yet."
+msgstr ""
+"Spiacente, ma non è ancora possibile spostare l'inizio di una partizione "
+"ext2!"
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+msgid "shrinking"
+msgstr "riduzione"
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "Avviso"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, fuzzy, c-format
+msgid "Device is too small for %lu blocks."
+msgstr "File system troppo picolo per ext2."
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr ""
+"Il supporto per creare il file system %s non è ancora stato implementato."
+
+#: libparted/labels/aix.c:148
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr ""
+"Il supporto per creare il file system %s non è ancora stato implementato."
+
+#: libparted/labels/aix.c:161
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+"Il supporto per creare il file system %s non è ancora stato implementato."
+
+#: libparted/labels/aix.c:171
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"Il supporto per creare il file system %s non è ancora stato implementato."
+
+#: libparted/labels/aix.c:189
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"Il supporto per creare il file system %s non è ancora stato implementato."
+
+#: libparted/labels/aix.c:199
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+"Il supporto per creare il file system %s non è ancora stato implementato."
+
+#: libparted/labels/bsd.c:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Impossibile soddisfare tutti i vincoli sulla partizione."
+
+#: libparted/labels/bsd.c:526
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Impossibile allocare uno spazio dell'etichetta bsd."
+
+#: libparted/labels/dasd.c:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "Impossibile determinare la dimensione di %s (%s)."
+
+#: libparted/labels/dasd.c:781
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Impossibile allocare uno spazio dell'etichetta bsd."
+
+#: libparted/labels/dos.c:827
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Tabella delle partizioni non valida su %s -- firma %x errata."
+
+#: libparted/labels/dos.c:855
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Tabella della partizioni non valida - partizione ricorsiva su %s."
+
+#: libparted/labels/dos.c:1318
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "Le partizioni estese non possono essere nascoste su etichette msdos."
+
+#: libparted/labels/dos.c:1958
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+"Parted non può ridimensionare partizioni gestite da Windows Dynamic Disk."
+
+#: libparted/labels/dvh.c:190
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%s non ha partizioni estese (volume header partition)."
+
+#: libparted/labels/dvh.c:313
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+"La somma di controllo è sbagliata; vale a dire che la tabella delle "
+"partizioni è corrotta."
+
+#: libparted/labels/dvh.c:616
+msgid "Only primary partitions can be root partitions."
+msgstr "Solo le partizioni primarie possono essere partizioni di root."
+
+#: libparted/labels/dvh.c:630
+msgid "Only primary partitions can be swap partitions."
+msgstr "Solo le partizioni primarie possono essere di swap."
+
+#: libparted/labels/dvh.c:644
+msgid "Only logical partitions can be a boot file."
+msgstr "Solo le partizioni logiche possono essere file di avvio."
+
+#: libparted/labels/dvh.c:721
+msgid "Only logical partitions (boot files) have a name."
+msgstr "Solo le partizioni logiche (file di avvio) hanno un nome."
+
+#: libparted/labels/dvh.c:812
+msgid "Too many primary partitions"
+msgstr "Troppe partizioni primarie"
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "%s durante la scrittura su %s"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, fuzzy, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr "Disco %s: %s\n"
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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 delle firme GPT, indicando che è una tabella GPT. Ciononostante "
+"non ha una finta tabella delle partizioni valida per msdos, come dovrebbe. "
+"Forse è stata corrotta, magari da un programma che non comprende le tabelle "
+"delle partizioni GPT, oppure è stata cancellata la tabella GPT e ora si sta "
+"usando quella msdos. Questa è una tabella di partizioni GPT?"
+
+#: libparted/labels/gpt.c:648
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+msgstr ""
+"Il formato della tabella di partizioni GPT ha versione %x, che è successiva "
+"a quelle conosciute da parted. Per favore avvisateci! bug-parted@gnu.org"
+
+#: libparted/labels/gpt.c:698
+#, 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:827
+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 scorta 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 la vecchia copia)?"
+
+#: libparted/labels/gpt.c:862
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"La tabella GPT principale è corrotta, ma la copia di backup sembra a posto, "
+"quindi la seconda verrà utilizzata."
+
+#: libparted/labels/gpt.c:870
+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 la copia sono corrotte. Provare a crearne "
+"una nuova e, tramite le potenzialità di recupero di parted, recuperare le "
+"partizioni."
+
+#: libparted/labels/mac.c:181
+#, 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:226
+msgid "Partition map has no partition map entry!"
+msgstr "La mappa delle partizioni non ha elementi."
+
+#: libparted/labels/mac.c:273
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s è troppo piccolo per una etichetta di disco Mac!"
+
+#: libparted/labels/mac.c:532
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "La partizione %d ha una firma non valida %x."
+
+#: libparted/labels/mac.c:550
+#, 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:580
+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:597
+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:611
+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:622
+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:675
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"Dimensione sospetta del blocco nel descrittore del device: %d byte non è "
+"divisibile per 512."
+
+#: libparted/labels/mac.c:688
+#, 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 lo indica di %d byte."
+
+#: libparted/labels/mac.c:736
+msgid "No valid partition map found."
+msgstr "Non è stata trovata alcuna mappa delle partizioni valida."
+
+#: libparted/labels/mac.c:795
+#, 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 dimensione diversa! "
+"L'elemento 1 dice %d, mentre l'elemento %d dice %d!"
+
+#: libparted/labels/mac.c:822
+msgid "Weird! There are 2 partitions map entries!"
+msgstr "Strano, ci sono 2 mappa delle partizioni."
+
+#: libparted/labels/mac.c:1347
+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 "
+"riconoscerle come tali."
+
+#: libparted/labels/mac.c:1443
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr ""
+"Non è possibile aggiungere un'altra partizione: la mappa delle partizioni è "
+"troppo piccola!"
+
+#: libparted/labels/pc98.c:354
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Tabella delle partizioni non valida su %s."
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, 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. Il supporto "
+"per questa casistica non è ancora presente."
+
+#: libparted/labels/pc98.c:791
+msgid "Can't add another partition."
+msgstr "Non è possibile aggiungere un'altra partizione."
+
+#: libparted/labels/rdb.c:162
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr "%s: Somma di controllo errata sul blocco %llu di tipo %s."
+
+#: libparted/labels/rdb.c:497
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr "%s: Non è stato trovato il blocco «rdb», non deve mai succedere."
+
+#: libparted/labels/rdb.c:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s: Rilevata iterazione al blocco %d."
+
+#: libparted/labels/rdb.c:600
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr "%s: La lista %s sembra corrotta al blocco %s."
+
+#: libparted/labels/rdb.c:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s: Errore nell'elencare i blocchi corrotti."
+
+#: libparted/labels/rdb.c:697
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s: Errore nell'elencare i blocchi della partizione."
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s: Errore nell'elencare i blocchi del file system."
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s: Errore nell'elencare i blocchi di avvio (di boot)."
+
+#: libparted/labels/rdb.c:740
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Errore nella scrittura dei blocchi di partizione nella posizione %d."
+
+#: libparted/labels/rdb.c:1069
+msgid "Unable to allocate a partition number."
+msgstr "Impossibile allocare un numero di partizione."
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr "È stata trovata l'etichetta Sun corrotta."
+
+#: libparted/labels/sun.c:266
+#, 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 (%d,%d,%d) del disco non corrisponde a quella riportata "
+"nell'etichetta (%d,%d,%d)."
+
+#: libparted/labels/sun.c:288
+#, 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:442
+#, 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 che è 65536."
+
+#: libparted/labels/sun.c:737
+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 \"Tutto il disco\" è 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:752
+msgid "Sun disk label is full."
+msgstr "L'etichetta Sun è completa."
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr "Memoria non sufficiente."
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr "È impossibile conoscere la dimensione dell'unità speciale 'COMPACT'"
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "\"%s\" usa una sintassi errata per la locazione."
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "Il massimo valore per la testina è %d."
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "Il massimo valore del settore è %d."
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "La locazione %s è esterna al device %s."
+
+#: libparted/unit.c:527
+msgid "Invalid number."
+msgstr "Numero non valido."
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s: Errore nell'elencare i blocchi della partizione."
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, fuzzy, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s: Errore nell'elencare i blocchi di avvio (di boot)."
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, fuzzy, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s: Rilevata iterazione al blocco %d."
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, fuzzy, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s: Rilevata iterazione al blocco %d."
+
+#: libparted/fs/amiga/amiga.c:72
+#, fuzzy, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s: Errore nell'elencare i blocchi corrotti."
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, fuzzy, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s: Somma di controllo errata sul blocco %llu di tipo %s."
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s: Rilevata iterazione al blocco %d."
+
+#: libparted/fs/amiga/amiga.c:278
+#, fuzzy, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s: Errore nell'elencare i blocchi corrotti."
+
+#: libparted/fs/amiga/amiga.c:289
+#, fuzzy, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s: Non è stato trovato il blocco «rdb», non deve mai succedere."
+
+#: libparted/fs/amiga/amiga.c:318
+#, fuzzy, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s: Errore nell'elencare i blocchi della partizione."
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr "Descrittori di gruppo inconsistenti!"
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+msgid "File system full!"
+msgstr "File system pieno!"
+
+#: libparted/fs/ext2/ext2.c:686
+msgid "Invalid superblock. Are you sure this is an ext2 file system?"
+msgstr "Superblocco non valido. Si è certi che sia un file system ext2?"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+msgid "File system has errors! You should run e2fsck."
+msgstr "Il file system contiene errori! Eseguire e2fsck."
+
+#: libparted/fs/ext2/ext2.c:711
+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."
+
+#: libparted/fs/ext2/ext2.c:731
+msgid "File system has an incompatible feature enabled."
+msgstr "Il file system ha abilitata una proprietà incompatibile."
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr "Errore allocando la cache dei buffer."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+msgid ""
+"Found an inode with a incorrect link count. Better go run e2fsck first!"
+msgstr ""
+"Trovato un inode con un contatore di link non corretto. È meglio eseguire "
+"e2fsck prima!"
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr "Non ci sono abbastanza inode liberi!"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+msgid "File system is too full to remove a group!"
+msgstr "Il file system è troppo pieno per rimuovere un gruppo!"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+msgid "File system has too many allocated inodes to remove a group!"
+msgstr "Il file system ha troppi inode allocati per rimuove un gruppo!"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr "aggiunta di gruppi"
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, c-format
+msgid "Your file system is too full to resize it to %i blocks. Sorry."
+msgstr ""
+"Il file system contiene troppi dati perché sia ridotto a %i blocchi. "
+"Spiacente."
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, c-format
+msgid ""
+"Your file system has too many occupied inodes to resize it to %i blocks. "
+"Sorry."
+msgstr ""
+"Il file system ha troppi inode occupati perché sia ridotto a %i blocchi. "
+"Spiacente."
+
+#: libparted/fs/ext2/ext2_resize.c:666
+msgid "File system was not cleanly unmounted! You should run e2fsck."
+msgstr "Il file system non è stato smontato correttamente. Eseguire e2fsck."
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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 \"feature\" «dir_index» attiva. Parted può "
+"ridimensionare solo file system disattivando questa \"feature\". Sarà "
+"possibile riattivarla successivamente eseguendo «tune2fs -O dir_index "
+"DEVICE» e poi «e2fsck -fD DEVICE»."
+
+#: libparted/fs/ext2/ext2_resize.c:691
+#, 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 ""
+"Un'operazione di ridimensionamento di questo file system utilizzerà un "
+"codice SPERIMENTALE per POTREBBE CORROMPERLO (anche se finora non è mai "
+"successo.) È quindi consigliato di fare un backup dei dati e eseguire subito "
+"dopo \"e2fsck -f\"."
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+msgid "Cross-linked blocks found! Better go run e2fsck first!"
+msgstr ""
+"Sono stati trovati dei blocchi collegati in maniera incrociata! Meglio "
+"eseguire e2fsck!"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "Il blocco %i non è referenziato? Strano"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, fuzzy, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "Il blocco %i non avrebbe dovuto essere marcato!"
+
+#: libparted/fs/ext2/interface.c:186
+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."
+
+#: libparted/fs/ext2/interface.c:203
+msgid "Sorry, can't move the start of ext2 partitions yet!"
+msgstr ""
+"Spiacente, ma non è ancora possibile spostare l'inizio di una partizione "
+"ext2!"
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr "Non posso svuotare la cache dei buffer!"
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr "scrittura dei metadati per ogni gruppo"
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr "File system troppo picolo per ext2."
+
+#: libparted/fs/fat/calc.c:135
+#, c-format
+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 è libero."
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+msgid ""
+"Cluster start delta = %d, which is not a multiple of the cluster size %d."
+msgstr ""
+"Lo spostamento del primo blocco del cluster è %d che non è un multiplo della "
+"dimensione del cluster %d."
+
+#: libparted/fs/fat/fat.c:308
+#, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr "Partizione troppo grande/piccola per il file system %s."
+
+#: libparted/fs/fat/fat.c:474
+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 si sa cosa questo voglia dire selezionare "
+"\"annulla\" e poi eseguire «scandisk» sul file system; infine si proceda."
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr "Non ci sono configurazioni possibili per questo tipo di FAT."
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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 serie di dimensioni attese da Windows. La "
+"dimensione del cluster è %dk (%dk attesa); il numero di cluster è %d (%d "
+"atteso); la dimensione delle FAT è %d settori (%d attesi)."
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:874
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes. FAT "
+"support will be disabled."
+msgstr ""
+"GNU parted non è stato compilato correttamente: il settore di avvio dovrebbe "
+"essere di 512 byte. Il supporto per FAT verrà diabilitato."
+
+#: libparted/fs/fat/resize.c:159
+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. "
+"Scegliere Annulla, o Ignora per perdere i file."
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr "Errore scrivendo nella directory principale."
+
+#: libparted/fs/fat/resize.c:489
+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."
+
+#: libparted/fs/fat/resize.c:492
+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 a FAT16 una partizione che contiene MS Windows, richiede che il "
+"«boot loader» di Windows sia reinstallato. Se lo si vuol fare, consultare il "
+"manuale di Parted (o della propria distribuzione.)"
+
+#: libparted/fs/fat/resize.c:500
+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."
+
+#: libparted/fs/fat/resize.c:504
+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 a FAT32 una partizione che contiene MS Windows, richiede la "
+"reinstallazione del «boot loader». Se lo si vuol fare è possibile consultare "
+"il manuale Parted (o della propria distribuzione). Inoltre, la conversione a "
+"FAT32, renderà il file system illegibile a MS DOS, MS Windows 95a e MS "
+"Windows NT."
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr "Usare FAT32?"
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: libparted/fs/fat/resize.c:551
+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 durante la "
+"conversione a FAT16."
+
+#: libparted/fs/fat/resize.c:567
+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 durante la "
+"conversione a FAT32."
+
+#: libparted/fs/fat/resize.c:580
+msgid ""
+"GNU Parted cannot resize this partition to this size. We're working on it!"
+msgstr ""
+"GNU Parted non può ridimensionare questa partizione a questa dimensione. Ci "
+"stiamo lavorando!"
+
+#: 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 di 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 di 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 corretto di FAT."
+
+#: libparted/fs/fat/bootsector.c:139
+#, 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. È risaputo che GNU "
+"Parted non funziona bene con settori di dimensione diversa da 512 byte."
+
+#: libparted/fs/fat/bootsector.c:164
+#, 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 del file system è (%d, %d, %d) che non è valida. La "
+"geometria CHS della tabella delle partizioni è (%d, %d, %d). Selezionando "
+"Ignora la geometria CHS del file system non sarà cambiata. Selezionando Fix "
+"la geometria CHS del file system verrà fatta corrispondere alla geometria "
+"CHS della tabella delle partizioni."
+
+#: libparted/fs/fat/bootsector.c:213
+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. Il che è strano. "
+
+#: libparted/fs/fat/bootsector.c:219
+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. Il che "
+"è strano. "
+
+#: libparted/fs/fat/bootsector.c:225
+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. Il che è strano. "
+
+#: libparted/fs/fat/bootsector.c:235
+msgid "File system is FAT12, which is unsupported."
+msgstr "Il file system è FAT12, che non è supportato."
+
+#: libparted/fs/fat/bootsector.c:411
+#, 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 per "
+"ora e inviare un segnalazione di bug. In situazioni disperate è forse "
+"possibile ignorare l'errore."
+
+#: libparted/fs/fat/count.c:152
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+msgid ""
+"Bad FAT: unterminated chain for %s. You should run dosfsck or scandisk."
+msgstr ""
+"FAT errata: la catena per %s non è stata terminata. Eseguire «dosfsck» "
+"oppure «scandisk»."
+
+#: libparted/fs/fat/count.c:174
+#, c-format
+msgid ""
+"Bad FAT: cluster %d outside file system in chain for %s. You should run "
+"dosfsck or scandisk."
+msgstr ""
+"FAT errata: il cluster %d usato nella catena %s è fuori dal file system. "
+"Eseguire «dosfsck» oppure «scandisk»."
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+msgid ""
+"Bad FAT: cluster %d is cross-linked for %s. You should run dosfsck or "
+"scandisk."
+msgstr ""
+"FAT errata: il cluster %d ha dei collegamenti incrociati per %s. Eseguire "
+"«dosfsck» oppure «scandisk»."
+
+#: libparted/fs/fat/count.c:203
+#, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr "%s è %dk, ma contiene %d cluster (%dk)."
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+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 è marcato come file di sistema, vale a dire che spostarlo "
+"potrebbe causare il blocco di alcuni programmi."
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+msgid ""
+"FAT %d media %x doesn't match the boot sector's media %x. You should "
+"probably run scandisk."
+msgstr ""
+"FAT %d, il media %x non coincide con quello specificato nel settore di avvio "
+"%x. Sarebbe meglio eseguire «scandisk»."
+
+#: libparted/fs/fat/table.c:269
+#, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "fat_table_set: il cluster %ld è al di fuori del file system"
+
+#: libparted/fs/fat/table.c:301
+#, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "fat_table_get: il cluster %ld è al di fuori del file system"
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "fat_table_alloc_cluster: cluster esauriti"
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Firma linux di partizione swap non conosciuta: «%10s»."
+
+#: libparted/fs/linux_swap/linux_swap.c:318
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Firma linux di partizione swap non conosciuta: «%10s»."
+
+#: libparted/fs/linux_swap/linux_swap.c:358
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Firma linux di partizione swap non conosciuta: «%10s»."
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr "Troppe pagine inutilizzabili."
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr "Il file system contiene errori."
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr "I blocchi corrotti non possone essere letti."
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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 registrazione di un «extent» dal bocco 0x%X, ma un altro esiste "
+"già nella medesima posizione. Bisogna controllare il file system!"
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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 spostamento di un «extent» dal blocco Ox%X al blocco Ox%X, ma "
+"c'è già un altro «extent» nella medesima posizione. Questo non deve "
+"avvenire! "
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+msgid "Could not update the extent cache for HFS file with CNID %X."
+msgstr ""
+"Impossibile aggiornare la cache degli «extent» per un file HFS con CNID %X."
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr "Tentativo di leggere il file HFS con CNID %X oltre EOF."
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr "Impossibile trovare il settore %lli del file HFS con CNID %X."
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+msgid "Trying to write HFS file with CNID %X behind EOF."
+msgstr "Tentativo di scrivere un file HFS con CNID %X oltre EOF."
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+msgid "Could not update the extent cache for HFS+ file with CNID %X."
+msgstr ""
+"Impossibile aggiornare la cache degli «extent» per il file HFS+ con CNID %X. "
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr "Tentativo di leggere un file HFS+ con CNID %X oltre EOF."
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr "Impossibile trovare il settore %lli del file HFS+ con CNID %X."
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+msgid "Trying to write HFS+ file with CNID %X behind EOF."
+msgstr "Tentativo di scrittura su file HFS+ con CNID %X oltre EOF."
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr "Spiacente, ma HFS non può ancora essere ridimensionato in questo modo."
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr "Fallito il riposizionamento dei dati."
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr ""
+"Il riposizionamento dei dati ne ha lasciato alcuni alla fine del volume."
+
+#: libparted/fs/hfs/hfs.c:320
+msgid "writing HFS Master Directory Block"
+msgstr "Errore scrivendo nel blocco HFS «Master Directory»."
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr "Non è stata trovata alcuna firma HFS[+X] valida all'apertura."
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr "La versione %d del file HFS+ non è supportata."
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr "La versione %d del file HFSX non è supportata."
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr ""
+"Il riposizionamento dei dati ne ha lasciato alcuni alla fine del volume."
+
+#: libparted/fs/hfs/hfs.c:720
+msgid "Error while writing the allocation file."
+msgstr "Errore scrivendo il file di allocazione."
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr ""
+"Errore nella scrittura della parte compatibile ddel file di allocazione."
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr "Scrittura del «Volume Header» HFS+."
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr "Errore nella ricerca del file obbligatorio dei blocchi corrotti."
+
+#: libparted/fs/hfs/hfs.c:904
+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 inutilizzabili "
+"non contiene il volume HFS+."
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr "Spiacente, HFS+ non può essere ancora ridimensionato in questo modo."
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr "riduzione del volume HFS+"
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr "Il ridimensionamento del volume HFS+ non è andato a buon fine."
+
+#: libparted/fs/hfs/hfs.c:998
+msgid "shrinking HFS wrapper"
+msgstr "riduzione del wrapper HFS"
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr "L'aggiornamento del wrapper HFS è fallita."
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+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. Avviamento della speciale procedura a basso "
+"livello d'estrazione dei file per il debug."
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr "Somma di controllo della lista dei blocchi inutilizzabili."
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+msgid ""
+"Invalid size of a transaction block while replaying the journal (%i bytes)."
+msgstr ""
+"Errata dimensione di un blocco di transazione durante la riesecuzione del "
+"registro (%i byte)."
+
+#: libparted/fs/hfs/journal.c:260
+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 esterno e riavviare Parted."
+
+#: libparted/fs/hfs/journal.c:271
+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."
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr "Valori «magic» errati nell'intestazione del registro."
+
+#: libparted/fs/hfs/journal.c:302
+msgid "Journal size mismatch between journal info block and journal header."
+msgstr ""
+"La dimensione del registro non corrisponde con quelle dell'intestazione del "
+"registro medesimo."
+
+#: libparted/fs/hfs/journal.c:314
+msgid "Some header fields are not multiple of the sector size."
+msgstr ""
+"Alcuni campi dell'intestazione non sono multipli della dimensione di un "
+"settore."
+
+#: libparted/fs/hfs/journal.c:323
+msgid ""
+"The sector size stored in the journal is not 512 bytes. Parted only "
+"supports 512 bytes length sectors."
+msgstr ""
+"La dimensione del settore registrata nel registro non è di 512 byte. Parted "
+"supporta solo settori di lunghezza pari a 512 byte."
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr "Somma di controllo del registro inesatta."
+
+#: libparted/fs/hfs/journal.c:353
+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. Parted deve ripetere le transazioni prima di "
+"passare all'apertura del file system. Il file system verrà modificato."
+
+#: libparted/fs/hfs/journal.c:381
+msgid ""
+"The volume header or the master directory block has changed while replaying "
+"the journal. You should restart Parted."
+msgstr ""
+"L'intestazione del volume o il blocco della directory master è stata "
+"modificata durante la riesecuzione delle transazioni. Parted deve essere "
+"riavviato."
+
+#: libparted/fs/hfs/probe.c:51
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to %"
+"d bytes."
+msgstr ""
+"Parted non può utilizzare file system HFS su dischi con settori di "
+"dimensione diversa da %d byte."
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr "Un «extent» non è stato riposizionato."
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+msgid ""
+"A reference to an extent comes from a place it should not. You should check "
+"the file system!"
+msgstr ""
+"Il riferimento ad un'estensione proviene da un'insolita posizione. Il file "
+"system deve essere controllato!."
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr "Questo volume HFS non possiede un catalogo. Questo è inusuale!"
+
+#: libparted/fs/hfs/reloc.c:475
+msgid "This HFS volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+"Questo volume HFS non presenta un file di overflow degli «extent». È molto "
+"strano!."
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+msgid ""
+"The extents overflow file should not contain its own extents! You should "
+"check the file system."
+msgstr ""
+"Il file di overflow degli «extent» non deve contenere i propri «extent». Si "
+"dovrebbe verificare il file system."
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+msgid "Could not cache the file system in memory."
+msgstr "Non è stato possibile caricare il file system in memoria."
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr "Non è stato possibile caricare l'elenco dei blocchi corrotti."
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr "Un errore è avvenuto durante la rilocazione degli «extent»."
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr "Questo volume HFS non ha un file per il catalogo. Ciò è inusuale!"
+
+#: libparted/fs/hfs/reloc_plus.c:619
+msgid "This HFS+ volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+"Questo volume HFS+ non ha un file per l'overflow degli «extent». Questo è "
+"abbastanza inusuale!"
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr "mostra questo messaggio di aiuto"
+
+#: parted/parted.c:95
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr "non chiede mai l'intervento dell'utente"
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr "mostra la versione"
+
+#: parted/parted.c:111
+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 è il numero di partizione usato da Linux. Su etichette MS-DOS le "
+"partizioni primarie hanno numeri da 1 a 4 e le logiche da 5 in poi.\n"
+
+#: parted/parted.c:114
+msgid "LABEL-TYPE is one of: "
+msgstr "LABEL-TYPE è una di: "
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr "FLAG è uno di: "
+
+#: parted/parted.c:116
+msgid "UNIT is one of: "
+msgstr "UNIT è uno di: "
+
+#: parted/parted.c:117
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "PART-TYPE è uno di: primaria, logica, estesa\n"
+
+#: parted/parted.c:119
+msgid "FS-TYPE is one of: "
+msgstr "FS-TYPE è uno di: "
+
+#: parted/parted.c:120
+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 e END sono locazioni 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:123
+msgid "STATE is one of: on, off\n"
+msgstr "STATE è uno di: on, off\n"
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "DEVICE è normalmente /dev/hda o /dev/sda\n"
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr "NAME è qualsiasi parola si voglia\n"
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr "La partizione deve avere uno dei seguenti FS_TYPE: "
+
+#: parted/parted.c:130
+#, 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-2006 Free Software Foundation, Inc.\n"
+"Questo programma è software libero, protetto dalla licenza 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 AD UN PARTICOLARE SCOPO. Si veda la GNU General Public "
+"License per maggiori dettagli.\n"
+"\n"
+
+#: parted/parted.c:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(tempo rimasto %.2d:%.2d)"
+
+#: parted/parted.c:195
+#, fuzzy, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+"La partizione %s è in uso. La si deve smontare prima di modificarla con "
+"Parted."
+
+#: parted/parted.c:211
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "La/e partizione/i di %s sono in uso."
+
+#: parted/parted.c:223
+msgid ""
+"The existing file system will be destroyed and all data on the partition "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+msgid "Partition number?"
+msgstr "Numero di partizione?"
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr "Device di origine?"
+
+#: parted/parted.c:504
+msgid "Source partition number?"
+msgstr "Numero di partizione di origine?"
+
+#: parted/parted.c:509
+msgid "Can't copy an extended partition."
+msgstr "Non è possibile copiare una partizione estesa."
+
+#: parted/parted.c:515
+msgid "Destination partition number?"
+msgstr "Numero della partizione destinazione?"
+
+#: parted/parted.c:615
+msgid "New disk label type?"
+msgstr "Tipo dell'etichetta del nuovo disco?"
+
+#: parted/parted.c:656
+msgid "File system?"
+msgstr "File system?"
+
+#: parted/parted.c:707 parted/parted.c:878
+msgid "Partition type?"
+msgstr "Tipo di partizione?"
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+msgid "Partition name?"
+msgstr "Nome della partizione?"
+
+#: parted/parted.c:722 parted/parted.c:895
+msgid "File system type?"
+msgstr "Tipo di file system?"
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr "Inizio?"
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr "Fine?"
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+"È stata chiesta una partizione da %s a %s.\n"
+"La locazione più prossima disponibile è da %s a %s. Va bene lo stesso?"
+
+#: parted/parted.c:890
+msgid "An extended partition cannot hold a file system. Did you want mkpart?"
+msgstr ""
+"Le partizione estese non possono contenere un file system. Proseguire con "
+"mkpart?"
+
+#: parted/parted.c:1050
+msgid "Can't move an extended partition."
+msgstr "Non è possibile spostare una partizione estesa."
+
+#: parted/parted.c:1079
+msgid "Can't move a partition onto itself. Try using resize, perhaps?"
+msgstr ""
+"Non è possibile muovere una partizione in se stessa. Provare con il comando "
+"resize?"
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr "Minor: %d\n"
+
+#: parted/parted.c:1228
+#, c-format
+msgid "Flags: %s\n"
+msgstr "Flag: %s\n"
+
+#: parted/parted.c:1229
+#, c-format
+msgid "File System: %s\n"
+msgstr "File system: %s\n"
+
+#: parted/parted.c:1230
+msgid "Size: "
+msgstr "Dimensione: "
+
+#: parted/parted.c:1235
+msgid "Minimum size: "
+msgstr "Dimensione minima: "
+
+#: parted/parted.c:1238
+msgid "Maximum size: "
+msgstr "Dimensione massima: "
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:1364
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "Disco %s: %s\n"
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "Dimensione del settore (logica/fisica): %lldB/%lldB\n"
+
+#: parted/parted.c:1383
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d. Each cylinder is %s.\n"
+msgstr ""
+"Geometria del BIOS cilindri, testine, settori: %d,%d,%d. Ogni cilindro è %"
+"s.\n"
+
+#: parted/parted.c:1392
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "Tabella delle partizioni: %s\n"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr "Numero"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Start"
+msgstr "Inizio"
+
+#: parted/parted.c:1407 parted/parted.c:1410
+msgid "End"
+msgstr "Fine"
+
+#: parted/parted.c:1410
+msgid "Size"
+msgstr "Dimensione"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr "Tipo"
+
+#: parted/parted.c:1416
+msgid "File system"
+msgstr "File System"
+
+#: parted/parted.c:1419
+msgid "Name"
+msgstr "Nome"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr "Flag"
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr "Spazio libero"
+
+#: parted/parted.c:1624
+#, c-format
+msgid ""
+"A %s %s partition was found at %s -> %s. Do you want to add it to the "
+"partition table?"
+msgstr ""
+"Una partizione %s %s è stata trovata a %s -> %s. Aggiungerla alla tabella "
+"delle partizioni?"
+
+#: parted/parted.c:1663
+msgid "searching for file systems"
+msgstr "ricerca di file system"
+
+#: parted/parted.c:1877
+msgid "New device?"
+msgstr "Nuovo device?"
+
+#: parted/parted.c:1902
+msgid "Flag to Invert?"
+msgstr "Flag da invertire?"
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr "Nuovo stato?"
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr "Unità?"
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "controllo"
+
+#: parted/parted.c:2096
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr ""
+"controllo NUMBER effettua un semplice controllo del file system"
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "cp"
+
+#: parted/parted.c:2105
+msgid ""
+"cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another "
+"partition"
+msgstr ""
+"cp [DEVICE-INIZIALE] NUMBER-INIZIALE NUMBER-FINALE copia un file system in "
+"un'altra partizione"
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:2114
+#, fuzzy
+msgid ""
+"help [COMMAND] print general help, or help on "
+"COMMAND"
+msgstr "help [COMANDO] mostra l'aiuto generico o su COMANDO"
+
+#: parted/parted.c:2120
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:2120
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:2123
+#, fuzzy
+msgid ""
+"mklabel,mktable LABEL-TYPE create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel TIPO-ETICHETTA crea una nuova etichetta disco (tabella delle "
+"partizioni)"
+
+#: parted/parted.c:2129
+msgid "mkfs"
+msgstr "mkfs"
+
+#: parted/parted.c:2132
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+"mkfs NUMBER TIPO-FS crea un file system TIPO-FS sulla partizione "
+"NUMBER"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:2141
+msgid "mkpart PART-TYPE [FS-TYPE] START END make a partition"
+msgstr "mkpart TIPO_PART [TIPO-FS] INIZIO FILE crea una partizione"
+
+#: parted/parted.c:2147
+#, 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 un partizione senza crearci un file system. Il TIPO-FS può "
+"essere specificato per creare un ID della partizione appropriato.\n"
+
+#: parted/parted.c:2152
+msgid "mkpartfs"
+msgstr "mkpartfs"
+
+#: parted/parted.c:2155
+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 e il file system"
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr "move"
+
+#: parted/parted.c:2164
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "move NUMBER START END sposta la partizione NUMBER"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:2172
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr "name NUMBER NOME chiama la partizione NUMBER \"NOME\""
+
+#: parted/parted.c:2177
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"print [free|NUMBER|all] mostra la tabella delle partizioni, "
+"una partizione o tutti i device"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:2199
+msgid "quit exit program"
+msgstr "quit termina il programma"
+
+#: parted/parted.c:2204
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:2207
+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:2213
+msgid "resize"
+msgstr "resize"
+
+#: parted/parted.c:2216
+msgid ""
+"resize NUMBER START END resize partition NUMBER and its "
+"file system"
+msgstr ""
+"resize NUMBER START END ridimensiona la partizione NUMBER e il file "
+"system"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:2227
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "rm NUMBER cancella la partizione NUMERO"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:2235
+msgid "select DEVICE choose the device to edit"
+msgstr ""
+"select DISPOSITIVO sceglie su quale dispositivo operare"
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:2243
+msgid ""
+"set NUMBER FLAG STATE change the FLAG on partition NUMBER"
+msgstr "set NUMBER FLAG STATO cambia un flag nella partizione NUMBER"
+
+#: parted/parted.c:2249
+msgid "toggle"
+msgstr "toggle"
+
+#: parted/parted.c:2252
+msgid ""
+"toggle [NUMBER [FLAG]] toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+"toggle [NUMBER [FLAG]] inverte lo stato del FLAG sulla "
+"partitione NUMBER"
+
+#: parted/parted.c:2258
+msgid "unit"
+msgstr "unit"
+
+#: parted/parted.c:2261
+msgid "unit UNIT set the default unit to UNIT"
+msgstr "unit UNIT impostare l'unità predefinita a UNIT"
+
+#: parted/parted.c:2266
+#, fuzzy
+msgid "version"
+msgstr "version"
+
+#: parted/parted.c:2269
+#, fuzzy
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"version mostra il copyright e le "
+"informazioni su GNU Parted"
+
+#: parted/parted.c:2273
+#, fuzzy
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+"version·mostra il copyright e le informazioni sulla versione di questa copia "
+"di GNU·Parted\n"
+
+#: parted/parted.c:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "Non è stato trovato alcun dispositivo"
+
+#: parted/parted.c:2412
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:2450
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Non dimenticare di aggiornare /etc/fstab, se necessario.\n"
+
+#: parted/ui.c:160
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+"Benvenuto su GNU Parted! Digitare \"help\" per avere la lista dei comandi.\n"
+
+#: parted/ui.c:163
+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:168
+#, 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"
+"Si è 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 aiutarci a correggerlo è il seguente:\n"
+"\n"
+"Verificare che il bug non sia già stato corretto utilizzando\n"
+"la versione più recente di GNU Parted che si trova a:\n"
+"\n"
+"\thttp://ftp.gnu.org/gnu/parted/\n"
+"\n"
+"Usare questa versione prima di segnalre il bug.\n"
+"\n"
+"Se il problema non è ancora stato risolto o se 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"
+"con il messaggio d'errore riportato sotto, l'output di\n"
+"\n"
+"\tparted DEVICE unit co print unit s print\n"
+"\n"
+"e ogni altra informazione sulla propria configurazione che si consideti "
+"importante.\n"
+
+#: parted/ui.c:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+#, fuzzy
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"Errore: SEGV_MAPERR (Indirizzo non corrispondente ad un oggetto)"
+
+#: parted/ui.c:372
+#, fuzzy
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"Errore: SEGV_ACCERR (Permesso non valido per l'oggetto mappato)"
+
+#: parted/ui.c:377
+#, fuzzy
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"Errore: Un segnale SIGSEGV generico."
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"Errore: FPE_INTDIV (Intero: divisione per zero)"
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"Errore: FPE_INTOVF (Intero: overflow)"
+
+#: parted/ui.c:420
+#, fuzzy
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"Errore: FPE_FLTDIV (Float: divisione per zero)"
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"Errore: FPE_FLTOVF (Float: overflow)"
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"Errore: FPE_FLTUND (Float: underflow)"
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"Errore: FPE_FLTRES (Float: risultato inesatto)"
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"Errore: FPE_FLTINV (Float: operazione non valida)"
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"Errore: FPE_FLTSUB (Float: subscript out of range)"
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"Errore: Un generico segnale SIGFPE."
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"Errore: ILL_ILLOPC (Opcode non legale)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"Errore: ILL_ILLOPN (Operand non legale)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"Errore: ILL_ILLADR (Modalità di indirizzamento non legale)"
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"Errore: ILL_ILLTRP (Trap non legale)"
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"Errore: ILL_PRVOPC (Opcode privilegiato)"
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"Errore: ILL_PRVREG (Registro privilegiato)"
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"Errore: ILL_COPROC (Errore del coprocessore)"
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"Errore: ILL_BADSTK (Errore dello stack interno)"
+
+#: parted/ui.c:523
+#, fuzzy
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"Errore: Un segnale SIGILL generico."
+
+#: parted/ui.c:1024
+msgid "Expecting a partition number."
+msgstr "Fornire un numero di partizione."
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "La partizione non esiste."
+
+#: parted/ui.c:1053
+msgid "Expecting a file system type."
+msgstr "Fornire un tipo di file system."
+
+#: parted/ui.c:1060
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Tipo \"%s\" di file system sconosciuto."
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr "Fornire un tipo di etichetta disco."
+
+#: parted/ui.c:1178
+msgid "Can't create any more partitions."
+msgstr "Non è possibile creare altre partizioni."
+
+#: parted/ui.c:1188
+msgid "Expecting a partition type."
+msgstr "Fornire un tipo di partizione."
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr "on"
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr "off"
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "OPZIONI:"
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "COMANDI:"
+
+#: parted/ui.c:1445
+#, c-format
+msgid "Using %s\n"
+msgstr "Uso %s\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "chiede l'intervento dell'utente, quando necessario"
+
+#~ msgid "GNU Parted Version information:\n"
+#~ msgstr "Informazioni sulla versione di GNU Parted:\n"
+
+#, 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 ""
+#~ "Senza argomenti «print» mostra tutta la tabella delle partizioni. Con\n"
+#~ "l'argomento «free» mostra le informazioni sullo spazio disponibile,\n"
+#~ "altrimenti se viene specificato un numero di partizione allora sono\n"
+#~ "mostrate informazioni dettagliate sulla partizione.Se viene passato\n"
+#~ "l'argomento «all» vengono mostrate le informazioni per tutti i device."
+
+#~ msgid "Attempt to read sectors %ld-%ld outside of partition on %s."
+#~ msgstr ""
+#~ "Tentativo di leggere i settori %ld-%ld al di fuori della partizione %s."
diff --git a/parted-1.8.7/po/ja.gmo b/parted-1.8.7/po/ja.gmo
new file mode 100644
index 0000000..1c56c82
--- /dev/null
+++ b/parted-1.8.7/po/ja.gmo
Binary files differ
diff --git a/parted-1.8.7/po/ja.po b/parted-1.8.7/po/ja.po
new file mode 100644
index 0000000..3105a0d
--- /dev/null
+++ b/parted-1.8.7/po/ja.po
@@ -0,0 +1,3260 @@
+# Parted¤Î¥á¥Ã¥»¡¼¥¸¤ÎÆüËܸìÌõ
+# Copyright (C) 1999 Free Software Foundation, Inc.
+# Hiroshi Takekawa <sian@big.or.jp>, 1999-2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 1.8.1\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2007-05-09 17:02-0400\n"
+"PO-Revision-Date: 2006-12-08 19:31+0900\n"
+"Last-Translator: Hiroshi Takekawa <sian@big.or.jp>\n"
+"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=EUC-JP\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¼ïÎà \"%s\" ¤ÏÉÔÌÀ¤Ç¤¹¡£"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+#, fuzzy
+msgid "Invalid range end"
+msgstr "ÉÔÀµ¤ÊÃͤǤ¹¡£"
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "%s ¤ò¥ª¡¼¥×¥óÃæ¤Ë¥¨¥é¡¼: %s"
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, c-format
+msgid "Unable to open %s read-write (%s). %s has been opened read-only."
+msgstr ""
+"%s ¤òÆÉ¤ß½ñ¤²Äǽ¤Ê¾õÂ֤˥ª¡¼¥×¥ó¤Ç¤¤Þ¤»¤ó(%s)¡£%s ¤ÏÆÉ¤ß¹þ¤ß¤Î¤ß²Äǽ¤Ê¾õÂÖ"
+"¤Ç¥ª¡¼¥×¥ó¤µ¤ì¤Þ¤·¤¿¡£"
+
+#: libparted/arch/beos.c:411 libparted/arch/linux.c:1431
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s: %s ¤«¤éÆÉ¤ß¹þ¤ßÃæ¤Î¥·¡¼¥¯¤Ç¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£"
+
+#: libparted/arch/beos.c:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s: %s ¤«¤éÆÉ¤ß¹þ¤ßÃæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£"
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "ÆÉ¤ß¹þ¤ß¤Î¤ß¤¬²Äǽ¤Ê¤è¤¦¤Ë¥ª¡¼¥×¥ó¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢%s¤Ë½ñ¤¤³¤á¤Þ¤»¤ó¡£"
+
+#: libparted/arch/beos.c:496 libparted/arch/linux.c:1570
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s: %s ¤Ë½ñ¤¤³¤ßÃæ¤Î¥·¡¼¥¯¤Ç¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£"
+
+#: libparted/arch/beos.c:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s: %s ¤Ë½ñ¤¤³¤ßÃæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "ÉÔÎÉ¥Ú¡¼¥¸¤¬Â¿¤¹¤®¤Þ¤¹¡£"
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr "%s ¤ò³«¤±¤Þ¤»¤ó¡£"
+
+#: libparted/arch/gnu.c:114
+msgid "Unable to probe store."
+msgstr "¥Ç¥Ð¥¤¥¹¤Î¥×¥í¡¼¥Ö¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£"
+
+#: libparted/arch/gnu.c:352
+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:369
+#, 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:380 parted/parted.c:2443
+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:772
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s: %s ¤òƱ´üÃæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£"
+
+#: libparted/arch/linux.c:408
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "¥Ç¥Ð¥¤¥¹ %s ¤òÄ´¤Ù¤é¤ì¤Þ¤»¤ó: %s"
+
+#: libparted/arch/linux.c:523
+#, 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:539
+#, c-format
+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"
+
+#: libparted/arch/linux.c:579
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "%s ¤Î¥µ¥¤¥º¤ò·èÄê¤Ç¤¤Þ¤»¤ó(%s)"
+
+#: libparted/arch/linux.c:668
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "¥Ç¥Ð¥¤¥¹ %s ¤Î identity ¤ò¼èÆÀ¤Ç¤¤Þ¤»¤ó: %s"
+
+#: libparted/arch/linux.c:677
+msgid "Generic IDE"
+msgstr "°ìÈÌŪ¤Ê IDE"
+
+#: libparted/arch/linux.c:698
+#, 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:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "SCSI ¥Ç¥Ð¥¤¥¹ %s ¤Î½é´ü²½¤Ë¼ºÇÔ¤·¤Þ¤·¤¿: %s"
+
+#: libparted/arch/linux.c:928
+#, c-format
+msgid ""
+"The device %s has zero length, and can't possibly store a file system or "
+"partition table. Perhaps you selected the wrong device?"
+msgstr ""
+"¥Ç¥Ð¥¤¥¹ %s ¤ÎŤµ¤¬ 0 ¤Ê¤Î¤Ç¡¢¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ä¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¥Æ¡¼¥Ö¥ë¤òµÏ¿"
+"¤Ç¤¤Þ¤»¤ó¡£¥Ç¥Ð¥¤¥¹¤ÎÁªÂò¤ò´Ö°ã¤Ã¤Æ¤¤¤Ê¤¤¤«³Îǧ¤·¤Æ¤¯¤À¤µ¤¤¡£"
+
+#: libparted/arch/linux.c:1032
+#, 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:1110
+msgid "DAC960 RAID controller"
+msgstr "DAC960 RAID ¥³¥ó¥È¥í¡¼¥é"
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr "Promise SX8 SATA ¥Ç¥Ð¥¤¥¹"
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr "IBM S390 DASD ¥É¥é¥¤¥Ö"
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr "IBM iSeries Virtual DASD"
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr "ATA RAID ¥³¥ó¥È¥í¡¼¥é"
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr "I2O ¥³¥ó¥È¥í¡¼¥é"
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr "User-Mode Linux UBD"
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr "Linux device-mapper"
+
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "ÉÔÌÀ"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "ped_device_new() ¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¼ïÎà¤Î¥Ç¥Ð¥¤¥¹¤Ç¤¹¡£"
+
+#: libparted/arch/linux.c:2083
+#, 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 ¤ËÂФ·¤Æ¤Ê¤µ¤ì¤¿Êѹ¹¤òºÆµ¯Æ°¤¹¤ë¤Þ¤Ç´ØÃΤ·¤Þ¤»¤ó¤Î¤Ç¡¢¤³¤Î¥Ñ¡¼"
+"¥Æ¥£¥·¥ç¥ó¤ò mount ¤·¤è¤¦¤È¤·¤¿¤ê¡¢¤Ê¤ó¤é¤«¤ÎÁàºî¤ò¤¹¤Ù¤¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£"
+
+#: libparted/arch/linux.c:2262
+#, 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/arch/linux.c:2368
+#, c-format
+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 ¤ËÂФ·¤Æ²¿¤«Áàºî¤ò¤¹¤ëÁ°¤Ë¥³¥ó¥Ô¥å¡¼¥¿¤òºÆµ¯Æ°¤¹¤ë¤Ù¤¤Ç¤¹¡£"
+
+#: libparted/cs/geom.c:162
+msgid "Can't have the end before the start!"
+msgstr "½ªÎ»°ÌÃÖ¤ò³«»Ï°ÌÃÖ¤ò±Û¤¨¤ÆÆ°¤«¤¹¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "¥Ç¥£¥¹¥¯¤Î³°Â¦¤Ë¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ïºî¤ì¤Þ¤»¤ó¡£"
+
+#: libparted/cs/geom.c:366
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr ""
+"½ñ¤¹þ¤â¤¦¤È¤·¤¿¥»¥¯¥¿ (%ld-%ld) ¤Ï %s ¾å¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î³°¤Ë¤¢¤ê¤Þ¤¹¡£"
+
+#: libparted/cs/geom.c:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr "ÉÔÎÉ¥Ö¥í¥Ã¥¯¤ò¥Á¥§¥Ã¥¯Ãæ"
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "%s ¤ò³«¤±¤Þ¤»¤ó¡£¥Ç¥£¥¹¥¯¥é¥Ù¥ë¤¬Ç§¼±¤Ç¤¤Þ¤»¤ó¡£"
+
+#: libparted/disk.c:471
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s. Perhaps it was compiled "
+"read-only."
+msgstr ""
+"»ÈÍѤ·¤Æ¤¤¤ë libparted ¤Ï %s ¤Î½ñ¤¤³¤ß¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¡£ÆÉ¤ß¹þ¤ßÀìÍѤÇ"
+"¥³¥ó¥Ñ¥¤¥ë¤µ¤ì¤Æ¤¤¤ë¤È»×¤ï¤ì¤Þ¤¹¡£"
+
+#: libparted/disk.c:598
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "¥Ñ¡¼¥Æ¥£¥·¥ç¥ó %d ¤Ï %s ¤Ç¤¢¤ë¤Î¤Ë¡¢¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ï %s ¤Ç¤¹¡£"
+
+#: libparted/disk.c:1075
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "%s ¤Î¥Ç¥£¥¹¥¯¥é¥Ù¥ë¤Ï³ÈÄ¥¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¡£"
+
+#: libparted/disk.c:1634
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr ""
+"%s ¤Î¥Ç¥£¥¹¥¯¥é¥Ù¥ë¤ÏÏÀÍý¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ä³ÈÄ¥¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤Þ¤»"
+"¤ó"
+
+#: libparted/disk.c:1647
+msgid "Too many primary partitions."
+msgstr "¥×¥é¥¤¥Þ¥ê¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬Â¿¤¹¤®¤Þ¤¹¡£"
+
+#: libparted/disk.c:1656
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr "³ÈÄ¥¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬¤Ê¤¤¤Î¤Ç¡¢ÏÀÍý¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò %s ¤Ëºî¤ì¤Þ¤»¤ó¡£"
+
+#: libparted/disk.c:1680
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "%s ¤Ë¤Ï 1 ¸Ä¤·¤«³ÈÄ¥¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òºî¤ì¤Þ¤»¤ó¡£"
+
+#: libparted/disk.c:1690
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "ÏÀÍý¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò³ÈÄ¥¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î³°¤Ë¤Ï»ý¤Æ¤Þ¤»¤ó¡£"
+
+#: libparted/disk.c:1715
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr "%s ¤Î³ÈÄ¥¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î³°¤ËÏÀÍý¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ïºî¤ì¤Þ¤»¤ó¡£"
+
+#: libparted/disk.c:1725 libparted/disk.c:1779 libparted/disk.c:1945
+msgid "Can't have overlapping partitions."
+msgstr "½Å¤Ê¤ê¤Î¤¢¤ë¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï»ý¤Æ¤Þ¤»¤ó¡£"
+
+#: libparted/disk.c:1733
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "³ÈÄ¥¥Ñ¡¼¥Æ¥£¥·¥ç¥óÆâ¤Ë¥×¥é¥¤¥Þ¥ê¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ïºî¤ì¤Þ¤»¤ó¡£"
+
+#: libparted/disk.c:2140
+msgid "metadata"
+msgstr "¥á¥¿¾ðÊó"
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "¶õ¤"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "³ÈÄ¥"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "ÏÀÍý"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "¥×¥é¥¤¥Þ¥ê"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "boot"
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr "root"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "hidden"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2190
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "%d ¤ÏÉÔÌÀ¤Ê¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¥Õ¥é¥°¤Ç¤¹¡£"
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "ÄÌÃÎ"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "·Ù¹ð"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "¥¨¥é¡¼"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "Ã×̿Ū¥¨¥é¡¼"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "¥Ð¥°"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr "̤¼ÂÁõ"
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr "½¤Àµ"
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "¤Ï¤¤(Y)"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "¤¤¤¤¤¨(N)"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "¤ä¤ê¤Ê¤ª¤·(R)"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "̵»ë(I)"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "¼è¾Ã(C)"
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org 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 ¤Ë "
+"version(%s) ¤È°Ê²¼¤Î¥á¥Ã¥»¡¼¥¸¤ò´Þ¤á¤Æ¥á¡¼¥ë¤ÇÁ÷¤Ã¤Æ¤¯¤À¤µ¤¤: "
+
+#: libparted/filesys.c:384
+msgid "Could not detect file system."
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò¸¡½Ð¤Ç¤¤Þ¤»¤ó¡£"
+
+#: libparted/filesys.c:395
+msgid "The file system is bigger than its volume!"
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤¬¥Ü¥ê¥å¡¼¥à¤è¤ê¤âÂ礤¤¤Ç¤¹!"
+
+#: libparted/filesys.c:403
+#, c-format
+msgid "Support for opening %s file systems is not implemented yet."
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à(%s)¤Î¥ª¡¼¥×¥ó¤Ï̤¼ÂÁõ¤Ç¤¹¡£"
+
+#: libparted/filesys.c:445
+#, c-format
+msgid "Support for creating %s file systems is not implemented yet."
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à(%s)¤ÎºîÀ®¤Ï̤¼ÂÁõ¤Ç¤¹¡£"
+
+#: libparted/filesys.c:505
+#, c-format
+msgid "Support for checking %s file systems is not implemented yet."
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à(%s)¤ËÂФ¹¤ë¥Á¥§¥Ã¥¯¤Ï̤¼ÂÁõ¤Ç¤¹¡£"
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr "¥Ö¥í¥Ã¥¯¤ò¤½¤Î¤Þ¤Þ¥³¥Ô¡¼Ãæ"
+
+#: libparted/filesys.c:582
+msgid "growing file system"
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤òÂ礤¯¤·¤Æ¤¤¤Þ¤¹"
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr "½Å¤Ê¤ê¤Î¤¢¤ë¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ë¤Ï¥³¥Ô¡¼¤Ç¤¤Þ¤»¤ó¡£"
+
+#: libparted/filesys.c:644
+#, c-format
+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 ¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥³¥Ô¡¼¤ÎľÀÜŪ¤Ê¼ÂÁõ¤Ï¤Þ¤À¤µ¤ì¤Æ¤¤¤Þ¤»¤ó¡£¿·¤·¤¤¥Ñ¡¼"
+"¥Æ¥£¥·¥ç¥ó¤¬¸Å¤¤¤Î¤È¾¯¤Ê¤¯¤È¤âƱ¤¸¤¯¤é¤¤¤ÎÂ礤µ¤Ç¤¢¤ì¤Ð¥³¥Ô¡¼¤Ç¤¤Þ¤¹¡£¥ê¥µ"
+"¥¤¥º¤Ï¼ÂÁõ¤µ¤ì¤Æ¤¤¤Þ¤¹¤Î¤Ç¡¢¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò¾®¤µ¤¯¤·¤Æ¤«¤é¥³¥Ô¡¼¤·¤Æ¤ß¤ë¤«¡¢"
+"¤â¤Ã¤ÈÂ礤¤¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ë¥³¥Ô¡¼¤·¤Æ¤¯¤À¤µ¤¤¡£"
+
+#: libparted/filesys.c:658
+#, c-format
+msgid "Support for copying %s file systems is not implemented yet."
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à(%s)¤Î¥³¥Ô¡¼¤Ï̤¼ÂÁõ¤Ç¤¹¡£"
+
+#: libparted/filesys.c:696
+#, c-format
+msgid "Support for resizing %s file systems is not implemented yet."
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à(%s)¤Î¥ê¥µ¥¤¥º¤Ï̤¼ÂÁõ¤Ç¤¹¡£"
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, fuzzy
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤¬¥Ü¥ê¥å¡¼¥à¤è¤ê¤âÂ礤¤¤Ç¤¹!"
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "check"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, fuzzy
+msgid ""
+"The reiserfs file system passed a basic check. For a more comprehensive "
+"check, run reiserfsck --check."
+msgstr ""
+"¤³¤Î ext2 ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ï´Êñ¤Ê¥Á¥§¥Ã¥¯¤ò¥Ñ¥¹¤·¤Þ¤·¤¿¡£¤µ¤é¤Ë¥Á¥§¥Ã¥¯¤¹¤ë"
+"¤Ë¤Ï e2fsck ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£"
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, fuzzy
+msgid "Sorry, can't move the start of reiserfs partitions yet."
+msgstr "»Äǰ¤Ç¤¹¤¬¡¢¤Þ¤À ext2 ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î³«»Ï°ÌÃÖ¤Ï°ÜÆ°¤Ç¤¤Þ¤»¤ó¡£"
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+msgid "shrinking"
+msgstr "½Ì¾®Ãæ"
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "·Ù¹ð"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, fuzzy, c-format
+msgid "Device is too small for %lu blocks."
+msgstr "ext2 ¤Ë¤¹¤ë¤Ë¤Ï¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤¬¾®¤µ¤¹¤®¤Þ¤¹¡£"
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à(%s)¤ÎºîÀ®¤Ï̤¼ÂÁõ¤Ç¤¹¡£"
+
+#: libparted/labels/aix.c:148
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à(%s)¤ÎºîÀ®¤Ï̤¼ÂÁõ¤Ç¤¹¡£"
+
+#: libparted/labels/aix.c:161
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à(%s)¤ÎºîÀ®¤Ï̤¼ÂÁõ¤Ç¤¹¡£"
+
+#: libparted/labels/aix.c:171
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à(%s)¤ÎºîÀ®¤Ï̤¼ÂÁõ¤Ç¤¹¡£"
+
+#: libparted/labels/aix.c:189
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à(%s)¤ÎºîÀ®¤Ï̤¼ÂÁõ¤Ç¤¹¡£"
+
+#: libparted/labels/aix.c:199
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à(%s)¤ÎºîÀ®¤Ï̤¼ÂÁõ¤Ç¤¹¡£"
+
+#: libparted/labels/bsd.c:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "¤³¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÇÁ´¤Æ¤ÎÀ©Ìó¤òËþ¤¿¤»¤Þ¤»¤ó¡£"
+
+#: libparted/labels/bsd.c:526
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "BSD¥Ç¥£¥¹¥¯¥é¥Ù¥ë¤Î¥¹¥í¥Ã¥È¤ò³ÎÊݤǤ¤Þ¤»¤ó¡£"
+
+#: libparted/labels/dasd.c:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "%s ¤Î¥µ¥¤¥º¤ò·èÄê¤Ç¤¤Þ¤»¤ó(%s)"
+
+#: libparted/labels/dasd.c:781
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "BSD¥Ç¥£¥¹¥¯¥é¥Ù¥ë¤Î¥¹¥í¥Ã¥È¤ò³ÎÊݤǤ¤Þ¤»¤ó¡£"
+
+#: libparted/labels/dos.c:827
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr ""
+"%s ¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¥Æ¡¼¥Ö¥ë¤¬ÉÔÀµ¤Ç¤¹¡£%x ¤È¤¤¤¦¥·¥°¥Í¥Á¥ã¤Ï¤¢¤ä¤Þ¤ê¤Ç¤¹¡£"
+
+#: libparted/labels/dos.c:855
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr ""
+"¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¥Æ¡¼¥Ö¥ë¤¬ÉÔÀµ¤Ç¤¹¡£ºÆµ¢Åª¤Ê¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬ %s ¤Ë¤¢¤ê¤Þ¤¹¡£"
+
+#: libparted/labels/dos.c:1318
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "MSDOS ¥Ç¥£¥¹¥¯¥é¥Ù¥ë¤Ç³ÈÄ¥¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï±£¤»¤Þ¤»¤ó¡£"
+
+#: libparted/labels/dos.c:1958
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+"¥À¥¤¥Ê¥ß¥Ã¥¯¥Ç¥£¥¹¥¯¤Ë»È¤ï¤ì¤Æ¤¤¤ë¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï Parted ¤Ç¤Ï¥ê¥µ¥¤¥º¤Ç¤¤Þ"
+"¤»¤ó¡£"
+
+#: libparted/labels/dvh.c:190
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr ""
+"%s ¤Ï°ì¤Ä¤â³ÈÄ¥¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡Ê¥Ü¥ê¥å¡¼¥à¥Ø¥Ã¥À¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¡Ë¤ò»ý¤Ã¤Æ¤¤¤Þ¤»"
+"¤ó¡£"
+
+#: libparted/labels/dvh.c:313
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr "¥Á¥§¥Ã¥¯¥µ¥à¤ÎÃͤ¬°ã¤¤¤Þ¤¹¡£¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¥Æ¡¼¥Ö¥ë¤¬²õ¤ì¤Æ¤¤¤Þ¤¹¡£"
+
+#: libparted/labels/dvh.c:616
+msgid "Only primary partitions can be root partitions."
+msgstr "¥×¥é¥¤¥Þ¥ê¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤À¤±¤¬¥ë¡¼¥È¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ë¤Ê¤ì¤Þ¤¹¡£"
+
+#: libparted/labels/dvh.c:630
+msgid "Only primary partitions can be swap partitions."
+msgstr "¥×¥é¥¤¥Þ¥ê¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤À¤±¤¬¥¹¥ï¥Ã¥×¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ë¤Ê¤ì¤Þ¤¹¡£"
+
+#: libparted/labels/dvh.c:644
+msgid "Only logical partitions can be a boot file."
+msgstr "ÏÀÍý¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤À¤±¤¬¥Ö¡¼¥È¥Õ¥¡¥¤¥ë¤Ë¤Ê¤ì¤Þ¤¹¡£"
+
+#: libparted/labels/dvh.c:721
+msgid "Only logical partitions (boot files) have a name."
+msgstr "Æâ¤Ë¥×¥é¥¤¥Þ¥ê¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ïºî¤ì¤Þ¤»¤ó¡£<"
+
+#: libparted/labels/dvh.c:812
+msgid "Too many primary partitions"
+msgstr "¥×¥é¥¤¥Þ¥ê¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬Â¿¤¹¤®¤Þ¤¹¡£"
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "%s: %s ¤Ë½ñ¤¤³¤ßÃæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, fuzzy, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr "¥Ç¥£¥¹¥¯ %s: %s\n"
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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:648
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+msgstr ""
+"GPT ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¥Æ¡¼¥Ö¥ë¤Î¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¥Ð¡¼¥¸¥ç¥ó¤¬ %x ¤Ç parted ¤ÎÍý²ò¤Ç"
+"¤¤ë¤â¤Î¤è¤ê¿·¤·¤¤¤Ç¤¹¡£ bug-parted@gnu.org ¤Þ¤ÇÊó¹ð¤·¤Æ¤¯¤À¤µ¤¤¡£"
+
+#: libparted/labels/gpt.c:698
+#, 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:827
+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:862
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"¤³¤Î¥×¥é¥¤¥Þ¥ê GPT ¥Æ¡¼¥Ö¥ë¤Ï²õ¤ì¤Æ¤¤¤Þ¤¹¤¬¡¢¥Ð¥Ã¥¯¥¢¥Ã¥×¤ÏÌäÂê¤Ê¤¤¤è¤¦¤Ê¤Î"
+"¤Ç¡¢¤½¤Á¤é¤ò»È¤¤¤Þ¤¹¡£"
+
+#: libparted/labels/gpt.c:870
+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/mac.c:181
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Mac ¥Ç¥£¥¹¥¯¥é¥Ù¥ë¤Î¥·¥°¥Í¥Á¥ã %x ¤ÏÉÔÀµ¤Ç¤¹¡£"
+
+#: libparted/labels/mac.c:226
+msgid "Partition map has no partition map entry!"
+msgstr "¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¥Þ¥Ã¥×¤Ë¥¨¥ó¥È¥ê¤¬¤¢¤ê¤Þ¤»¤ó¡£"
+
+#: libparted/labels/mac.c:273
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s ¤Ï Mac ¥Ç¥£¥¹¥¯¥é¥Ù¥ë¤Ë¤Ï¾®¤µ¤¹¤®¤Þ¤¹¡£"
+
+#: libparted/labels/mac.c:532
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "¥Ñ¡¼¥Æ¥£¥·¥ç¥ó %d ¤Î¥·¥°¥Í¥Á¥ã %x ¤ÏÉÔÀµ¤Ç¤¹¡£"
+
+#: libparted/labels/mac.c:550
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "¥Ñ¡¼¥Æ¥£¥·¥ç¥ó %d ¤ÎŤµ¤¬ 0 ¤Ê¤Î¤ÏÉÔÀµ¤Ç¤¹¡£"
+
+#: libparted/labels/mac.c:580
+msgid "The data region doesn't start at the start of the partition."
+msgstr "¥Ç¡¼¥¿Îΰ褬¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î³«»Ï°ÌÃÖ¤«¤é»Ï¤Þ¤Ã¤Æ¤Þ¤»¤ó¡£"
+
+#: libparted/labels/mac.c:597
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "¥Ö¡¼¥ÈÎΰ褬¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î³«»Ï°ÌÃÖ¤«¤é»Ï¤Þ¤Ã¤Æ¤Þ¤»¤ó¡£"
+
+#: libparted/labels/mac.c:611
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î¥Ö¡¼¥ÈÎΰ褬¡¢¥Ñ¡¼¥Æ¥£¥·¥ç¥óÁ´ÂΤòÀêͤ·¤Æ¤Þ¤»¤ó¡£"
+
+#: libparted/labels/mac.c:622
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î¥Ç¡¼¥¿Îΰ褬¡¢¥Ñ¡¼¥Æ¥£¥·¥ç¥óÁ´ÂΤòÀêͤ·¤Æ¤Þ¤»¤ó¡£"
+
+#: libparted/labels/mac.c:675
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"¥Ç¥Ð¥¤¥¹¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ë½ñ¤¤¤Æ¤¢¤ë¥Ö¥í¥Ã¥¯¥µ¥¤¥º¤Ï¤ª¤«¤·¤¤¤Ç¤¹¡£%d ¥Ð¥¤¥È¤Ï "
+"512 ¤Ç³ä¤êÀÚ¤ì¤Þ¤»¤ó¡£"
+
+#: libparted/labels/mac.c:688
+#, 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:736
+msgid "No valid partition map found."
+msgstr "Àµ¤·¤¤¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¥Þ¥Ã¥×¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£"
+
+#: libparted/labels/mac.c:795
+#, 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:822
+msgid "Weird! There are 2 partitions map entries!"
+msgstr "¤ª¤«¤·¤¤¤Ç¤¹¡£¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¥Þ¥Ã¥×¥¨¥ó¥È¥ê¤¬2¤Ä¤¢¤ê¤Þ¤¹¡£"
+
+#: libparted/labels/mac.c:1347
+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:1443
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr "¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òÄɲäǤ¤Þ¤»¤ó¡£¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¥Þ¥Ã¥×¤¬¾®¤µ¤¹¤®¤Þ¤¹¡£"
+
+#: libparted/labels/pc98.c:354
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "%s ¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¥Æ¡¼¥Ö¥ë¤¬ÉÔÀµ¤Ç¤¹¡£"
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries. This is still "
+"unsupported."
+msgstr ""
+"¥Ñ¡¼¥Æ¥£¥·¥ç¥ó %d ¤Ï¥·¥ê¥ó¥À¶³¦¾å¤Ë¤¢¤ê¤Þ¤»¤ó¡£¤³¤ì¤Ï¤Þ¤À¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Þ"
+"¤»¤ó¡£"
+
+#: libparted/labels/pc98.c:791
+msgid "Can't add another partition."
+msgstr "¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òÄɲäǤ¤Þ¤»¤ó¡£"
+
+#: libparted/labels/rdb.c:162
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr "%s : ¥Ö¥í¥Ã¥¯ %llu (type %s) ¤Î¥Á¥§¥Ã¥¯¥µ¥à¤¬ÉÔÀµ¤Ç¤¹¡£"
+
+#: libparted/labels/rdb.c:497
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+"%s : rdb ¥Ö¥í¥Ã¥¯¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£¤³¤ì¤Ï¤¢¤Ã¤Æ¤Ï¤Ê¤é¤Ê¤¤¤³¤È¤Ç¤¹¡£"
+
+#: libparted/labels/rdb.c:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s : ¥Ö¥í¥Ã¥¯ %d ¤Ë¥ë¡¼¥×¤¬È¯¸«¤µ¤ì¤Þ¤·¤¿¡£"
+
+#: libparted/labels/rdb.c:600
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr "%s : %s ¥ê¥¹¥È¤¬¤ª¤«¤·¤¤¤è¤¦¤Ç¤¹(¥Ö¥í¥Ã¥¯ %s)¡£"
+
+#: libparted/labels/rdb.c:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s : ÉÔÀµ¤Ê¥Ö¥í¥Ã¥¯¤Î°ìÍ÷¤òÆÀ¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£"
+
+#: libparted/labels/rdb.c:697
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s : ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¥Ö¥í¥Ã¥¯¤Î°ìÍ÷¤òÆÀ¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£"
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s : ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¥Ö¥í¥Ã¥¯¤Î°ìÍ÷¤òÆÀ¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£"
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s : ¥Ö¡¼¥È¥Ö¥í¥Ã¥¯¤Î°ìÍ÷¤òÆÀ¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£"
+
+#: libparted/labels/rdb.c:740
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¥Ö¥í¥Ã¥¯(¥Ö¥í¥Ã¥¯ %d)¤Î½ñ¤¤³¤ß¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£"
+
+#: libparted/labels/rdb.c:1069
+msgid "Unable to allocate a partition number."
+msgstr "¥Ñ¡¼¥Æ¥£¥·¥ç¥óÈÖ¹æ¤ò³ä¤êÅö¤Æ¤é¤ì¤Þ¤»¤ó¡£"
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr "Sun¥Ç¥£¥¹¥¯¥é¥Ù¥ë¤ÎÇË»¤ò¸¡½Ð¤·¤Þ¤·¤¿¡£"
+
+#: libparted/labels/sun.c:266
+#, 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:288
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "¥Ç¥£¥¹¥¯¥ì¥Ù¥ë¤Ë¤è¤ë¤È¡¢¥Ç¥£¥¹¥¯¤Ï %s ¤è¤êÂ礤¤¤³¤È¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£"
+
+#: libparted/labels/sun.c:442
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+"¤³¤Î¥Ç¥£¥¹¥¯¤Ï %d ¥·¥ê¥ó¥À¤¢¤ê¤Þ¤¹¡£¤³¤ì¤ÏºÇÂçÃͤΠ65536 ¤ò±Û¤¨¤Æ¤¤¤Þ¤¹¡£"
+
+#: libparted/labels/sun.c:737
+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:752
+msgid "Sun disk label is full."
+msgstr "Sun¥Ç¥£¥¹¥¯¥é¥Ù¥ë¤¬¤¤¤Ã¤Ñ¤¤¤Ç¤¹¡£"
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr "¥á¥â¥êÉÔ¤Ǥ¹¡£"
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr "ÆÃÊ̤Êñ°Ì¤Ç¤¢¤ë 'COMPACT' ¤Îñ°Ì¤¢¤¿¤ê¤Î¥µ¥¤¥º¤òÆÀ¤é¤ì¤Þ¤»¤ó¡£"
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "\"%s\" ¤Ë¤Ï°ÌÃ֤ˤĤ¤¤Æ¸í¤ê¤¬¤¢¤ê¤Þ¤¹¡£"
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "ºÇÂç¥Ø¥Ã¥ÉÃÍ¤Ï %d ¤Ç¤¹¡£"
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "ºÇÂ祻¥¯¥¿ÃÍ¤Ï %d ¤Ç¤¹¡£"
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "%s ¤Ï¡¢¥Ç¥Ð¥¤¥¹ %s ¤Î³°¤Ç¤¹¡£"
+
+#: libparted/unit.c:527
+msgid "Invalid number."
+msgstr "ÉÔÀµ¤ÊÃͤǤ¹¡£"
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s : ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¥Ö¥í¥Ã¥¯¤Î°ìÍ÷¤òÆÀ¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£"
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, fuzzy, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s : ¥Ö¡¼¥È¥Ö¥í¥Ã¥¯¤Î°ìÍ÷¤òÆÀ¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£"
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, fuzzy, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s : ¥Ö¥í¥Ã¥¯ %d ¤Ë¥ë¡¼¥×¤¬È¯¸«¤µ¤ì¤Þ¤·¤¿¡£"
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, fuzzy, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s : ¥Ö¥í¥Ã¥¯ %d ¤Ë¥ë¡¼¥×¤¬È¯¸«¤µ¤ì¤Þ¤·¤¿¡£"
+
+#: libparted/fs/amiga/amiga.c:72
+#, fuzzy, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s : ÉÔÀµ¤Ê¥Ö¥í¥Ã¥¯¤Î°ìÍ÷¤òÆÀ¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£"
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, fuzzy, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s : ¥Ö¥í¥Ã¥¯ %llu (type %s) ¤Î¥Á¥§¥Ã¥¯¥µ¥à¤¬ÉÔÀµ¤Ç¤¹¡£"
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s : ¥Ö¥í¥Ã¥¯ %d ¤Ë¥ë¡¼¥×¤¬È¯¸«¤µ¤ì¤Þ¤·¤¿¡£"
+
+#: libparted/fs/amiga/amiga.c:278
+#, fuzzy, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s : ÉÔÀµ¤Ê¥Ö¥í¥Ã¥¯¤Î°ìÍ÷¤òÆÀ¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£"
+
+#: libparted/fs/amiga/amiga.c:289
+#, fuzzy, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+"%s : rdb ¥Ö¥í¥Ã¥¯¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¤Ç¤·¤¿¡£¤³¤ì¤Ï¤¢¤Ã¤Æ¤Ï¤Ê¤é¤Ê¤¤¤³¤È¤Ç¤¹¡£"
+
+#: libparted/fs/amiga/amiga.c:318
+#, fuzzy, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s : ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¥Ö¥í¥Ã¥¯¤Î°ìÍ÷¤òÆÀ¤é¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£"
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr "¥°¥ë¡¼¥×µ½Ò»Ò¤ËÌ·½â¤¬¤¢¤ê¤Þ¤¹!"
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+msgid "File system full!"
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤¬¤¤¤Ã¤Ñ¤¤¤Ë¤Ê¤ê¤Þ¤·¤¿!"
+
+#: libparted/fs/ext2/ext2.c:686
+msgid "Invalid superblock. Are you sure this is an ext2 file system?"
+msgstr "¥¹¡¼¥Ñ¡¼¥Ö¥í¥Ã¥¯¤¬ÉÔÀµ¤Ç¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ÏËÜÅö¤Ë ext2 ¤Ç¤¹¤«¡©"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+msgid "File system has errors! You should run e2fsck."
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë¥¨¥é¡¼¤¬¤¢¤ê¤Þ¤¹¡£Àè¤Ë e2fsck ¤ò¼Â¹Ô¤·¤Æ¤¯¤À¤µ¤¤¡£"
+
+#: libparted/fs/ext2/ext2.c:711
+msgid ""
+"File system was not cleanly unmounted! You should run e2fsck. Modifying an "
+"unclean file system could cause severe corruption."
+msgstr ""
+"¥¯¥ê¡¼¥ó¤Ë unmount ¤µ¤ì¤Æ¤Þ¤»¤ó¡£e2fsck ¤ò¼Â¹Ô¤¹¤Ù¤¤Ç¤¹¡£¥¯¥ê¡¼¥ó¤Ë¤Ê¤Ã¤Æ¤¤"
+"¤Ê¤¤¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ø¤ÎÊѹ¹¤ÏÂ礤Ê»³²¤Ë¤Ä¤Ê¤¬¤ê¤«¤Í¤Þ¤»¤ó¡£"
+
+#: libparted/fs/ext2/ext2.c:731
+msgid "File system has an incompatible feature enabled."
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ï¸ß´¹À¤Î¤Ê¤¤µ¡Ç½¤¬Í¸ú¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£"
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr "¥Ð¥Ã¥Õ¥¡¥¥ã¥Ã¥·¥å¤ò³ÎÊݤ·¤Æ¤ëºÇÃæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£"
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+msgid ""
+"Found an inode with a incorrect link count. Better go run e2fsck first!"
+msgstr ""
+"¥ê¥ó¥¯¤Î¿ô¤¬Àµ¤·¤¯¤Ê¤¤inode¤¬¸«¤Ä¤«¤ê¤Þ¤·¤¿¡£Àè¤Ë e2fsck ¤ò¼Â¹Ô¤·¤¿Êý¤¬¤¤¤¤¤Ç"
+"¤·¤ç¤¦¡£"
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr "̤»ÈÍѤΠinode ¤Î¿ô¤¬ÉÔ¤·¤Æ¤¤¤Þ¤¹¡£"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+msgid "File system is too full to remove a group!"
+msgstr "¥°¥ë¡¼¥×¤òºï½ü¤¹¤ë¤Ë¤Ï¶õ¤Îΰ褬¤ê¤Þ¤»¤ó¡£"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+msgid "File system has too many allocated inodes to remove a group!"
+msgstr "¥°¥ë¡¼¥×¤òºï½ü¤¹¤ë¤Ë¤Ï̤»ÈÍѤΠinode ¤¬Â¤ê¤Þ¤»¤ó¡£"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr "¥°¥ë¡¼¥×¤òÄɲÃÃæ"
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, c-format
+msgid "Your file system is too full to resize it to %i blocks. Sorry."
+msgstr "%i ¥Ö¥í¥Ã¥¯¤Ë¥ê¥µ¥¤¥º¤¹¤ë¤Ë¤ÏÎΰ褬ÉÔ¤·¤Æ¤¤¤Þ¤¹¡£"
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, c-format
+msgid ""
+"Your file system has too many occupied inodes to resize it to %i blocks. "
+"Sorry."
+msgstr "%i ¥Ö¥í¥Ã¥¯¤Ë¥ê¥µ¥¤¥º¤¹¤ë¤Ë¤Ï inode ¤¬ÉÔ¤·¤Æ¤¤¤Þ¤¹¡£"
+
+#: libparted/fs/ext2/ext2_resize.c:666
+msgid "File system was not cleanly unmounted! You should run e2fsck."
+msgstr ""
+"¥¯¥ê¡¼¥ó¤Ë unmount ¤µ¤ì¤Æ¤Þ¤»¤ó¤Ç¤·¤¿¡£¤Þ¤º¡¢e2fsck ¤ò¼Â¹Ô¤·¤Æ¤¯¤À¤µ¤¤¡£"
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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'"
+
+#: libparted/fs/ext2/ext2_resize.c:691
+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 ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+msgid "Cross-linked blocks found! Better go run e2fsck first!"
+msgstr ""
+"Cross-link ¤·¤Æ¤¤¤ë¥Ö¥í¥Ã¥¯¤¬¤ß¤Ä¤«¤ê¤Þ¤·¤¿¡£Àè¤Ë e2fsck ¤ò¼Â¹Ô¤·¤¿Êý¤¬¤¤¤¤¤Ç"
+"¤·¤ç¤¦¡£"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "¥Ö¥í¥Ã¥¯ %i ¤Ï²¿¤â»²¾È¤·¤Æ¤¤¤Þ¤»¤ó¡£¤ª¤«¤·¤¤¤Ç¤¹¡£"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "¥Ö¥í¥Ã¥¯ %i ¤Ï¥Þ¡¼¥¯¤µ¤ì¤Æ¤¤¤Ê¤¤¤Ï¤º¤Ç¤¹(%d, %d)¡£"
+
+#: libparted/fs/ext2/interface.c:186
+msgid ""
+"The ext2 file system passed a basic check. For a more comprehensive check, "
+"use the e2fsck program."
+msgstr ""
+"¤³¤Î ext2 ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ï´Êñ¤Ê¥Á¥§¥Ã¥¯¤ò¥Ñ¥¹¤·¤Þ¤·¤¿¡£¤µ¤é¤Ë¥Á¥§¥Ã¥¯¤¹¤ë"
+"¤Ë¤Ï e2fsck ¤ò»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£"
+
+#: libparted/fs/ext2/interface.c:203
+msgid "Sorry, can't move the start of ext2 partitions yet!"
+msgstr "»Äǰ¤Ç¤¹¤¬¡¢¤Þ¤À ext2 ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î³«»Ï°ÌÃÖ¤Ï°ÜÆ°¤Ç¤¤Þ¤»¤ó¡£"
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr "¥Ð¥Ã¥Õ¥¡¥¥ã¥Ã¥·¥å¤ò¥Õ¥é¥Ã¥·¥å¤Ç¤¤Þ¤»¤ó¡£"
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr "¥°¥ë¡¼¥×Ëè¤Î¥á¥¿¾ðÊó¤ò½ñ¹þÃæ"
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr "ext2 ¤Ë¤¹¤ë¤Ë¤Ï¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤¬¾®¤µ¤¹¤®¤Þ¤¹¡£"
+
+#: libparted/fs/fat/calc.c:135
+#, c-format
+msgid ""
+"You need %s of free disk space to shrink this partition to this size. "
+"Currently, only %s is free."
+msgstr ""
+"¤³¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò¤³¤Î¥µ¥¤¥º¤Ë¾®¤µ¤¯¤¹¤ë¤Ë¤Ï %s ¤Î¶õ¤¤¬É¬ÍפǤ¹¡£(¸½ºß %s "
+"¤·¤«¶õ¤¤¬¤¢¤ê¤Þ¤»¤ó¡£)"
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+msgid ""
+"Cluster start delta = %d, which is not a multiple of the cluster size %d."
+msgstr ""
+"Cluster start delta = %d ¤³¤ì¤Ï¥¯¥é¥¹¥¿¥µ¥¤¥º %d ¤ÎÇÜ¿ô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£"
+
+#: libparted/fs/fat/fat.c:308
+#, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr ""
+"¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬ %s ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë¤Ï¾®¤µ¤¹¤®¡¢¤¢¤ë¤¤¤ÏÂ礤¹¤®¤Þ¤¹¡£"
+
+#: libparted/fs/fat/fat.c:474
+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 ¤ò¼Â¹Ô¤·¤Æ¤«¤é¡¢¤Þ¤¿¤ä¤ê¤Ê¤ª¤·¤Æ¤¯¤À¤µ¤¤¡£"
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr "¤³¤Î FAT ¥¿¥¤¥×¤Ë¹ç¤¦ configuration ¤¬¤¢¤ê¤Þ¤»¤ó¡£"
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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)"
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+msgid ""
+"File system is reporting the free space as %d clusters, not %d clusters."
+msgstr ""
+"¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¶õ¤ÍÆÎÌ¤Ï %d ¥¯¥é¥¹¥¿ ¤Ç¡¢%d ¥¯¥é¥¹¥¿¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£"
+
+#: libparted/fs/fat/fat.c:874
+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/resize.c:159
+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) ¤òÁª¤ó¤Ç¤¯¤À¤µ¤¤¡£"
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr "¥ë¡¼¥È¥Ç¥£¥ì¥¯¥È¥ê¤Ë½ñ¤¤³¤ßÃæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£"
+
+#: libparted/fs/fat/resize.c:489
+msgid "If you leave your file system as FAT16, then you will have no problems."
+msgstr "FAT16 ¤Î¤Þ¤Þ¤Ë¤·¤Æ¤ª¤¯¤Ê¤é¡¢²¿¤ÎÌäÂê¤â¤¢¤ê¤Þ¤»¤ó¡£"
+
+#: libparted/fs/fat/resize.c:492
+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) ¤Î¥Þ¥Ë¥å¥¢¥ë¤ò¤è"
+"¤¯ÆÉ¤ó¤Ç¤¯¤À¤µ¤¤¡£"
+
+#: libparted/fs/fat/resize.c:500
+msgid ""
+"If you leave your file system as FAT32, then you will not introduce any new "
+"problems."
+msgstr "FAT32 ¤Î¤Þ¤Þ¤Ë¤·¤Æ¤ª¤¯¤Ê¤é¡¢²¿¤ÎÌäÂê¤âÀ¸¤¸¤Þ¤»¤ó¡£"
+
+#: libparted/fs/fat/resize.c:504
+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 "
+"¤«¤é¤ÏÆÉ¤á¤Ê¤¯¤Ê¤ê¤Þ¤¹¡£"
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr "FAT32 ¤ò»È¤¤¤¿¤¤¤Ç¤¹¤«¡©"
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: libparted/fs/fat/resize.c:551
+msgid ""
+"The file system can only be resized to this size by converting to FAT16."
+msgstr "¤³¤Î¥µ¥¤¥º¤Ë¥ê¥µ¥¤¥º¤¹¤ë¤Ë¤Ï FAT16 ¤ËÊÑ´¹¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£"
+
+#: libparted/fs/fat/resize.c:567
+msgid ""
+"The file system can only be resized to this size by converting to FAT32."
+msgstr "¤³¤Î¥µ¥¤¥º¤Ë¥ê¥µ¥¤¥º¤¹¤ë¤Ë¤Ï FAT32 ¤ËÊÑ´¹¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£"
+
+#: libparted/fs/fat/resize.c:580
+msgid ""
+"GNU Parted cannot resize this partition to this size. We're working on it!"
+msgstr ""
+"GNU Parted ¤Ï¤³¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò¤³¤Î¥µ¥¤¥º¤Ë¥ê¥µ¥¤¥º¤¹¤ë¤³¤È¤Ï¤Ç¤¤Þ¤»¤ó¡£¤Ç"
+"¤¤ë¤è¤¦¤ËÅØÎϤ·¤Æ¤¤¤Þ¤¹¡£"
+
+#: 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:139
+#, 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:164
+#, 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:213
+msgid "FAT boot sector says logical sector size is 0. This is weird. "
+msgstr ""
+"FAT ¤Î¥Ö¡¼¥È¥»¥¯¥¿¤Ë¤ÏÏÀÍý¥»¥¯¥¿¥µ¥¤¥º¤¬ 0 ¤È½ñ¤«¤ì¤Æ¤¤¤Þ¤¹¡¢¤³¤ì¤Ï¤ª¤«¤·¤¤¤Ç"
+"¤¹¡£"
+
+#: libparted/fs/fat/bootsector.c:219
+msgid "FAT boot sector says there are no FAT tables. This is weird. "
+msgstr "FAT ¤Î¥Ö¡¼¥È¥»¥¯¥¿¤Ë FAT ¥Æ¡¼¥Ö¥ë¤¬¤¢¤ê¤Þ¤»¤ó¡£¤³¤ì¤Ï¤ª¤«¤·¤¤¤Ç¤¹¡£"
+
+#: libparted/fs/fat/bootsector.c:225
+msgid "FAT boot sector says clusters are 0 sectors. This is weird. "
+msgstr ""
+"FAT ¤Î¥Ö¡¼¥È¥»¥¯¥¿¤Ë¥¯¥é¥¹¥¿¤Ï 0 ¥»¥¯¥¿¤Ç¤¢¤ë¤È½ñ¤«¤ì¤Æ¤¤¤Þ¤¹¡£¤³¤ì¤Ï¤ª¤«¤·¤¤"
+"¤Ç¤¹¡£"
+
+#: libparted/fs/fat/bootsector.c:235
+msgid "File system is FAT12, which is unsupported."
+msgstr "FAT12 ¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¡£"
+
+#: libparted/fs/fat/bootsector.c:411
+#, 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/fat/count.c:152
+#, c-format
+msgid "Bad directory entry for %s: first cluster is the end of file marker."
+msgstr ""
+"%s ¤Î¥Ç¥£¥ì¥¯¥È¥ê¥¨¥ó¥È¥ê¤¬ÉÔÎɤǤ¹: ºÇ½é¤Î¥¯¥é¥¹¥¿¤¬¥Õ¥¡¥¤¥ë¤Î½ªÎ»¤òɽ¤ï¤¹"
+"¥Þ¡¼¥¯¤Ë¤Ê¤Ã¤Æ¤¤¤Þ¤¹¡£"
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+msgid ""
+"Bad FAT: unterminated chain for %s. You should run dosfsck or scandisk."
+msgstr ""
+"FAT ¤Ë¤¢¤ä¤Þ¤ê¤¬¤¢¤ê¤Þ¤¹¡£%s ¤Î chain ¤¬½ªÎ»¤·¤Þ¤»¤ó¡£dosfsck ¤ä scandisk ¤ò"
+"¼Â¹Ô¤¹¤ë¤Ù¤¤Ç¤¹¡£"
+
+#: libparted/fs/fat/count.c:174
+#, c-format
+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 ¤ò¼Â¹Ô¤¹¤ë¤Ù¤¤Ç¤¹¡£"
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+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¤ò¼Â¹Ô¤¹¤ë¤Ù¤¤Ç¤¹¡£"
+
+#: libparted/fs/fat/count.c:203
+#, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr "%s ¤Ï %dk ¤Ç¤¹¤¬¡¢%d ¥¯¥é¥¹¥¿(%dk)¤¢¤ê¤Þ¤¹¡£"
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+msgid ""
+"The file %s is marked as a system file. This means moving it could cause "
+"some programs to stop working."
+msgstr ""
+"¥Õ¥¡¥¤¥ë %s ¤Ï¥·¥¹¥Æ¥à¥Õ¥¡¥¤¥ë¤Ç¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¤òư¤«¤·¤Æ¤·¤Þ¤¦¤Èư¤«¤Ê¤¯¤Ê"
+"¤ë¥×¥í¥°¥é¥à¤¬¤¢¤ê¤Þ¤¹¡£"
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+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 ¤ò¼Â¹Ô¤·¤¿"
+"Êý¤¬¤¤¤¤¤Ç¤·¤ç¤¦¡£"
+
+#: libparted/fs/fat/table.c:269
+#, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "fat_table_set: ¥¯¥é¥¹¥¿ %ld ¤Ï¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î³°¤Ë¤¢¤ê¤Þ¤¹¡£"
+
+#: libparted/fs/fat/table.c:301
+#, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "fat_table_get: ¥¯¥é¥¹¥¿ %ld ¤Ï¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î³°¤Ë¤¢¤ê¤Þ¤¹¡£"
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "fat_table_alloc_cluster: ¶õ¤¥¯¥é¥¹¥¿¤¬¤¢¤ê¤Þ¤»¤ó¡£"
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Linux ¤Î swap signature '%10s' ¤òǧ¼±¤Ç¤¤Þ¤»¤ó¡£"
+
+#: libparted/fs/linux_swap/linux_swap.c:318
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Linux ¤Î swap signature '%10s' ¤òǧ¼±¤Ç¤¤Þ¤»¤ó¡£"
+
+#: libparted/fs/linux_swap/linux_swap.c:358
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Linux ¤Î swap signature '%10s' ¤òǧ¼±¤Ç¤¤Þ¤»¤ó¡£"
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr "ÉÔÎÉ¥Ú¡¼¥¸¤¬Â¿¤¹¤®¤Þ¤¹¡£"
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ë¥¨¥é¡¼¤¬¤¢¤ê¤Þ¤¹¡£"
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr "ÉÔÀµ¤Ê¥Ö¥í¥Ã¥¯¤ÏÆÉ¤á¤Þ¤»¤ó¤Ç¤·¤¿¡£"
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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 ¤òÅÐÏ¿¤·¤è¤¦¤È¤·¤Þ¤·¤¿¤¬¡¢´û¤Ë¾¤Î¤â¤Î¤¬¤³¤Î"
+"¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ë¸ºß¤·¤Þ¤¹¡£¤³¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£"
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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 ¤ò°Üư¤·¤è¤¦¤È¤·¤Þ¤·¤¿¤¬¡¢´û¤Ë¾¤Î¤â"
+"¤Î¤¬¤³¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ë¸ºß¤·¤Þ¤¹¡£¤³¤ì¤Ï¤¢¤ê¤¨¤Þ¤»¤ó¡£"
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+msgid "Could not update the extent cache for HFS file with CNID %X."
+msgstr "HFS ¥Õ¥¡¥¤¥ë(CNID %X)¤Î extent cache ¤ò¹¹¿·¤Ç¤¤Þ¤»¤ó¤Ç¤·¤¿¡£"
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr "EOF ¤ò±Û¤¨¤Æ HFS ¥Õ¥¡¥¤¥ë(CNID %X)¤òÆÉ¤â¤¦¤È¤·¤Þ¤·¤¿¡£"
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr "¥»¥¯¥¿ %lli (HFS ¥Õ¥¡¥¤¥ë, CNID %X)¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£"
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+msgid "Trying to write HFS file with CNID %X behind EOF."
+msgstr "EOF ¤ò±Û¤¨¤Æ HFS ¥Õ¥¡¥¤¥ë(CNID %X)¤Ë½ñ¤¤³¤â¤¦¤È¤·¤Þ¤·¤¿¡£"
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+msgid "Could not update the extent cache for HFS+ file with CNID %X."
+msgstr "HFS+ ¥Õ¥¡¥¤¥ë(CNID %X)¤Î extent cache ¤ò¹¹¿·¤Ç¤¤Þ¤»¤ó¤Ç¤·¤¿¡£"
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr "EOF ¤ò±Û¤¨¤Æ HFS+ ¥Õ¥¡¥¤¥ë(CNID %X)¤òÆÉ¤â¤¦¤È¤·¤Þ¤·¤¿¡£"
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr "¥»¥¯¥¿ %lli (HFS+ ¥Õ¥¡¥¤¥ë, CNID %X)¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£"
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+msgid "Trying to write HFS+ file with CNID %X behind EOF."
+msgstr "EOF ¤ò±Û¤¨¤Æ HFS+ ¥Õ¥¡¥¤¥ë(CNID %X)¤Ë½ñ¤¤³¤â¤¦¤È¤·¤Þ¤·¤¿¡£"
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr "HFS ¤Ï¤Þ¤À¤½¤Î¤è¤¦¤Ë¥ê¥µ¥¤¥º¤Ç¤¤Þ¤»¤ó¡£"
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr "¥Ç¡¼¥¿¤ÎºÆÇÛÃ֤˼ºÇÔ¤·¤Þ¤·¤¿¡£"
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr "¥Ç¡¼¥¿¤ÎºÆÇÛÃÖ¤ò¤·¤Þ¤·¤¿¤¬¡¢¥Ü¥ê¥å¡¼¥à¤ÎºÇ¸å¤Ë»Ä¤Ã¤¿¥Ç¡¼¥¿¤¬¤¢¤ê¤Þ¤¹¡£"
+
+#: libparted/fs/hfs/hfs.c:320
+msgid "writing HFS Master Directory Block"
+msgstr "HFS ¥Þ¥¹¥¿¥Ç¥£¥ì¥¯¥È¥ê¥Ö¥í¥Ã¥¯¤ò½ñ¤¤³¤ó¤Ç¤¤¤Þ¤¹"
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr "͸ú¤Ê HFS[+X] ¥·¥°¥Í¥Á¥ã¤¬¸«¤Ä¤«¤ê¤Þ¤»¤ó¡£"
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr "HFS+ ¤Î¥Ð¡¼¥¸¥ç¥ó %d ¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¡£"
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr "HFSX ¤Î¥Ð¡¼¥¸¥ç¥ó %d ¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¡£"
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr "¥Ç¡¼¥¿¤ÎºÆÇÛÃÖ¤ò¤·¤Þ¤·¤¿¤¬¡¢¥Ü¥ê¥å¡¼¥à¤ÎºÇ¸å¤Ë»Ä¤Ã¤¿¥Ç¡¼¥¿¤¬¤¢¤ê¤Þ¤¹¡£"
+
+#: libparted/fs/hfs/hfs.c:720
+msgid "Error while writing the allocation file."
+msgstr "allocation file ¤ò½ñ¤¤³¤ßÃæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£"
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr ""
+"allocation file ¤Î compatibility part ¤ò½ñ¤¤³¤ßÃæ¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£"
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr "HFS+ ¥Ü¥ê¥å¡¼¥à¥Ø¥Ã¥À¤ò½ñ¤¤³¤ßÃæ¤Ç¤¹"
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr "ÉÔÀµ¥Ö¥í¥Ã¥¯°ìÍ÷¥Õ¥¡¥¤¥ë¤òõ¤·¤Æ¤¤¤ë¤È¤¤Ë¥¨¥é¡¼¤¬È¯À¸¤·¤Þ¤·¤¿¡£"
+
+#: libparted/fs/hfs/hfs.c:904
+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+ ¥Ü¥ê¥å¡¼¥à¤¬¤¢¤ê¤Þ¤»¤ó¡£"
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr "HFS ¤Ï¤Þ¤À¤½¤Î¤è¤¦¤Ë¥ê¥µ¥¤¥º¤Ç¤¤Þ¤»¤ó¡£"
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr "embedded HFS+ ¥Ü¥ê¥å¡¼¥à¤ò½Ì¾®¤·¤Æ¤¤¤Þ¤¹"
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr "HFS+ ¥Ü¥ê¥å¡¼¥à¤Î¥ê¥µ¥¤¥º¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£"
+
+#: libparted/fs/hfs/hfs.c:998
+msgid "shrinking HFS wrapper"
+msgstr "HFS ¥é¥Ã¥Ñ¡¼¤ò½Ì¾®¤·¤Æ¤¤¤Þ¤¹"
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr "HFS ¥é¥Ã¥Ñ¡¼¤Î¹¹¿·¤Ë¼ºÇÔ¤·¤Þ¤·¤¿¡£"
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+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 ¤ò¥Ç¥Ð¥Ã¥°¤Î¤¿¤á"
+"¤Ë¼è¤ê½Ð¤·¤Þ¤¹¡£"
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr "¥Ö¥í¥Ã¥¯¥ê¥¹¥È¥Ø¥Ã¥À¤Î¥Á¥§¥Ã¥¯¥µ¥à¤¬ÉÔÀµ¤Ç¤¹¡£"
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+msgid ""
+"Invalid size of a transaction block while replaying the journal (%i bytes)."
+msgstr ""
+"¥¸¥ã¡¼¥Ê¥ë¤Î¥ê¥×¥ì¥¤Ãæ¤Ë¥È¥é¥ó¥¶¥¯¥·¥ç¥ó¥Ö¥í¥Ã¥¯¤Î¥µ¥¤¥º (%i ¥Ð¥¤¥È) ¤ÎÉÔÀµ¤¬"
+"¤¢¤ê¤Þ¤·¤¿¡£"
+
+#: libparted/fs/hfs/journal.c:260
+msgid ""
+"Journal stored outside of the volume are not supported. Try to desactivate "
+"the journal and run Parted again."
+msgstr ""
+"¥¸¥ã¡¼¥Ê¥ë¤¬Ê̥ܥê¥å¡¼¥à¤Ë¤¢¤ë HFS+ ¤Ï¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¡£¥¸¥ã¡¼¥Ê¥ë¤ò̵¸ú"
+"¤Ë¤·¤Æ¤«¤éÁàºî¤ò¹Ô¤Ã¤Æ¤¯¤À¤µ¤¤¡£"
+
+#: libparted/fs/hfs/journal.c:271
+msgid "Journal offset or size is not multiple of the sector size."
+msgstr "¥¸¥ã¡¼¥Ê¥ë¤Î¥ª¥Õ¥»¥Ã¥È¤«¥µ¥¤¥º¤¬¥»¥¯¥¿¥µ¥¤¥º¤ÎÇÜ¿ô¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£"
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr "¥¸¥ã¡¼¥Ê¥ë¥Ø¥Ã¥À¤Î¥Þ¥¸¥Ã¥¯¥Ê¥ó¥Ð¡¼¤¬ÉÔÀµ¤Ç¤¹¡£"
+
+#: libparted/fs/hfs/journal.c:302
+msgid "Journal size mismatch between journal info block and journal header."
+msgstr ""
+"¥¸¥ã¡¼¥Ê¥ë¥µ¥¤¥º¤Ë¤Ä¤¤¤Æ¡¢¥¸¥ã¡¼¥Ê¥ë¥¤¥ó¥Õ¥©¥Ö¥í¥Ã¥¯¤È¥¸¥ã¡¼¥Ê¥ë¥Ø¥Ã¥À¤È¤ÇÉÔ"
+"À°¹ç¤¬¤¢¤ê¤Þ¤¹¡£"
+
+#: libparted/fs/hfs/journal.c:314
+msgid "Some header fields are not multiple of the sector size."
+msgstr "¥Ø¥Ã¥À¥Õ¥£¡¼¥ë¥É¤ÎÃæ¤Ë¥»¥¯¥¿¥µ¥¤¥º¤ÎÇÜ¿ô¤Ë¤Ê¤Ã¤Æ¤Ê¤¤¤â¤Î¤¬¤¢¤ê¤Þ¤¹¡£"
+
+#: libparted/fs/hfs/journal.c:323
+msgid ""
+"The sector size stored in the journal is not 512 bytes. Parted only "
+"supports 512 bytes length sectors."
+msgstr ""
+"¥¸¥ã¡¼¥Ê¥ë¤¬Êݸ¤µ¤ì¤Æ¤¤¤ë¥»¥¯¥¿¤Î¥µ¥¤¥º¤¬ 512 ¥Ð¥¤¥È¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£Parted "
+"¤Ç¤Ï 512 ¥Ð¥¤¥È¤Î¥»¥¯¥¿¤·¤«¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤Þ¤»¤ó¡£"
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr "¥¸¥ã¡¼¥Ê¥ë¤Î¥Á¥§¥Ã¥¯¥µ¥à¤¬ÉÔÀµ¤Ç¤¹¡£"
+
+#: libparted/fs/hfs/journal.c:353
+msgid ""
+"The journal is not empty. Parted must replay the transactions before "
+"opening the file system. This will modify the file system."
+msgstr ""
+"¥¸¥ã¡¼¥Ê¥ë¤¬¶õ¤Ç¤Ï¤¢¤ê¤Þ¤»¤ó¡£Parted ¤Ï¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò¥ª¡¼¥×¥ó¤¹¤ëÁ°¤Ë¥È¥é"
+"¥ó¥¶¥¯¥·¥ç¥ó¤Î¥ê¥×¥ì¥¤¤ò¤·¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó¡£¥ê¥×¥ì¥¤¤¹¤ë¤È¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à"
+"¤ÏÊѹ¹¤µ¤ì¤Þ¤¹¡£"
+
+#: libparted/fs/hfs/journal.c:381
+msgid ""
+"The volume header or the master directory block has changed while replaying "
+"the journal. You should restart Parted."
+msgstr ""
+"¥Ü¥ê¥å¡¼¥à¥Ø¥Ã¥À¤«¥Þ¥¹¥¿¡¼¥Ç¥£¥ì¥¯¥È¥ê¥Ö¥í¥Ã¥¯¤¬¥¸¥ã¡¼¥Ê¥ë¤Î¥ê¥×¥ì¥¤Ãæ¤ËÊѹ¹"
+"¤µ¤ì¤Þ¤·¤¿¡£Parted ¤òºÆµ¯Æ°¤·¤Æ¤¯¤À¤µ¤¤¡£"
+
+#: libparted/fs/hfs/probe.c:51
+#, 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 ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò"
+"»È¤¨¤Þ¤»¤ó¡£"
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr "extent ¤ÏºÆÇÛÃÖ¤µ¤ì¤Þ¤»¤ó¤Ç¤·¤¿¡£"
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+msgid ""
+"A reference to an extent comes from a place it should not. You should check "
+"the file system!"
+msgstr ""
+"extent ¤Ø¤Î»²¾È¤Ï¤¢¤ê¤¨¤Ê¤¤¤È¤³¤í¤«¤é¤Ê¤µ¤ì¤Æ¤¤¤Þ¤¹¡£¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò¥Á¥§¥Ã"
+"¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£"
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr ""
+"¤³¤Î HFS ¥Ü¥ê¥å¡¼¥à¤Ë¤Ï catalog file ¤¬¤¢¤ê¤Þ¤»¤ó¡£¤³¤ì¤Ï¤¢¤Þ¤ê¤¢¤ê¤¨¤Ê¤¤¤³¤È"
+"¤Ç¤¹¡£"
+
+#: libparted/fs/hfs/reloc.c:475
+msgid "This HFS volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+"¤³¤Î HFS ¥Ü¥ê¥å¡¼¥à¤Ë¤Ï extents overflow file ¤¬¤¢¤ê¤Þ¤»¤ó¡£¤³¤ì¤Ï¤Û¤È¤ó¤É¤¢"
+"¤ê¤¨¤Ê¤¤¤³¤È¤Ç¤¹¡£"
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+msgid ""
+"The extents overflow file should not contain its own extents! You should "
+"check the file system."
+msgstr ""
+"extents overflow file ¤Ï¼«Ê¬¼«¿È¤Î extent ¤ò´Þ¤ó¤Ç¤Ï¤¤¤±¤Þ¤»¤ó¡£¥Õ¥¡¥¤¥ë¥·¥¹"
+"¥Æ¥à¤ò¥Á¥§¥Ã¥¯¤·¤Æ¤¯¤À¤µ¤¤¡£"
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+msgid "Could not cache the file system in memory."
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò¥á¥â¥ê¤Ë¥¥ã¥Ã¥·¥å¤Ç¤¤Þ¤»¤ó¡£"
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr "ÉÔÀµ¥Ö¥í¥Ã¥¯°ìÍ÷¥Õ¥¡¥¤¥ë¤¬ÆÉ¤ß¤³¤á¤Þ¤»¤ó¤Ç¤·¤¿¡£"
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr "extent ¤ÎºÆÇÛÃÖÃæ¤Ë¥¨¥é¡¼¤ÏȯÀ¸¤·¤Þ¤·¤¿¡£"
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr ""
+"¤³¤Î HFS+ ¥Ü¥ê¥å¡¼¥à¤Ë¤Ï catalog file ¤¬¤¢¤ê¤Þ¤»¤ó¡£¤³¤ì¤Ï¤¢¤Þ¤ê¤¢¤ê¤¨¤Ê¤¤¤³"
+"¤È¤Ç¤¹¡£"
+
+#: libparted/fs/hfs/reloc_plus.c:619
+msgid "This HFS+ volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+"¤³¤Î HFS+ ¥Ü¥ê¥å¡¼¥à¤Ë¤Ï extents overflow file ¤¬¤¢¤ê¤Þ¤»¤ó¡£¤³¤ì¤Ï¤Û¤È¤ó¤É¤¢"
+"¤ê¤¨¤Ê¤¤¤³¤È¤Ç¤¹¡£"
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr "¤³¤Î¥Ø¥ë¥×¤òɽ¼¨¤¹¤ë"
+
+#: parted/parted.c:95
+#, fuzzy
+msgid "lists partition layout on all block devices"
+msgstr "¸¡½Ð¤·¤¿Á´¥Ç¥Ð¥¤¥¹¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¥Æ¡¼¥Ö¥ë¤òɽ¼¨"
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr "¥æ¡¼¥¶¤Ë²ðÆþ¤µ¤»¤Ê¤¤"
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr "¥Ð¡¼¥¸¥ç¥ó¤òɽ¼¨¤¹¤ë"
+
+#: parted/parted.c:111
+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:114
+msgid "LABEL-TYPE is one of: "
+msgstr "¥é¥Ù¥ë¤Î¼ïÎà¤Ï¼¡¤Î¤¦¤Á¤«¤éÁª¤Ó¤Þ¤¹: "
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr "¥Õ¥é¥°¤Ï¼¡¤Î¤¦¤Á¤«¤éÁª¤Ó¤Þ¤¹: "
+
+#: parted/parted.c:116
+msgid "UNIT is one of: "
+msgstr "UNIT ¤Ï¼¡¤Î¤¦¤Á¤«¤éÁª¤Ó¤Þ¤¹: "
+
+#: parted/parted.c:117
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr ""
+"¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î¼ïÎà¤Ï¼¡¤Î¤¦¤Á¤Î¤É¤ì¤«¤È¤Ê¤ê¤Þ¤¹: ¥×¥é¥¤¥Þ¥ê¡¢ÏÀÍý¡¢³ÈÄ¥\n"
+
+#: parted/parted.c:119
+msgid "FS-TYPE is one of: "
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¼ïÎà¤Ï¼¡¤Î¤¦¤Á¤«¤éÁª¤Ó¤Þ¤¹: "
+
+#: parted/parted.c:120
+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:123
+msgid "STATE is one of: on, off\n"
+msgstr "¾õÂÖ¤Ï on ¤« off ¤Î¤É¤Á¤é¤«\n"
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "¥Ç¥Ð¥¤¥¹¤Ï¤¿¤¤¤Æ¤¤ /dev/hda ¤« /dev/sda ¤Ç¤¹¡£\n"
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr "̾Á°¤ÎÉôʬ¤ÏǤ°Õ¤Îñ¸ì\n"
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr ""
+"¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ï°Ê²¼¤Î¤¦¤Á¤Î¤¤¤º¤ì¤«¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê¤Þ¤»¤ó: "
+
+#: parted/parted.c:130
+#, 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 - 2006 Free Software Foundation, Inc.\n"
+"¤³¤Î¥×¥í¥°¥é¥à¤Ï GPL ¤Ë´ð¤Å¤¤¤¿¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢¤Ç¤¹¡£\n"
+"ÆüËܸìÌõ¤Ë´Ø¤·¤Æ¤Ï Hiroshi Takekawa <sian@big.or.jp> ¤Þ¤Ç¤ª¤Í¤¬¤¤¤·¤Þ¤¹¡£\n"
+"\n"
+"ËÜ¥×¥í¥°¥é¥à¤ÏÍÍѤȤϻפ¤¤Þ¤¹¤¬¡¢ÈÒÉۤˤ¢¤¿¤Ã¤Æ¤Ï¡¢»Ô¾ìÀµÚ¤ÓÆÃÄêÌÜŪŬ¹çÀ"
+"¤Ë¤Ä¤¤¤Æ¤Î°ÅÌÛ¤ÎÊݾڤò´Þ¤á¤Æ¡¢¤¤¤«¤Ê¤ëÊݾڤâ¹Ô¤Ê¤¤¤Þ¤»¤ó¡£¾ÜºÙ¤Ë¤Ä¤¤¤Æ¤ÏGNU "
+"°ìÈ̸øÍ»ÈÍѵöÂú½ñ¤ò¤ªÆÉ¤ß¤¯¤À¤µ¤¤¡£\n"
+
+#: parted/parted.c:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(»Ä¤ê»þ´Ö %.2d:%.2d)"
+
+#: parted/parted.c:195
+#, 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:211
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "%s ¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬»ÈÍÑÃæ¤Ç¤¹¡£"
+
+#: parted/parted.c:223
+msgid ""
+"The existing file system will be destroyed and all data on the partition "
+"will be lost. Do you want to continue?"
+msgstr ""
+"¤¤¤Þ¸ºß¤·¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ÏÇ˲õ¤µ¤ì¡¢¤³¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ÎÁ´¥Ç¡¼¥¿¤¬¼º"
+"¤ï¤ì¤Þ¤¹¡£Â³¹Ô¤·¤Þ¤¹¤«¡©"
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+msgid "Partition number?"
+msgstr "¥Ñ¡¼¥Æ¥£¥·¥ç¥óÈÖ¹æ?"
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr "žÁ÷¸µ¤Î¥Ç¥Ð¥¤¥¹?"
+
+#: parted/parted.c:504
+msgid "Source partition number?"
+msgstr "žÁ÷¸µ¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥óÈÖ¹æ?"
+
+#: parted/parted.c:509
+msgid "Can't copy an extended partition."
+msgstr "³ÈÄ¥¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï¥³¥Ô¡¼¤Ç¤¤Þ¤»¤ó¡£"
+
+#: parted/parted.c:515
+msgid "Destination partition number?"
+msgstr "žÁ÷Àè¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥óÈÖ¹æ?"
+
+#: parted/parted.c:615
+msgid "New disk label type?"
+msgstr "¿·¤·¤¤¥Ç¥£¥¹¥¯¥é¥Ù¥ë?"
+
+#: parted/parted.c:656
+msgid "File system?"
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à?"
+
+#: parted/parted.c:707 parted/parted.c:878
+msgid "Partition type?"
+msgstr "¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î¼ïÎà?"
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+msgid "Partition name?"
+msgstr "¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î̾Á°?"
+
+#: parted/parted.c:722 parted/parted.c:895
+msgid "File system type?"
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¼ïÎà?"
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr "³«»Ï?"
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr "½ªÎ»?"
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+"%s ¤«¤é %s ¤Þ¤Ç¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò»ØÄꤵ¤ì¤Þ¤·¤¿¡£\n"
+"²Äǽ¤ÊÃæ¤ÇºÇ¤â¶á¤¤¤â¤Î¤Ï %s ¤«¤é %s ¤Þ¤Ç¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ë¤Ê¤ê¤Þ¤¹¡£¤½¤ì¤Ç¤â"
+"¤«¤Þ¤¤¤Þ¤»¤ó¤«¡©"
+
+#: parted/parted.c:890
+msgid "An extended partition cannot hold a file system. Did you want mkpart?"
+msgstr ""
+"³ÈÄ¥¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ë¤Ï¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ïºî¤ì¤Þ¤»¤ó¡£mkpart ¤ò¤·¤¿¤¤¤Î¤Ç¤¹¤«¡©"
+
+#: parted/parted.c:1050
+msgid "Can't move an extended partition."
+msgstr "³ÈÄ¥¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ï°Üư¤Ç¤¤Þ¤»¤ó¡£"
+
+#: parted/parted.c:1079
+msgid "Can't move a partition onto itself. Try using resize, perhaps?"
+msgstr "¼«Ê¬¼«¿È¤Î¾å¤Ë¤Ï°Üư¤Ç¤¤Þ¤»¤ó¡£¥ê¥µ¥¤¥º¤·¤è¤¦¤È¤·¤Æ¤ë¤Î¤Ç¤¹¤«¡©"
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr "¥Þ¥¤¥Ê¡¼: %d\n"
+
+#: parted/parted.c:1228
+#, c-format
+msgid "Flags: %s\n"
+msgstr "¥Õ¥é¥°: %s\n"
+
+#: parted/parted.c:1229
+#, c-format
+msgid "File System: %s\n"
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à: %s\n"
+
+#: parted/parted.c:1230
+msgid "Size: "
+msgstr "¥µ¥¤¥º: "
+
+#: parted/parted.c:1235
+msgid "Minimum size: "
+msgstr "ºÇ¾®¥µ¥¤¥º: "
+
+#: parted/parted.c:1238
+msgid "Maximum size: "
+msgstr "ºÇÂ祵¥¤¥º: "
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr "¥â¥Ç¥ë: %s (%s)\n"
+
+#: parted/parted.c:1364
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "¥Ç¥£¥¹¥¯ %s: %s\n"
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "¥»¥¯¥¿¥µ¥¤¥º (ÏÀÍý/ʪÍý): %lldB/%lldB\n"
+
+#: parted/parted.c:1383
+#, 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:1392
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¥Æ¡¼¥Ö¥ë: %s\n"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr "ÈÖ¹æ"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Start"
+msgstr "³«»Ï"
+
+#: parted/parted.c:1407 parted/parted.c:1410
+msgid "End"
+msgstr "½ªÎ»"
+
+#: parted/parted.c:1410
+msgid "Size"
+msgstr "¥µ¥¤¥º"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr "¥¿¥¤¥×"
+
+#: parted/parted.c:1416
+msgid "File system"
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à"
+
+#: parted/parted.c:1419
+msgid "Name"
+msgstr "̾Á°"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr "¥Õ¥é¥°"
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr "¶õ¤ÍÆÎÌ"
+
+#: parted/parted.c:1624
+#, 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:1663
+msgid "searching for file systems"
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤òõ¤·¤Æ¤¤¤Þ¤¹"
+
+#: parted/parted.c:1877
+msgid "New device?"
+msgstr "¿·¤·¤¤¥Ç¥Ð¥¤¥¹?"
+
+#: parted/parted.c:1902
+msgid "Flag to Invert?"
+msgstr "ȿž¤¹¤ë¥Õ¥é¥°?"
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr "¿·¤·¤¤¾õÂÖ?"
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr "ñ°Ì¤Ï?"
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "check"
+
+#: parted/parted.c:2096
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr "check NUMBER ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î´Êñ¤Ê¥Á¥§¥Ã¥¯¤¹¤ë"
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "cp"
+
+#: parted/parted.c:2105
+msgid ""
+"cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another "
+"partition"
+msgstr ""
+"cp [žÁ÷¸µ¥Ç¥Ð¥¤¥¹] žÁ÷¸µNUMBER žÁ÷ÀèNUMBER\n"
+"¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò¾¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ë¥³¥Ô¡¼¤¹¤ë"
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:2114
+#, fuzzy
+msgid ""
+"help [COMMAND] print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [¥³¥Þ¥ó¥É] ¥Ø¥ë¥×ɽ¼¨¡£¥³¥Þ¥ó¥É»ØÄê¤Ç¤½¤Î¥Ø¥ë¥×¤òɽ¼¨"
+
+#: parted/parted.c:2120
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:2120
+msgid "mktable"
+msgstr "mktable"
+
+#: parted/parted.c:2123
+msgid ""
+"mklabel,mktable LABEL-TYPE create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel,mktable ¥é¥Ù¥ë¤Î¼ïÎà ¿·¤·¤¤¥é¥Ù¥ë(¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¥Æ¡¼¥Ö¥ë)¤ò"
+"ºî¤ë"
+
+#: parted/parted.c:2129
+msgid "mkfs"
+msgstr "mkfs"
+
+#: parted/parted.c:2132
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+"mkfs NUMBER ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¼ïÎà\n"
+"¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡»ØÄꤷ¤¿¼ïÎà¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤òºî¤ë"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:2141
+msgid "mkpart PART-TYPE [FS-TYPE] START END make a partition"
+msgstr ""
+"mkpart ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î¼ïÎà [¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¼ïÎà] ³«»Ï ½ªÎ»\n"
+"¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òºî¤ë"
+
+#: parted/parted.c:2147
+#, 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 ¤Ï¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤À¤±ºî¤ê¡¢¿·¤·¤¤¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Ïºî¤ê¤Þ¤»¤ó¡£¥Õ¥¡¥¤¥ë"
+"¥·¥¹¥Æ¥à¤Î¼ïÎà¤ò»ØÄꤹ¤ë¤È¡¢Àµ¤·¤¤ID¤¬ÀßÄꤵ¤ì¤Þ¤¹¡£\n"
+
+#: parted/parted.c:2152
+msgid "mkpartfs"
+msgstr "mkpartfs"
+
+#: parted/parted.c:2155
+msgid ""
+"mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system"
+msgstr ""
+"mkpartfs ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î¼ïÎà ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¼ïÎà ³«»Ï ½ªÎ»\n"
+"¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¡¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤È¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤òºî¤ë"
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr "move"
+
+#: parted/parted.c:2164
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "move NUMBER ³«»Ï ½ªÎ» ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤ò°Üư¤¹¤ë"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:2172
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr "name NUMBER ̾Á° ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ë̾Á°¤ò¤Ä¤±¤ë"
+
+#: parted/parted.c:2177
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr "¸¡½Ð¤·¤¿Á´¥Ç¥Ð¥¤¥¹¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¥Æ¡¼¥Ö¥ë¤òɽ¼¨"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:2199
+msgid "quit exit program"
+msgstr "quit ¥×¥í¥°¥é¥à¤ò½ªÎ»¤¹¤ë"
+
+#: parted/parted.c:2204
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:2207
+msgid ""
+"rescue START END rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue ³«»Ï ½ªÎ» ³«»Ï¡¢½ªÎ»¤Ç»ØÄꤷ¤¿ÈϰÏÉÕ¶á¤Ë¤¢¤ë¥Ñ¡¼¥Æ¥£¥·¥ç"
+"¥ó¤òÉü³è¤µ¤»¤ë"
+
+#: parted/parted.c:2213
+msgid "resize"
+msgstr "resize"
+
+#: parted/parted.c:2216
+msgid ""
+"resize NUMBER START END resize partition NUMBER and its "
+"file system"
+msgstr ""
+"resize NUMBER ³«»Ï ½ªÎ» ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤È¤½¤ÎÃæ¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò¥ê¥µ"
+"¥¤¥º¤¹¤ë"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:2227
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "rm NUMBER ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òºï½ü¤¹¤ë"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:2235
+msgid "select DEVICE choose the device to edit"
+msgstr "select ¥Ç¥Ð¥¤¥¹ Áàºî¤¹¤ë¥Ç¥Ð¥¤¥¹¤òÁªÂò"
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:2243
+msgid ""
+"set NUMBER FLAG STATE change the FLAG on partition NUMBER"
+msgstr "set NUMBER ¥Õ¥é¥° ¾õÂÖ ¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¥Õ¥é¥°¤È¾õÂÖ¤òÀßÄꤹ¤ë"
+
+#: parted/parted.c:2249
+msgid "toggle"
+msgstr "toggle"
+
+#: parted/parted.c:2252
+msgid ""
+"toggle [NUMBER [FLAG]] toggle the state of FLAG on "
+"partition NUMBER"
+msgstr "toggle [NUMBER [FLAG]] ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î¥Õ¥é¥°¤Î¾õÂÖ¤òȿž¤¹¤ë"
+
+#: parted/parted.c:2258
+msgid "unit"
+msgstr "unit"
+
+#: parted/parted.c:2261
+msgid "unit UNIT set the default unit to UNIT"
+msgstr "unit UNIT ¥Ç¥Õ¥©¥ë¥È¤Îñ°Ì¤ò UNIT ¤Ë¤¹¤ë"
+
+#: parted/parted.c:2266
+msgid "version"
+msgstr "version"
+
+#: parted/parted.c:2269
+#, fuzzy
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"version GNU Parted ¤Î¥Ð¡¼¥¸¥ç¥ó¤ÈÃøºî¸¢¾ðÊó¤òɽ¼¨"
+
+#: parted/parted.c:2273
+#, fuzzy
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+"version ¤Ï¡¢¼Â¹ÔÃæ¤Î GNU Parted ¤Î¥Ð¡¼¥¸¥ç¥ó¤ÈÃøºî¸¢¾ðÊó¤òɽ¼¨¤·¤Þ¤¹¡£\n"
+
+#: parted/parted.c:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "¥Ç¥Ð¥¤¥¹¤¬¤ß¤Ä¤«¤ê¤Þ¤»¤ó¡£"
+
+#: parted/parted.c:2412
+#, fuzzy
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr "·Ù¹ð: ´ÉÍý¼Ô¸¢¸Â¤¬¤¢¤ê¤Þ¤»¤ó¡£¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤ËÃí°Õ¤·¤Æ¤¯¤À¤µ¤¤¡£\n"
+
+#: parted/parted.c:2450
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "ɬÍפǤ¢¤ì¤Ð /etc/fstab ¤ò¹¹¿·¤¹¤ë¤Î¤ò˺¤ì¤Ê¤¤¤è¤¦¤Ë¤·¤Æ¤¯¤À¤µ¤¤¡£\n"
+
+#: parted/ui.c:160
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+"GNU Parted ¤Ø¤è¤¦¤³¤½¡ª ¥³¥Þ¥ó¥É°ìÍ÷¤ò¸«¤ë¤Ë¤Ï 'help' ¤ÈÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£\n"
+
+#: parted/ui.c:163
+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:168
+#, 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"
+"\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"
+
+#: parted/ui.c:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+#, fuzzy
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"¥¨¥é¡¼: SEGV_MAPERR (¥¢¥É¥ì¥¹¤¬¥ª¥Ö¥¸¥§¥¯¥È¤ËÊÑ´¹¤µ¤ì¤Þ¤»¤ó¤Ç¤·¤¿)"
+
+#: parted/ui.c:372
+#, fuzzy
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"¥¨¥é¡¼: SEGV_ACCERR (¥Þ¥Ã¥×¤µ¤ì¤¿¥ª¥Ö¥¸¥§¥¯¥È¤Î¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤¬ÉÔÀµ¤Ç¤¹)"
+
+#: parted/ui.c:377
+#, fuzzy
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"¥¨¥é¡¼: SIGSEGV ¥·¥°¥Ê¥ë¤ò¼õ¤±¤È¤ê¤Þ¤·¤¿¡£"
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"¥¨¥é¡¼: FPE_INTDIV (À°¿ô: 0¤Ë¤è¤ë½ü»»)"
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"¥¨¥é¡¼: FPE_INTOVF (À°¿ô: ¥ª¡¼¥Ð¡¼¥Õ¥í¡¼)"
+
+#: parted/ui.c:420
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"¥¨¥é¡¼: FPE_FLTDIV (ÉâÆ°¾®¿ôÅÀ: 0¤Ë¤è¤ë½ü»»)"
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"¥¨¥é¡¼: FPE_FLTOVF (ÉâÆ°¾®¿ôÅÀ: ¥ª¡¼¥Ð¡¼¥Õ¥í¡¼)"
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"¥¨¥é¡¼: FPE_FLTUND (ÉâÆ°¾®¿ôÅÀ: ¥¢¥ó¥À¡¼¥Õ¥í¡¼)"
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"¥¨¥é¡¼: FPE_FLTRES (ÉâÆ°¾®¿ôÅÀ: Àµ¤·¤¯¤Ê¤¤·ë²Ì)"
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"\n"
+"¥¨¥é¡¼: FPE_FLTINV (ÉâÆ°¾®¿ôÅÀ: ÉÔÀµ¤ÊÁàºî)"
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"¥¨¥é¡¼: FPE_FLTSUB (ÉâÆ°¾®¿ôÅÀ: ź»ú¤¬ÈϰϤò±Û¤¨¤Þ¤·¤¿)"
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"¥¨¥é¡¼: SIGFPE ¥·¥°¥Ê¥ë¤ò¼õ¤±¤È¤ê¤Þ¤·¤¿¡£"
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"¥¨¥é¡¼: ILL_ILLOPC (ÉÔÀµ¤Ê¥ª¥Ú¥³¡¼¥É)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"¥¨¥é¡¼: ILL_ILLOPN (ÉÔÀµ¤Ê¥ª¥Ú¥é¥ó¥É)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"¥¨¥é¡¼: ILL_ILLADR (ÉÔÀµ¤Ê¥¢¥É¥ì¥¹¥â¡¼¥É)"
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"¥¨¥é¡¼: ILL_ILLTRP (ÉÔÀµ¤Ê¥È¥é¥Ã¥×)"
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"¥¨¥é¡¼: ILL_PRVOPC (ÆÃ¸¢¤¬É¬Íפʥª¥Ú¥³¡¼¥É)"
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"¥¨¥é¡¼: ILL_PRVREG (ÆÃ¸¢¤¬É¬Íפʥ쥸¥¹¥¿)"
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"¥¨¥é¡¼: ILL_COPROC (¥³¥×¥í¥»¥Ã¥µ¥¨¥é¡¼)"
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"¥¨¥é¡¼: ILL_BADSTK (¥¤¥ó¥¿¡¼¥Ê¥ë¥¹¥¿¥Ã¥¯¥¨¥é¡¼)"
+
+#: parted/ui.c:523
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"¥¨¥é¡¼: SIGILL ¥·¥°¥Ê¥ë¤ò¼õ¤±¤È¤ê¤Þ¤·¤¿¡£"
+
+#: parted/ui.c:1024
+msgid "Expecting a partition number."
+msgstr "¥Ñ¡¼¥Æ¥£¥·¥ç¥óÈÖ¹æ¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£"
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤¬¤¢¤ê¤Þ¤»¤ó¡£"
+
+#: parted/ui.c:1053
+msgid "Expecting a file system type."
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¼ïÎà¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£"
+
+#: parted/ui.c:1060
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤Î¼ïÎà \"%s\" ¤ÏÉÔÌÀ¤Ç¤¹¡£"
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr "¥Ç¥£¥¹¥¯¥é¥Ù¥ë¤Î¼ïÎà¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£"
+
+#: parted/ui.c:1178
+msgid "Can't create any more partitions."
+msgstr "¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤òÄɲäǤ¤Þ¤»¤ó¡£"
+
+#: parted/ui.c:1188
+msgid "Expecting a partition type."
+msgstr "¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Î¼ïÎà¤òÆþÎϤ·¤Æ¤¯¤À¤µ¤¤¡£"
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr "on"
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr "off"
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "¥ª¥×¥·¥ç¥ó"
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "¥³¥Þ¥ó¥É:"
+
+#: parted/ui.c:1445
+#, c-format
+msgid "Using %s\n"
+msgstr "%s ¤ò»ÈÍÑ\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#~ msgid "GNU Parted cannot resize this file system, please useresize2fs."
+#~ msgstr ""
+#~ "GNU Parted ¤Ç¤Ï¡¢¤³¤Î¥Õ¥¡¥¤¥ë¥·¥¹¥Æ¥à¤ò¥ê¥µ¥¤¥º¤Ç¤¤Þ¤»¤ó¡£resize2fs ¤ò"
+#~ "»È¤Ã¤Æ¤¯¤À¤µ¤¤¡£"
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "ɬÍפǤ¢¤ì¤Ð¥×¥í¥ó¥×¥È¤ò¤À¤·¤Æ¥æ¡¼¥¶¤Ë²ðÆþ¤µ¤»¤ë"
+
+#~ msgid "GNU Parted Version information:\n"
+#~ msgstr "GNU Parted ¥Ð¡¼¥¸¥ç¥ó¾ðÊó:\n"
+
+#~ msgid ""
+#~ "print [free|NUMBER|all] display the partition table, a "
+#~ "partition, or all devices"
+#~ msgstr "print [free|NUMBER|all] ¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¥Æ¡¼¥Ö¥ë¤òɽ¼¨¤¹¤ë"
+
+#~ 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 ¤Ï¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¥Æ¡¼¥Ö¥ë¤ÎÁ´ÆâÍÆ¤òɽ¼¨¤·¤Þ¤¹¡£\n"
+#~ "'free'¤È¤¤¤¦°ú¿ô¤òÍ¿¤¨¤ë¤È¡¢¶õ¤ÍÆÎ̤ˤĤ¤¤ÆÉ½¼¨¤µ¤ì¡¢\n"
+#~ "¥Ñ¡¼¥Æ¥£¥·¥ç¥óÈÖ¹æ¤òÍ¿¤¨¤ë¤È¡¢¤½¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤¬É½¼¨¤µ¤ì¤Þ"
+#~ "¤¹¡£\n"
+#~ "'all'¤òÍ¿¤¨¤ë¤È¡¢Á´¤Æ¤Î¥Ç¥Ð¥¤¥¹¤Ë¤Ä¤¤¤Æ¤Î¥Ñ¡¼¥Æ¥£¥·¥ç¥ó¾ðÊó¤¬É½¼¨¤µ¤ì¤Þ"
+#~ "¤¹¡£\n"
diff --git a/parted-1.8.7/po/nl.gmo b/parted-1.8.7/po/nl.gmo
new file mode 100644
index 0000000..2bb25f3
--- /dev/null
+++ b/parted-1.8.7/po/nl.gmo
Binary files differ
diff --git a/parted-1.8.7/po/nl.po b/parted-1.8.7/po/nl.po
new file mode 100644
index 0000000..69cc8bc
--- /dev/null
+++ b/parted-1.8.7/po/nl.po
@@ -0,0 +1,3313 @@
+# Translation of parted-1.8.1 to Dutch.
+# Copyright (C) 2000, 2005, 2006 Free Software Foundation, Inc.
+# Ivo Timmermans <ivo@o2w.nl>, 2000.
+# Benno Schulenberg <benno@nietvergeten.nl>, 2005, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 1.8.1\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2007-05-09 17:02-0400\n"
+"PO-Revision-Date: 2006-12-07 22:52+0100\n"
+"Last-Translator: Benno Schulenberg <benno@nietvergeten.nl>\n"
+"Language-Team: Dutch <vertaling@vrijschrift.org>\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/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Onbekende bestandssysteemsoort '%s'."
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+#, fuzzy
+msgid "Invalid range end"
+msgstr "Ongeldig nummer."
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Fout tijdens openen van %s: %s"
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, 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:411 libparted/arch/linux.c:1431
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s tijdens een 'seek' bij het lezen van %s"
+
+#: libparted/arch/beos.c:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s tijdens lezen van %s"
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, 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:496 libparted/arch/linux.c:1570
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s tijdens een 'seek' bij het schrijven naar %s"
+
+#: libparted/arch/beos.c:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s tijdens schrijven naar %s"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "Te veel slechte pagina's."
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr "Kan %s niet openen."
+
+#: libparted/arch/gnu.c:114
+msgid "Unable to probe store."
+msgstr "Kan de logische opbouw van het apparaat niet achterhalen."
+
+#: libparted/arch/gnu.c:352
+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 herlezen. Dit betekent dat u uw "
+"computer moet herstarten alvorens veranderde partities te gebruiken. Maar "
+"voor het herstarten moet u ook uw opstartprogramma 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 opstartprogramma moeten herinstalleren. "
+"Lees eventueel sectie 4 van de Parted-gebruikersdocumentatie."
+
+#: libparted/arch/gnu.c:369
+#, 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 herlezen (%s). Dit betekent dat "
+"de Hurd geen weet heeft van de veranderingen die u net heeft gemaakt. U "
+"dient uw computer te herstarten alvorens iets met %s te doen."
+
+#: libparted/arch/gnu.c:380 parted/parted.c:2443
+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 opstartprogramma opnieuw te installeren. "
+"Lees sectie 4 van de Parted-gebruikersdocumentatie voor meer informatie."
+
+#: libparted/arch/gnu.c:772
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s: bezig met synchroniseren van %s naar schijf"
+
+#: libparted/arch/linux.c:408
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Kan de status van apparaat %s niet opvragen -- %s."
+
+#: libparted/arch/linux.c:523
+#, 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 bepalen: %s.\n"
+"De standaard sectorgrootte (%lld) wordt gebruikt."
+
+#: libparted/arch/linux.c:539
+#, c-format
+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"
+
+#: libparted/arch/linux.c:579
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Kan de grootte van %s niet achterhalen -- %s."
+
+#: libparted/arch/linux.c:668
+#, 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:677
+msgid "Generic IDE"
+msgstr "Gewone IDE"
+
+#: libparted/arch/linux.c:698
+#, 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 schijflabel en bestandssysteem, bijvoorbeeld GPT met ext2/3.\n"
+"Zie de website van Parted voor de laatste informatie."
+
+#: libparted/arch/linux.c:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Fout tijdens initialiseren van SCSI-apparaat %s -- %s."
+
+#: libparted/arch/linux.c:928
+#, c-format
+msgid ""
+"The device %s has zero length, and can't possibly store a file system or "
+"partition table. Perhaps you selected the wrong device?"
+msgstr ""
+"Apparaat %s heeft lengte nul en kan met geen mogelijkheid een "
+"bestandssysteem of partitietabel bevatten. Heeft u misschien een verkeerd "
+"apparaat gekozen?"
+
+#: libparted/arch/linux.c:1032
+#, 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:1110
+msgid "DAC960 RAID controller"
+msgstr "DAC960 RAID-stuurapparaat"
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr "Promise SX8 SATA-apparaat"
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr "IBM S390 DASD-schijf"
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr "IBM iSeries virtuele DASD"
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array-stuurapparaat"
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr "ATARAID-stuurapparaat"
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr "I2O-stuurapparaat"
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr "User-Mode Linux-blokapparaat (UBD)"
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr "Linux device-mapper"
+
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "Onbekend"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "Apparaattype wordt niet ondersteund."
+
+#: libparted/arch/linux.c:2083
+#, 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 ""
+"Fout tijdens het inlichten van de kernel over de veranderingen aan partitie %"
+"s (%s). Dit betekent dat Linux geen weet heeft van de veranderingen die u "
+"net heeft gemaakt. U dient uw computer te herstarten alvorens iets met %s "
+"te doen."
+
+#: libparted/arch/linux.c:2262
+#, 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 herlezen (%s). Dit betekent dat "
+"Linux geen weet heeft van de veranderingen die u net heeft gemaakt. "
+
+#: libparted/arch/linux.c:2368
+#, c-format
+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 ""
+"De kernel kan de partitietabel op %s niet herlezen (%s). Dit betekent dat "
+"Linux geen weet heeft van de veranderingen die u net heeft gemaakt. U dient "
+"uw computer te herstarten alvorens iets met %s te doen."
+
+#: libparted/cs/geom.c:162
+msgid "Can't have the end before the start!"
+msgstr "Het einde kan niet vóór het begin liggen!"
+
+#: 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:366
+#, 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:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr "bezig met zoeken naar slechte blokken"
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "Kan %s niet openen -- onbekend schijflabel."
+
+#: libparted/disk.c:471
+#, 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:598
+#, 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:1075
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "%s-schijflabels kennen geen uitgebreide partities."
+
+#: libparted/disk.c:1634
+#, 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:1647
+msgid "Too many primary partitions."
+msgstr "Te veel primaire partities."
+
+#: libparted/disk.c:1656
+#, 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:1680
+#, 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:1690
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Kan geen logische partitie buiten de uitgebreide partitie maken."
+
+#: libparted/disk.c:1715
+#, 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:1725 libparted/disk.c:1779 libparted/disk.c:1945
+msgid "Can't have overlapping partitions."
+msgstr "Kan geen overlappende partities maken."
+
+#: libparted/disk.c:1733
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Kan geen primaire partitie binnen een uitgebreide partitie maken."
+
+#: libparted/disk.c:2140
+msgid "metadata"
+msgstr "metagegevens"
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "vrij"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "uitgebreid"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "logisch"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "primair"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "opstart"
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr "root"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "verborgen"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2190
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Onbekende partitievlag %d."
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "Informatie"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "Waarschuwing"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "Fout"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "Fataal"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "Programmeerfout"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr "Niet-geïmplementeerd"
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr "Repareren"
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "Ja"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "Nee"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "Opnieuw proberen"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "Negeren"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "Annuleren"
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org containing at least the version (%s) and the following "
+"message: "
+msgstr ""
+"U bent tegen een programmeerfout in GNU Parted aangelopen. Zie de website "
+"van Parted (http://www.gnu.org/software/parted/parted.html) voor meer "
+"informatie over het nuttig rapporteren van fouten. Stuur de foutrapportage "
+"alstublieft naar <bug-parted@gnu.org> met het versienummer (%s) en de "
+"volgende boodschap:"
+
+#: libparted/filesys.c:384
+msgid "Could not detect file system."
+msgstr "Kan geen bestandssysteem vinden."
+
+#: libparted/filesys.c:395
+msgid "The file system is bigger than its volume!"
+msgstr "Het bestandssysteem is groter dan de partitie!"
+
+#: libparted/filesys.c:403
+#, c-format
+msgid "Support for opening %s file systems is not implemented yet."
+msgstr ""
+"Ondersteuning voor het openen van %s-bestandssystemen is nog niet "
+"geïmplementeerd."
+
+#: libparted/filesys.c:445
+#, c-format
+msgid "Support for creating %s file systems is not implemented yet."
+msgstr ""
+"Ondersteuning voor het maken van %s-bestandssystemen is nog niet "
+"geïmplementeerd."
+
+#: libparted/filesys.c:505
+#, c-format
+msgid "Support for checking %s file systems is not implemented yet."
+msgstr ""
+"Ondersteuning voor het controleren van %s-bestandssystemen is nog niet "
+"geïmplementeerd."
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr "bezig met kopiëren van blokken"
+
+#: libparted/filesys.c:582
+msgid "growing file system"
+msgstr "bezig met vergroten van bestandssysteem"
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr "Kan niet naar een overlappende partitie kopiëren."
+
+#: libparted/filesys.c:644
+#, c-format
+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 tegelijkertijd kopiëren en 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."
+
+#: libparted/filesys.c:658
+#, c-format
+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."
+
+#: libparted/filesys.c:696
+#, c-format
+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."
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, fuzzy
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr "Het bestandssysteem is groter dan de partitie!"
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "controleer"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, fuzzy
+msgid ""
+"The reiserfs file system passed a basic check. For a more comprehensive "
+"check, run reiserfsck --check."
+msgstr ""
+"Het ext2-bestandssysteem heeft deze basistest goed doorstaan. Voor een meer "
+"uitgebreide test kunt u het programma e2fsck gebruiken."
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, fuzzy
+msgid "Sorry, can't move the start of reiserfs partitions yet."
+msgstr "Sorry, het begin van een ext2-partitie kan nog niet verplaatst worden!"
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+msgid "shrinking"
+msgstr "bezig met verkleinen"
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "Waarschuwing"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, fuzzy, c-format
+msgid "Device is too small for %lu blocks."
+msgstr "Het bestandssysteem is te klein voor ext2."
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr ""
+"Ondersteuning voor het maken van %s-bestandssystemen is nog niet "
+"geïmplementeerd."
+
+#: libparted/labels/aix.c:148
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr ""
+"Ondersteuning voor het maken van %s-bestandssystemen is nog niet "
+"geïmplementeerd."
+
+#: libparted/labels/aix.c:161
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+"Ondersteuning voor het maken van %s-bestandssystemen is nog niet "
+"geïmplementeerd."
+
+#: libparted/labels/aix.c:171
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"Ondersteuning voor het maken van %s-bestandssystemen is nog niet "
+"geïmplementeerd."
+
+#: libparted/labels/aix.c:189
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"Ondersteuning voor het maken van %s-bestandssystemen is nog niet "
+"geïmplementeerd."
+
+#: libparted/labels/aix.c:199
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+"Ondersteuning voor het maken van %s-bestandssystemen is nog niet "
+"geïmplementeerd."
+
+#: libparted/labels/bsd.c:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Kan niet aan alle voorwaarden voor deze partitie voldoen."
+
+#: libparted/labels/bsd.c:526
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Kan in het BSD-schijflabel geen plekje meer reserveren."
+
+#: libparted/labels/dasd.c:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "Kan de grootte van %s niet achterhalen -- %s."
+
+#: libparted/labels/dasd.c:781
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Kan in het BSD-schijflabel geen plekje meer reserveren."
+
+#: libparted/labels/dos.c:827
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Ongeldige partitietabel op %s -- onjuiste vingerafdruk %x."
+
+#: libparted/labels/dos.c:855
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Ongeldige partitietabel -- recursieve partitie op %s."
+
+#: libparted/labels/dos.c:1318
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr ""
+"Uitgebreide partities kunnen op MSDOS-schijflabels niet verborgen zijn."
+
+#: libparted/labels/dos.c:1958
+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:190
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%s bevat geen uitgebreide partitie (volumenkop-partitie)."
+
+#: libparted/labels/dvh.c:313
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr "Onjuiste controlesom: de partitietabel is beschadigd."
+
+#: libparted/labels/dvh.c:616
+msgid "Only primary partitions can be root partitions."
+msgstr "Alleen een primaire partitie kan rootpartitie zijn."
+
+#: libparted/labels/dvh.c:630
+msgid "Only primary partitions can be swap partitions."
+msgstr "Alleen een primaire partitie kan swappartitie zijn."
+
+#: libparted/labels/dvh.c:644
+msgid "Only logical partitions can be a boot file."
+msgstr "Alleen een logische partitie kan een opstartbestand zijn."
+
+#: libparted/labels/dvh.c:721
+msgid "Only logical partitions (boot files) have a name."
+msgstr "Alleen logische partities (opstartbestanden) hebben een naam."
+
+#: libparted/labels/dvh.c:812
+msgid "Too many primary partitions"
+msgstr "Te veel primaire partities."
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "%s tijdens schrijven naar %s"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, fuzzy, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr "Schijf %s: %s\n"
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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 heeft u de GPT-tabel "
+"verwijderd en gebruikt nu een MSDOS-partitietabel. Is dit echt een GPT-"
+"partitietabel?"
+
+#: libparted/labels/gpt.c:648
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+msgstr ""
+"De indeling van de GPT-partitietabel is van versie %x. Dit is nieuwer dan "
+"wat deze versie van Parted kent. Vertel het ons: <bug-parted@gnu.org>"
+
+#: libparted/labels/gpt.c:698
+#, 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:827
+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:862
+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:870
+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/mac.c:181
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Ongeldige vingerafdruk %x voor een Mac-schijflabel."
+
+#: libparted/labels/mac.c:226
+msgid "Partition map has no partition map entry!"
+msgstr "Partitietabel bevat geen partitietabelitem!"
+
+#: libparted/labels/mac.c:273
+#, 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:532
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Partitie %d heeft een ongeldige vingerafdruk %x."
+
+#: libparted/labels/mac.c:550
+#, 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:580
+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:597
+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:611
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "Het opstartgebied beslaat niet de gehele partitie."
+
+#: libparted/labels/mac.c:622
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "Het gegevensgebied beslaat niet de gehele partitie."
+
+#: libparted/labels/mac.c:675
+#, 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:688
+#, 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:736
+msgid "No valid partition map found."
+msgstr "Geen geldige partitietabel gevonden."
+
+#: libparted/labels/mac.c:795
+#, 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! Item 1 zegt dat het %d is, "
+"maar item %d zegt dat het %d is!"
+
+#: libparted/labels/mac.c:822
+msgid "Weird! There are 2 partitions map entries!"
+msgstr "Vreemd: twee partitietabelitems!"
+
+#: libparted/labels/mac.c:1347
+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:1443
+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:354
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Ongeldige partitietabel op %s."
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, 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:791
+msgid "Can't add another partition."
+msgstr "Kan niet nog een partitie toevoegen."
+
+#: libparted/labels/rdb.c:162
+#, 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:497
+#, 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:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s : Lus gedetecteerd bij blok %d."
+
+#: libparted/labels/rdb.c:600
+#, 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:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s : Invullen van slechte blokken is mislukt."
+
+#: libparted/labels/rdb.c:697
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s : Invullen van partitieblokken is mislukt."
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s : Invullen van bestandssysteemblokken is mislukt."
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s : Invullen van opstartblokken is mislukt."
+
+#: libparted/labels/rdb.c:740
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Schrijven van partitieblok %d is mislukt."
+
+#: libparted/labels/rdb.c:1069
+msgid "Unable to allocate a partition number."
+msgstr "Geen partitienummer meer beschikbaar."
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr "Beschadigd Sun-schijflabel gevonden."
+
+#: libparted/labels/sun.c:266
+#, 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:288
+#, 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:442
+#, 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:737
+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 (het Sparc-"
+"opstartprogramma) waardeert de aanwezigheid ervan ook."
+
+#: libparted/labels/sun.c:752
+msgid "Sun disk label is full."
+msgstr "Sun-schijflabel is vol."
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr "Onvoldoende geheugen."
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr "Kan grootte van speciale eenheid 'COMPACT' niet bepalen."
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "\"%s\" heeft een voor lokaties ongeldige syntaxis."
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "De maximum waarde voor de kop is %d."
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "De maximum waarde voor de sector is %d."
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "Lokatie %s ligt buiten het apparaat %s."
+
+#: libparted/unit.c:527
+msgid "Invalid number."
+msgstr "Ongeldig nummer."
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s : Invullen van partitieblokken is mislukt."
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, fuzzy, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s : Invullen van opstartblokken is mislukt."
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, fuzzy, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s : Lus gedetecteerd bij blok %d."
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, fuzzy, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s : Lus gedetecteerd bij blok %d."
+
+#: libparted/fs/amiga/amiga.c:72
+#, fuzzy, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s : Invullen van slechte blokken is mislukt."
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, fuzzy, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s : Onjuiste controlesom op blok %llu van type %s."
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s : Lus gedetecteerd bij blok %d."
+
+#: libparted/fs/amiga/amiga.c:278
+#, fuzzy, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s : Invullen van slechte blokken is mislukt."
+
+#: libparted/fs/amiga/amiga.c:289
+#, fuzzy, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s : Geen 'rdb'-blok gevonden -- zou nooit mogen gebeuren."
+
+#: libparted/fs/amiga/amiga.c:318
+#, fuzzy, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s : Invullen van partitieblokken is mislukt."
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr "Inconsistente groepsbeschrijvers!"
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+msgid "File system full!"
+msgstr "Bestandssysteem is vol!"
+
+#: libparted/fs/ext2/ext2.c:686
+msgid "Invalid superblock. Are you sure this is an ext2 file system?"
+msgstr "Ongeldig superblok. Weet u zeker dat dit een ext2-bestandssysteem is?"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+msgid "File system has errors! You should run e2fsck."
+msgstr "Het bestandssysteem bevat fouten! Voer eerst e2fsck uit."
+
+#: libparted/fs/ext2/ext2.c:711
+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."
+
+#: libparted/fs/ext2/ext2.c:731
+msgid "File system has an incompatible feature enabled."
+msgstr "Het bestandssysteem gebruikt een incompatibele functie."
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr "Fout tijdens reserveren van buffercache."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+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."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr "Niet genoeg beschikbare inodes!"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+msgid "File system is too full to remove a group!"
+msgstr "Het bestandssysteem is te vol om een groep te verwijderen!"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+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!"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr "bezig met toevoegen van groepen"
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, c-format
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, c-format
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:666
+msgid "File system was not cleanly unmounted! You should run e2fsck."
+msgstr ""
+"Het bestandssysteem werd niet correct ontkoppeld! Voer eerst e2fsck uit."
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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'."
+
+#: libparted/fs/ext2/ext2_resize.c:691
+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 ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+msgid "Cross-linked blocks found! Better go run e2fsck first!"
+msgstr ""
+"Kruiselings gekoppelde blokken gevonden! U kunt beter eerst e2fsck "
+"uitvoeren."
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "Aan blok %i wordt niet gerefereerd! Merkwaardig."
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "Blok %i zou niet (%d, %d) gemarkeerd moeten zijn!"
+
+#: libparted/fs/ext2/interface.c:186
+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. Voor een meer "
+"uitgebreide test kunt u het programma e2fsck gebruiken."
+
+#: libparted/fs/ext2/interface.c:203
+msgid "Sorry, can't move the start of ext2 partitions yet!"
+msgstr "Sorry, het begin van een ext2-partitie kan nog niet verplaatst worden!"
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr "Kan de buffercache niet leegmaken!"
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr "bezig met schrijven van groepsmetagegevens"
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr "Het bestandssysteem is te klein voor ext2."
+
+#: libparted/fs/fat/calc.c:135
+#, c-format
+msgid ""
+"You need %s of free disk space to shrink this partition to this size. "
+"Currently, only %s is free."
+msgstr ""
+"U heeft minstens %s vrije schijfruimte nodig om deze partitie naar die "
+"grootte te kunnen verkleinen (u heeft nu slechts %s beschikbaar)."
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:308
+#, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr "Partitie is te klein of te groot voor een %s-bestandssysteem."
+
+#: libparted/fs/fat/fat.c:474
+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 FATs komen niet overeen. Als u niet weet wat dit betekent, selecteer dan "
+"'Annuleren', voer scandisk uit op het bestandssysteem, en kom dan weer terug."
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr "Er zijn geen mogelijke configuraties voor dit type FAT."
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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 FATs is %d sectoren (%d verwacht)."
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:874
+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/resize.c:159
+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."
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr "Fout tijdens schrijven naar de hoofdmap."
+
+#: libparted/fs/fat/resize.c:489
+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."
+
+#: libparted/fs/fat/resize.c:492
+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 het MS-Windows-opstartprogramma opnieuw te "
+"installeren. Als u dit wilt doen, raadpleeg dan de Parted-documentatie (of "
+"de documentatie van uw distributie)."
+
+#: libparted/fs/fat/resize.c:500
+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."
+
+#: libparted/fs/fat/resize.c:504
+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 het MS-Windows-opstartprogramma 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."
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr "Wilt u FAT32 gebruiken?"
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: libparted/fs/fat/resize.c:551
+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."
+
+#: libparted/fs/fat/resize.c:567
+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."
+
+#: libparted/fs/fat/resize.c:580
+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!"
+
+#: 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 FATs."
+
+#: libparted/fs/fat/bootsector.c:139
+#, 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:164
+#, 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:213
+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:219
+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:225
+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:235
+msgid "File system is FAT12, which is unsupported."
+msgstr "Het bestandssysteem is FAT12. Dit wordt niet ondersteund."
+
+#: libparted/fs/fat/bootsector.c:411
+#, 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/fat/count.c:152
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:174
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:203
+#, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr "%s is %dk, maar heeft %d clusters (%dk)."
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:269
+#, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "fat_table_set(): cluster %ld ligt buiten het bestandssysteem"
+
+#: libparted/fs/fat/table.c:301
+#, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "fat_table_get(): cluster %ld ligt buiten het bestandssysteem"
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "fat_table_alloc_cluster(): geen beschikbare clusters"
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Onbekende vingerafdruk '%10s' voor Linux-swappartitie."
+
+#: libparted/fs/linux_swap/linux_swap.c:318
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Onbekende vingerafdruk '%10s' voor Linux-swappartitie."
+
+#: libparted/fs/linux_swap/linux_swap.c:358
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Onbekende vingerafdruk '%10s' voor Linux-swappartitie."
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr "Te veel slechte pagina's."
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr "Het bestandssysteem bevat fouten."
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr "Slechte blokken konden niet gelezen worden."
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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!"
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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!"
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+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."
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+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."
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr "Kan sector %lli van HFS-bestand met CNID %X niet vinden."
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+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."
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+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."
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+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."
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr "Kan sector %lli van HFS+-bestand met CNID %X niet vinden."
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+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."
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr "Sorry, HFS kan nog niet op deze manier van grootte veranderd worden."
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr "De gegevensverplaatsing is mislukt."
+
+#: libparted/fs/hfs/hfs.c:281
+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."
+
+#: libparted/fs/hfs/hfs.c:320
+msgid "writing HFS Master Directory Block"
+msgstr "bezig met schrijven van HFS-hoofdmapblok"
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr "Geen geldige HFS[+X]-vingerafdruk gevonden tijdens openen."
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr "Versie %d van HFS+ wordt niet ondersteund."
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr "Versie %d van HFSX wordt niet ondersteund."
+
+#: libparted/fs/hfs/hfs.c:672
+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."
+
+#: libparted/fs/hfs/hfs.c:720
+msgid "Error while writing the allocation file."
+msgstr "Fout tijdens schrijven van het reserveringsbestand."
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr ""
+"Fout tijdens schrijven van het compatibiliteitsdeel van het "
+"reserveringsbestand."
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr "bezig met schrijven van HFS+-volumenkop"
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr "Fout tijdens zoeken naar het vereiste slechte-blokkenbestand."
+
+#: libparted/fs/hfs/hfs.c:904
+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."
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr "Sorry, HFS+ kan nog niet op deze manier van grootte veranderd worden."
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr "bezig met verkleinen van een ingebed HFS+-volumen"
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr "Het van grootte veranderen van het HFS+-volumen is mislukt."
+
+#: libparted/fs/hfs/hfs.c:998
+msgid "shrinking HFS wrapper"
+msgstr "bezig met verkleinen van HFS-wikkel"
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr "Het bijwerken van de HFS-wikkel is mislukt."
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+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."
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr "Onjuiste controlesom van kop van blokkenlijst."
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+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."
+
+#: libparted/fs/hfs/journal.c:260
+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."
+
+#: libparted/fs/hfs/journal.c:271
+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."
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr "Onjuiste magische getallen in de journalkop."
+
+#: libparted/fs/hfs/journal.c:302
+msgid "Journal size mismatch between journal info block and journal header."
+msgstr ""
+"Journalgrootte is verschillend aangegeven in journal-infoblok en journalkop."
+
+#: libparted/fs/hfs/journal.c:314
+msgid "Some header fields are not multiple of the sector size."
+msgstr ""
+"Sommige velden in de journalkop zijn geen veelvoud van de sectorgrootte."
+
+#: libparted/fs/hfs/journal.c:323
+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."
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr "Onjuiste controlesom van journal."
+
+#: libparted/fs/hfs/journal.c:353
+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."
+
+#: libparted/fs/hfs/journal.c:381
+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."
+
+#: libparted/fs/hfs/probe.c:51
+#, 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."
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr "Een 'extent' is niet verplaatst."
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+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!"
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr ""
+"Dit HFS-volumen heeft geen catalogusbestand. Dit is zeer ongebruikelijk!"
+
+#: libparted/fs/hfs/reloc.c:475
+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!"
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+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!"
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+msgid "Could not cache the file system in memory."
+msgstr "Kan het bestandssysteem niet tijdelijk opslaan in het geheugen."
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr "De lijst met slechte blokken kan niet geladen worden."
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr "Er is een fout opgetreden tijdens het verplaatsen van een 'extent'."
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr ""
+"Dit HFS+-volumen heeft geen catalogusbestand. Dit is zeer ongebruikelijk!"
+
+#: libparted/fs/hfs/reloc_plus.c:619
+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!"
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr "deze hulptekst tonen"
+
+#: parted/parted.c:95
+#, fuzzy
+msgid "lists partition layout on all block devices"
+msgstr "de partietabellen van alle apparaten tonen"
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr "nooit vragen stellen"
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr "de programmaversie tonen"
+
+#: parted/parted.c:111
+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:114
+msgid "LABEL-TYPE is one of: "
+msgstr "LABEL-TYPE is een van: "
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr "VLAG is een van: "
+
+#: parted/parted.c:116
+msgid "UNIT is one of: "
+msgstr "EENHEID is een van: "
+
+#: parted/parted.c:117
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "PART-TYPE is een van: primair, logisch, uitgebreid\n"
+
+#: parted/parted.c:119
+msgid "FS-TYPE is one of: "
+msgstr "BS-SOORT is een van: "
+
+#: parted/parted.c:120
+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 schijflokaties, 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:123
+msgid "STATE is one of: on, off\n"
+msgstr "TOESTAND is één van: aan, uit\n"
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "APPARAAT is gewoonlijk /dev/hda of /dev/sda\n"
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr "NAAM is elk woord dat u wilt\n"
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr "De partitie dient een van de volgende BS-SOORTen te hebben: "
+
+#: parted/parted.c:130
+#, 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 - 2006 Free Software Foundation, Inc.\n"
+"Dit is vrije programmatuur, vallend onder de GNU General Public License.\n"
+"\n"
+"Dit programma wordt uitgegeven in de hoop dat het nuttig is, maar ZONDER "
+"ENIGE GARANTIE; zelfs zonder de impliciete garantie van VERKOOPBAARHEID of "
+"GESCHIKTHEID VOOR EEN BEPAALD DOEL. Zie de GNU General Public License voor "
+"nadere details.\n"
+
+#: parted/parted.c:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(resterende tijd: %.2d:%.2d)"
+
+#: parted/parted.c:195
+#, 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:211
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Partitie(s) op %s zijn in gebruik."
+
+#: parted/parted.c:223
+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?"
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+msgid "Partition number?"
+msgstr "Nummer van partitie?"
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr "Bronapparaat?"
+
+#: parted/parted.c:504
+msgid "Source partition number?"
+msgstr "Nummer van bronpartitie?"
+
+#: parted/parted.c:509
+msgid "Can't copy an extended partition."
+msgstr "Kan een uitgebreide partitie niet kopiëren."
+
+#: parted/parted.c:515
+msgid "Destination partition number?"
+msgstr "Nummer van doelpartitie?"
+
+#: parted/parted.c:615
+msgid "New disk label type?"
+msgstr "Type van nieuw schijflabel?"
+
+#: parted/parted.c:656
+msgid "File system?"
+msgstr "Bestandssysteem?"
+
+#: parted/parted.c:707 parted/parted.c:878
+msgid "Partition type?"
+msgstr "Partitietype?"
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+msgid "Partition name?"
+msgstr "Naam van partitie?"
+
+#: parted/parted.c:722 parted/parted.c:895
+msgid "File system type?"
+msgstr "Bestandssysteemsoort?"
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr "Begin?"
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr "Einde?"
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+"U verzocht om een partitie van %s tot %s.\n"
+"De dichtstbijzijnde mogelijkheid is van %s tot %s. Is dit nog acceptabel?"
+
+#: parted/parted.c:890
+msgid "An extended partition cannot hold a file system. Did you want mkpart?"
+msgstr ""
+"Een uitgebreide partitie kan geen bestandssysteem bevatten. Bedoelde u "
+"'maakpart'?"
+
+#: parted/parted.c:1050
+msgid "Can't move an extended partition."
+msgstr "Kan een uitgebreide partitie niet verplaatsen."
+
+#: parted/parted.c:1079
+msgid "Can't move a partition onto itself. Try using resize, perhaps?"
+msgstr ""
+"Kan een partitie niet naar zichzelf verplaatsen. Bedoelde u 'grootte'?"
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr "Nummer: %d\n"
+
+#: parted/parted.c:1228
+#, c-format
+msgid "Flags: %s\n"
+msgstr "Vlaggen: %s\n"
+
+#: parted/parted.c:1229
+#, c-format
+msgid "File System: %s\n"
+msgstr "Bestandssysteem: %s\n"
+
+#: parted/parted.c:1230
+msgid "Size: "
+msgstr "Grootte: "
+
+#: parted/parted.c:1235
+msgid "Minimum size: "
+msgstr "Minimum grootte: "
+
+#: parted/parted.c:1238
+msgid "Maximum size: "
+msgstr "Maximum grootte: "
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr "Model: %s (%s)\n"
+
+#: parted/parted.c:1364
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "Schijf %s: %s\n"
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "Sectorgrootte (logisch/fysiek): %lldB/%lldB\n"
+
+#: parted/parted.c:1383
+#, 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:1392
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "Partitietabel: %s\n"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr "Nummer"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Start"
+msgstr "Begin"
+
+#: parted/parted.c:1407 parted/parted.c:1410
+msgid "End"
+msgstr "Einde"
+
+#: parted/parted.c:1410
+msgid "Size"
+msgstr "Grootte"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr "Type"
+
+#: parted/parted.c:1416
+msgid "File system"
+msgstr "Bestandssysteem"
+
+#: parted/parted.c:1419
+msgid "Name"
+msgstr "Naam"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr "Vlaggen"
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr "Vrije ruimte"
+
+#: parted/parted.c:1624
+#, 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:1663
+msgid "searching for file systems"
+msgstr "bezig met zoeken naar bestandssystemen"
+
+#: parted/parted.c:1877
+msgid "New device?"
+msgstr "Nieuw apparaat?"
+
+#: parted/parted.c:1902
+msgid "Flag to Invert?"
+msgstr "Om te zetten vlag?"
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr "Nieuwe toestand?"
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr "Eenheid?"
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "controleer"
+
+#: parted/parted.c:2096
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr ""
+"controleer NUMMER een simpele controle uitvoeren van "
+"bestandssysteem op partitie NUMMER"
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "kopieer"
+
+#: parted/parted.c:2105
+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"
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "hulp"
+
+#: parted/parted.c:2114
+#, fuzzy
+msgid ""
+"help [COMMAND] print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [OPDRACHT] enige algemene hulp geven (of hulp bij OPDRACHT)"
+
+#: parted/parted.c:2120
+msgid "mklabel"
+msgstr "maaklabel"
+
+#: parted/parted.c:2120
+msgid "mktable"
+msgstr "maaktabel"
+
+#: parted/parted.c:2123
+msgid ""
+"mklabel,mktable LABEL-TYPE create a new disklabel (partition "
+"table)"
+msgstr ""
+"maaklabel LABEL-TYPE nieuw schijflabel maken (met lege partitietabel)"
+
+#: parted/parted.c:2129
+msgid "mkfs"
+msgstr "maakbs"
+
+#: parted/parted.c:2132
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+"maakbs NUMMER BS-SOORT op partitie NUMMER een bestandssysteem van BS-"
+"SOORT aanmaken"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "maakpart"
+
+#: parted/parted.c:2141
+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:2147
+#, 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 ""
+"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:2152
+msgid "mkpartfs"
+msgstr "maakpartbs"
+
+#: parted/parted.c:2155
+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 "
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr "schuif"
+
+#: parted/parted.c:2164
+msgid "move NUMBER START END move partition NUMBER"
+msgstr ""
+"schuif NUMMER BEGIN EINDE partitie verplaatsen naar nieuw BEGIN en EINDE"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "noem"
+
+#: parted/parted.c:2172
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr "noem NUMMER NAAM partitie NUMMER deze NAAM geven"
+
+#: parted/parted.c:2177
+msgid "print"
+msgstr "toon"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr "de partietabellen van alle apparaten tonen"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "einde"
+
+#: parted/parted.c:2199
+msgid "quit exit program"
+msgstr "einde programma afsluiten"
+
+#: parted/parted.c:2204
+msgid "rescue"
+msgstr "red"
+
+#: parted/parted.c:2207
+msgid ""
+"rescue START END rescue a lost partition near START "
+"and END"
+msgstr ""
+"red BEGIN EINDE een verloren partitie proberen te herstellen"
+
+#: parted/parted.c:2213
+msgid "resize"
+msgstr "grootte"
+
+#: parted/parted.c:2216
+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"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "verwijder"
+
+#: parted/parted.c:2227
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "verwijder NUMMER partitie NUMMER verwijderen"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "kies"
+
+#: parted/parted.c:2235
+msgid "select DEVICE choose the device to edit"
+msgstr "kies APPARAAT dit APPARAAT kiezen om te bewerken"
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr "zet"
+
+#: parted/parted.c:2243
+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:2249
+msgid "toggle"
+msgstr "zetom"
+
+#: parted/parted.c:2252
+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:2258
+msgid "unit"
+msgstr "eenheid"
+
+#: parted/parted.c:2261
+msgid "unit UNIT set the default unit to UNIT"
+msgstr "eenheid EENHEID standaard deze EENHEID gebruiken"
+
+#: parted/parted.c:2266
+msgid "version"
+msgstr "versie"
+
+#: parted/parted.c:2269
+#, fuzzy
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"versie versienummer en copyright van deze Parted tonen"
+
+#: parted/parted.c:2273
+#, fuzzy
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+"'versie' toont informatie over het copyright en de versie van deze GNU "
+"Parted\n"
+
+#: parted/parted.c:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "Geen apparaat gevonden"
+
+#: parted/parted.c:2412
+#, fuzzy
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr ""
+"WAARSCHUWING: u bent niet root.\n"
+"Houd rekening met ontbrekende toegangsrechten.\n"
+
+#: parted/parted.c:2450
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Vergeet niet, indien nodig, /etc/fstab bij te werken.\n"
+
+#: parted/ui.c:160
+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:163
+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"
+"Dit voert OPDRACHT met ARGUMENTEN uit op APPARAAT.\n"
+"Als er geen OPDRACHT gegeven is, wordt interactieve modus gestart.\n"
+
+#: parted/ui.c:168
+#, 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"
+"U heeft een programmeerfout in GNU Parted gevonden. Raak niet in paniek.\n"
+"De fout heeft zeer waarschijnlijk uw gegevens ongemoeid gelaten.\n"
+"\n"
+"Help ons de fout te verbeteren door het volgende te doen:\n"
+"\n"
+"Controleer of de fout al is verbeterd door de nieuwste versie van GNU "
+"Parted\n"
+"te gebruiken die te vinden is op:\n"
+"\n"
+"\thttp://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"
+"\thttp://www.gnu.org/software/parted\n"
+"\n"
+"Uw rapportage dient het versienummer van Parted te bevatten (%s),\n"
+"de onderstaande foutmelding, de uitvoer van\n"
+"\n"
+"\tparted APPARAAT unit co print unit s print\n"
+"\n"
+"en verdere relevante informatie over de configuratie van uw systeem.\n"
+
+#: parted/ui.c:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+#, fuzzy
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"Error: SEGV_MAPERR (Adres niet verbonden met object)"
+
+#: parted/ui.c:372
+#, fuzzy
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"Error: SEGV_ACCERR (Ongeldige toegangsrechten voor object)"
+
+#: parted/ui.c:377
+#, fuzzy
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"Fout: een niet-specifiek SIGSEGV-signaal werd ontvangen."
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"Error: FPE_INTDIV (Deling door nul)"
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"Error: FPE_INTOVF (Overloop)"
+
+#: parted/ui.c:420
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"Error: FPE_FLTDIV (Deling door nul)"
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"Error: FPE_FLTOVF (Overloop)"
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"Error: FPE_FLTUND (Onderloop)"
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"Error: FPE_FLTRES (Inexact resultaat)"
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"Error: FPE_FLTINV (Ongeldige operatie)"
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"Error: FPE_FLTSUB (Index buiten bereik)"
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"Fout: een niet-specifiek SIGFPE-signaal werd ontvangen."
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"Error: ILL_ILLOPC (Ongeldige opcode)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"Error: ILL_ILLOPN (Ongeldige parameter)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"Error: ILL_ILLADR (Ongeldige adresseringsmodus)"
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"Error: ILL_ILLTRP (Ongeldige 'trap')"
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"Error: ILL_PRVOPC (Instructie alleen toegankelijk voor geprivilegeerden)"
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"Error: ILL_PRVREG (Register alleen toegankelijk voor geprivilegeerden)"
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"Error: ILL_COPROC (Coprocessorfout)"
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"Error: ILL_BADSTK (Interne stackfout)"
+
+#: parted/ui.c:523
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"Fout: een niet-specifiek SIGILL-signaal werd ontvangen."
+
+#: parted/ui.c:1024
+msgid "Expecting a partition number."
+msgstr "Een partitienummer wordt verwacht."
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "Partitie bestaat niet."
+
+#: parted/ui.c:1053
+msgid "Expecting a file system type."
+msgstr "Een bestandssysteemsoort wordt verwacht."
+
+#: parted/ui.c:1060
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Onbekende bestandssysteemsoort '%s'."
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr "Een schijflabeltype wordt verwacht."
+
+#: parted/ui.c:1178
+msgid "Can't create any more partitions."
+msgstr "Kan geen nieuwe partities meer maken."
+
+#: parted/ui.c:1188
+msgid "Expecting a partition type."
+msgstr "Een partitietype wordt verwacht."
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr "aan"
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr "uit"
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "OPTIEs:"
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "OPDRACHTen:"
+
+#: parted/ui.c:1445
+#, c-format
+msgid "Using %s\n"
+msgstr "Apparaat %s wordt gebruikt.\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#~ msgid "GNU Parted cannot resize this file system, please useresize2fs."
+#~ msgstr ""
+#~ "GNU Parted kan dit bestandssysteem niet van grootte veranderen;\n"
+#~ "gebruik 'resize2fs'."
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "indien nodig vragen stellen"
+
+#~ msgid "GNU Parted Version information:\n"
+#~ msgstr "GNU Parted versieinformatie:\n"
+
+#~ msgid ""
+#~ "print [free|NUMBER|all] display the partition table, a "
+#~ "partition, or all devices"
+#~ msgstr ""
+#~ "toon [free|NUMMER|all] de partitietabel weergeven (of de vrije "
+#~ "ruimte, of een specifieke partitie, of alle apparaten)"
+
+#~ 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 ""
+#~ "Zonder argumenten toont 'toon' de volledige partitietabel. Met 'free'\n"
+#~ "als argument, toont het hoeveel ruimte er nog beschikbaar is. Met een\n"
+#~ "partitienummer als argument, toont het meer gedetailleerde informatie\n"
+#~ "over die partitie. En met 'all' als argument, toont het informatie over\n"
+#~ "alle apparaten.\n"
diff --git a/parted-1.8.7/po/nn.gmo b/parted-1.8.7/po/nn.gmo
new file mode 100644
index 0000000..45a082a
--- /dev/null
+++ b/parted-1.8.7/po/nn.gmo
Binary files differ
diff --git a/parted-1.8.7/po/nn.po b/parted-1.8.7/po/nn.po
new file mode 100644
index 0000000..70bcaf8
--- /dev/null
+++ b/parted-1.8.7/po/nn.po
@@ -0,0 +1,3336 @@
+# 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: 2007-05-09 17:02-0400\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"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Filsystemtypen «%s» er ukjend."
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Feil ved opning av %s: %s"
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, 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:411 libparted/arch/linux.c:1431
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s under posisjonering før lesing av %s"
+
+#: libparted/arch/beos.c:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s under lesing av %s"
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, 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:496 libparted/arch/linux.c:1570
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s under posisjonering før skriving til %s"
+
+#: libparted/arch/beos.c:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s under skriving til %s"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "For mange dårlege sider."
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr "Kunne ikkje opna %s."
+
+#: libparted/arch/gnu.c:114
+msgid "Unable to probe store."
+msgstr "Kunne ikkje undersøkja lagringsmediet."
+
+#: libparted/arch/gnu.c:352
+#, 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:369
+#, 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:380 parted/parted.c:2443
+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:772
+#, 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:408
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Kunne ikkje undersøkja eininga %s - %s."
+
+#: libparted/arch/linux.c:523
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:539
+#, c-format
+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 ""
+
+#: libparted/arch/linux.c:579
+#, fuzzy, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Klarte ikkje å finna storleiken til %s (%s)"
+
+#: libparted/arch/linux.c:668
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Kunne ikkje finna identiteten til eininga %s - %s"
+
+#: libparted/arch/linux.c:677
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:698
+#, 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:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Initialisering av SCSI-eininga %s gav feil - %s"
+
+#: libparted/arch/linux.c:928
+#, fuzzy, c-format
+msgid ""
+"The device %s has zero length, and can't 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:1032
+#, 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:1110
+msgid "DAC960 RAID controller"
+msgstr "DAC960 RAID-kontroller"
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr "ATARAID-kontroller"
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr "I2O-kontroller"
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr ""
+
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "Ukjent"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "ped_device_new() Einingstypen er ikkje støtta"
+
+#: libparted/arch/linux.c:2083
+#, 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:2262
+#, 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/arch/linux.c:2368
+#, fuzzy, c-format
+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."
+
+#: libparted/cs/geom.c:162
+msgid "Can't have the end before the start!"
+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:366
+#, 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:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr "ser etter dårlege blokker"
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "Kunne ikkje opna %s - ukjend disklabel."
+
+#: libparted/disk.c:471
+#, 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:598
+#, 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:1075
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "Ein %s-disklabel støttar ikkje utvidingspartisjonar."
+
+#: libparted/disk.c:1634
+#, 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:1647
+#, fuzzy
+msgid "Too many primary partitions."
+msgstr "For mange primærpartisjonar"
+
+#: libparted/disk.c:1656
+#, 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:1680
+#, 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:1690
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Kan ikkje ha logiske partisjonar utanfor utvidingspartisjonen."
+
+#: libparted/disk.c:1715
+#, 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:1725 libparted/disk.c:1779 libparted/disk.c:1945
+#, fuzzy
+msgid "Can't have overlapping partitions."
+msgstr "Partisjonar kan ikkje overlappa kvarandre."
+
+#: libparted/disk.c:1733
+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:2140
+msgid "metadata"
+msgstr "metadata"
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "ledig"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "utviding"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "logisk"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "primær"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "boot"
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr "rot"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "skjult"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2190
+#, fuzzy, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Ukjent partisjonsflagg, %d."
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "Informasjon"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "Åtvaring"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "Feil"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "Kritisk"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "Programfeil"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr "Ikkje laga"
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr "Rett opp"
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "Ja"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "Nei"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "Prøv igjen"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "Oversjå"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org 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/filesys.c:384
+msgid "Could not detect file system."
+msgstr "Kan ikkje kjenna igjen noko filsystem."
+
+#: libparted/filesys.c:395
+#, fuzzy
+msgid "The file system is bigger than its volume!"
+msgstr "Filsystemet er større enn volumet det ligg på!"
+
+#: libparted/filesys.c:403
+#, c-format
+msgid "Support for opening %s file systems is not implemented yet."
+msgstr "Støtte for å opna %s-filsystem er ikkje lagt inn enno."
+
+#: libparted/filesys.c:445
+#, c-format
+msgid "Support for creating %s file systems is not implemented yet."
+msgstr "Støtte for å laga %s-filsystem er ikkje lagt inn enno."
+
+#: libparted/filesys.c:505
+#, c-format
+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."
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr "rå blokkopiering"
+
+#: libparted/filesys.c:582
+msgid "growing file system"
+msgstr "aukar storleik på filsystemet"
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr "Kan ikkje kopiera inn i ein overlappande partisjon."
+
+#: libparted/filesys.c:644
+#, fuzzy, c-format
+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."
+
+#: libparted/filesys.c:658
+#, c-format
+msgid "Support for copying %s file systems is not implemented yet."
+msgstr "Støtte for å kopiera %s-filsystem er ikkje lagt inn enno."
+
+#: libparted/filesys.c:696
+#, c-format
+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."
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, fuzzy
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr "Filsystemet er større enn volumet det ligg på!"
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "check"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, 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."
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, fuzzy
+msgid "Sorry, can't move the start of reiserfs partitions yet."
+msgstr "Beklagar, kan ikkje flytta starten på ein ext2-partisjon enno!"
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+msgid "shrinking"
+msgstr "krympar"
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "Åtvaring"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, fuzzy, c-format
+msgid "Device is too small for %lu blocks."
+msgstr "Filsystemet er for lite for ext2."
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, 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:148
+#, 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:161
+#, 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:171
+#, 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:189
+#, 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:199
+#, 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:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Kunne ikkje oppfylla alle dei tekniske krava til partisjonen."
+
+#: libparted/labels/bsd.c:526
+#, fuzzy
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Kunne ikkje tilordna plass i BSD-disklabel."
+
+#: libparted/labels/dasd.c:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "Klarte ikkje å finna storleiken til %s (%s)"
+
+#: libparted/labels/dasd.c:781
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Kunne ikkje tilordna plass i BSD-disklabel."
+
+#: libparted/labels/dos.c:827
+#, fuzzy, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Ugyldig partisjonstabell på %s - feil signatur %x"
+
+#: libparted/labels/dos.c:855
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Ugyldig partisjonstabell - rekursiv partisjon på %s."
+
+#: libparted/labels/dos.c:1318
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr ""
+
+#: libparted/labels/dos.c:1958
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+# checkit
+#: libparted/labels/dvh.c:190
+#, 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:313
+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:616
+msgid "Only primary partitions can be root partitions."
+msgstr "Berre primærpartisjonar kan vera rotpartisjonar."
+
+#: libparted/labels/dvh.c:630
+msgid "Only primary partitions can be swap partitions."
+msgstr "Berre primærpartisjonar kan vera swap-partisjonar."
+
+# checkit
+#: libparted/labels/dvh.c:644
+msgid "Only logical partitions can be a boot file."
+msgstr "Berre logiske partisjonar kan vera ei bootfil."
+
+# checkit
+#: libparted/labels/dvh.c:721
+msgid "Only logical partitions (boot files) have a name."
+msgstr "Berre logiske partisjonar (bootfiler) kan ha namn."
+
+#: libparted/labels/dvh.c:812
+msgid "Too many primary partitions"
+msgstr "For mange primærpartisjonar"
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "%s under skriving til %s"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, fuzzy, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr "%s %s %s"
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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:648
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+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:698
+#, 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:827
+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:862
+#, 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:870
+#, 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/mac.c:181
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Ugyldig signatur %x for ein Mac-disklabel."
+
+#: libparted/labels/mac.c:226
+msgid "Partition map has no partition map entry!"
+msgstr "Partisjonskartet inneheld ingen oppføringar!"
+
+#: libparted/labels/mac.c:273
+#, 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:532
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Partisjon %d har ein ugyldig signatur %x."
+
+#: libparted/labels/mac.c:550
+#, 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:580
+#, 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:597
+#, 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:611
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "Bootregionen fyller ikkje heile partisjonen."
+
+#: libparted/labels/mac.c:622
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "Dataregionen fyller ikkje heile partisjonen."
+
+#: libparted/labels/mac.c:675
+#, 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:688
+#, 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:736
+msgid "No valid partition map found."
+msgstr "Fann ikkje noko gyldig partisjonskart."
+
+#: libparted/labels/mac.c:795
+#, 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:822
+#, fuzzy
+msgid "Weird! There are 2 partitions map entries!"
+msgstr "Merkeleg - to partisjonskartoppføringar!"
+
+#: libparted/labels/mac.c:1347
+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:1443
+#, 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:354
+#, fuzzy, c-format
+msgid "Invalid partition table on %s."
+msgstr "Ugyldig partisjonstabell på %s"
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, 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:791
+msgid "Can't add another partition."
+msgstr "Kan ikkje leggja til ein partisjon til."
+
+#: libparted/labels/rdb.c:162
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:497
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:600
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:697
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:740
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:1069
+#, fuzzy
+msgid "Unable to allocate a partition number."
+msgstr "Forventa eit partisjonsnummer."
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr "Øydelagd Sun-disklabel funne."
+
+#: libparted/labels/sun.c:266
+#, 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:288
+#, 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:442
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:737
+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:752
+msgid "Sun disk label is full."
+msgstr "Sun-disklabel er full."
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr "Tom for minne."
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr ""
+
+#: libparted/unit.c:527
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "Forventa eit partisjonsnummer."
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:72
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s under skriving til %s"
+
+#: libparted/fs/amiga/amiga.c:278
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:289
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:318
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr ""
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr "Inkonsistente gruppe-deskriptorar"
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+#, fuzzy
+msgid "File system full!"
+msgstr "Filsystemet er fullt!"
+
+#: libparted/fs/ext2/ext2.c:686
+#, 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?"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+#, fuzzy
+msgid "File system has errors! You should run e2fsck."
+msgstr "Der er feil på filsystemet! Køyr e2fsck først."
+
+#: libparted/fs/ext2/ext2.c:711
+#, 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."
+
+#: libparted/fs/ext2/ext2.c:731
+#, fuzzy
+msgid "File system has an incompatible feature enabled."
+msgstr "Filsystemet brukar finessar GNU parted ikkje støttar"
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr "Kunne ikkje allokera buffercache."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+#, 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."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr "For få ledige inodar!"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+#, fuzzy
+msgid "File system is too full to remove a group!"
+msgstr "Filsystemet er for fullt til å sletta ei gruppe!"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+#, 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!"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr "legg til grupper"
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, fuzzy, c-format
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, fuzzy, c-format
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:666
+#, 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."
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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 ""
+
+#: libparted/fs/ext2/ext2_resize.c:691
+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 ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+#, fuzzy
+msgid "Cross-linked blocks found! Better go run e2fsck first!"
+msgstr "Krysslenka blokker funne! Køyr e2fsck først!"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, fuzzy, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "Blokk %i har ingen referansar til seg? Rart"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, fuzzy, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "Blokk %i burde ikkje ha vore merka!"
+
+#: libparted/fs/ext2/interface.c:186
+#, 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."
+
+#: libparted/fs/ext2/interface.c:203
+msgid "Sorry, can't move the start of ext2 partitions yet!"
+msgstr "Beklagar, kan ikkje flytta starten på ein ext2-partisjon enno!"
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr "Kunne ikkje lagra buffercache til disk!"
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr "skriv per-gruppe metadata"
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr "Filsystemet er for lite for ext2."
+
+#: libparted/fs/fat/calc.c:135
+#, fuzzy, c-format
+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)"
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:308
+#, fuzzy, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr "Partisjonen er for liten eller stor for eit %s-filsystem"
+
+#: libparted/fs/fat/fat.c:474
+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."
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr "Der er ingen moglege konfigurasjonar for denne FAT-typen."
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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)."
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+msgid ""
+"File system is reporting the free space as %d clusters, not %d clusters."
+msgstr ""
+"Filsystemet rapporterer %d allokeringseiningar med ledig plass, ikkje %d."
+
+#: libparted/fs/fat/fat.c:874
+#, 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/resize.c:159
+#, 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."
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr "Feil ved skriving til toppkatalogen."
+
+#: libparted/fs/fat/resize.c:489
+#, 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."
+
+#: libparted/fs/fat/resize.c:492
+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)."
+
+#: libparted/fs/fat/resize.c:500
+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."
+
+#: libparted/fs/fat/resize.c:504
+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."
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr "Ønskjer du å bruka FAT32?"
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: libparted/fs/fat/resize.c:551
+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."
+
+#: libparted/fs/fat/resize.c:567
+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."
+
+#: libparted/fs/fat/resize.c:580
+#, 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!"
+
+#: 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:139
+#, 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:164
+#, 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:213
+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:219
+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:225
+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:235
+#, fuzzy
+msgid "File system is FAT12, which is unsupported."
+msgstr "Filsystemet er FAT12, som er ustøtta."
+
+#: libparted/fs/fat/bootsector.c:411
+#, 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/fat/count.c:152
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:174
+#, fuzzy, c-format
+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."
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:203
+#, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr "%s er %d KiB, men har %d allokeringseiningar (%d KiB)."
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:269
+#, fuzzy, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "fat_table_set: allokeringseining %ld utanfor filsystemet"
+
+#: libparted/fs/fat/table.c:301
+#, fuzzy, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "fat_table_get: allokeringseining %ld utanfor filsystemet"
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "fat_table_alloc_cluster: ingen ledige allokeringseiningar"
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, 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:318
+#, 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:358
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Ukjent swap-signatur for Linux '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr "For mange dårlege sider."
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr ""
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr ""
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+msgid "Could not update the extent cache for HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+msgid "Trying to write HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+msgid "Could not update the extent cache for HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+msgid "Trying to write HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:320
+#, fuzzy
+msgid "writing HFS Master Directory Block"
+msgstr "Feil ved skriving til toppkatalogen."
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:720
+#, fuzzy
+msgid "Error while writing the allocation file."
+msgstr "Feil ved skriving til toppkatalogen."
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:904
+msgid ""
+"It seems there is an error in the HFS wrapper: the bad blocks file doesn't "
+"contain the embedded HFS+ volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:998
+#, fuzzy
+msgid "shrinking HFS wrapper"
+msgstr "krympar"
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+msgid ""
+"This is not a real %s check. This is going to extract special low level "
+"files for debugging purposes."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+msgid ""
+"Invalid size of a transaction block while replaying the journal (%i bytes)."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:260
+msgid ""
+"Journal stored outside of the volume are not supported. Try to desactivate "
+"the journal and run Parted again."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:271
+#, 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."
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:302
+msgid "Journal size mismatch between journal info block and journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:314
+#, 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."
+
+#: libparted/fs/hfs/journal.c:323
+msgid ""
+"The sector size stored in the journal is not 512 bytes. Parted only "
+"supports 512 bytes length sectors."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:353
+msgid ""
+"The journal is not empty. Parted must replay the transactions before "
+"opening the file system. This will modify the file system."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:381
+msgid ""
+"The volume header or the master directory block has changed while replaying "
+"the journal. You should restart Parted."
+msgstr ""
+
+#: libparted/fs/hfs/probe.c:51
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to %"
+"d bytes."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+msgid ""
+"A reference to an extent comes from a place it should not. You should check "
+"the file system!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:475
+msgid "This HFS volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+msgid ""
+"The extents overflow file should not contain its own extents! You should "
+"check the file system."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+#, fuzzy
+msgid "Could not cache the file system in memory."
+msgstr "Kan ikkje kjenna igjen noko filsystem."
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:619
+msgid "This HFS+ volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr "vis denne hjelpeteksten"
+
+#: parted/parted.c:95
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr "spør aldri brukaren"
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr "vis programversjon"
+
+#: parted/parted.c:111
+#, 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:114
+msgid "LABEL-TYPE is one of: "
+msgstr "LABEL-TYPE er ein av: "
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr "FLAGG er eitt av: "
+
+#: parted/parted.c:116
+#, fuzzy
+msgid "UNIT is one of: "
+msgstr "FLAGG er eitt av: "
+
+#: parted/parted.c:117
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "PART-TYPE er ein av: primær, logisk, utviding\n"
+
+#: parted/parted.c:119
+msgid "FS-TYPE is one of: "
+msgstr "FS-TYPE er ein av: "
+
+#: parted/parted.c:120
+#, 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:123
+msgid "STATE is one of: on, off\n"
+msgstr "STATUS er ein av: av, på\n"
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "EINING er vanlegvis /dev/hda eller /dev/sda\n"
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr "NAMN er eit valfritt ord\n"
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr ""
+
+#: parted/parted.c:130
+#, 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:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(tid att %.2d:%.2d)"
+
+#: parted/parted.c:195
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:211
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Partisjon(ane) på %s er i bruk."
+
+#: parted/parted.c:223
+msgid ""
+"The existing file system will be destroyed and all data on the partition "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+msgid "Partition number?"
+msgstr "Partisjonsnummer?"
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr "Kva eining skal vera kjelda?"
+
+#: parted/parted.c:504
+msgid "Source partition number?"
+msgstr "Kva partisjonsnummer skal vera kjelda?"
+
+#: parted/parted.c:509
+#, fuzzy
+msgid "Can't copy an extended partition."
+msgstr "Kan ikkje kopiera utvidingspartisjonar."
+
+#: parted/parted.c:515
+msgid "Destination partition number?"
+msgstr "Kva partisjonsnummer er målet?"
+
+#: parted/parted.c:615
+msgid "New disk label type?"
+msgstr "Ny disklabel-type?"
+
+#: parted/parted.c:656
+msgid "File system?"
+msgstr "Filsystem?"
+
+#: parted/parted.c:707 parted/parted.c:878
+msgid "Partition type?"
+msgstr "Partisjonstype?"
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+msgid "Partition name?"
+msgstr "Partisjonsnamn?"
+
+#: parted/parted.c:722 parted/parted.c:895
+msgid "File system type?"
+msgstr "Filsystemtype?"
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr "Start?"
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr "Slutt?"
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+
+#: parted/parted.c:890
+#, fuzzy
+msgid "An extended partition cannot hold a file system. Did you want mkpart?"
+msgstr "Utvidingspartisjonar kan ikkje ha filsystem. Meinte du mkpart?"
+
+#: parted/parted.c:1050
+#, fuzzy
+msgid "Can't move an extended partition."
+msgstr "Kan ikkje flytta utvidingspartisjonar."
+
+#: parted/parted.c:1079
+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?"
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr "Nummer: %d\n"
+
+#: parted/parted.c:1228
+#, fuzzy, c-format
+msgid "Flags: %s\n"
+msgstr "Flagg: "
+
+#: parted/parted.c:1229
+#, c-format
+msgid "File System: %s\n"
+msgstr "Filsystem: %s\n"
+
+#: parted/parted.c:1230
+#, fuzzy
+msgid "Size: "
+msgstr "Storleik: %10.3fMiB (%d%%)\n"
+
+#: parted/parted.c:1235
+#, fuzzy
+msgid "Minimum size: "
+msgstr "Minste storleik: %10.3fMiB (%d%%)\n"
+
+#: parted/parted.c:1238
+#, fuzzy
+msgid "Maximum size: "
+msgstr "Største storleik: %10.3fMiB (%d%%)\n"
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:1364
+#, fuzzy, c-format
+msgid "Disk %s: %s\n"
+msgstr "%s %s %s"
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:1383
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d. Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:1392
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "Partisjonsnamn?"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr ""
+
+#: parted/parted.c:1406 parted/parted.c:1409
+#, fuzzy
+msgid "Start"
+msgstr "Start?"
+
+#: parted/parted.c:1407 parted/parted.c:1410
+#, fuzzy
+msgid "End"
+msgstr "Slutt?"
+
+#: parted/parted.c:1410
+#, fuzzy
+msgid "Size"
+msgstr "resize"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr ""
+
+#: parted/parted.c:1416
+#, fuzzy
+msgid "File system"
+msgstr "Filsystem?"
+
+#: parted/parted.c:1419
+#, fuzzy
+msgid "Name"
+msgstr "name"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr "Flagg"
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1624
+#, 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:1663
+msgid "searching for file systems"
+msgstr "leitar etter filsystem"
+
+#: parted/parted.c:1877
+msgid "New device?"
+msgstr "Ny eining?"
+
+#: parted/parted.c:1902
+#, fuzzy
+msgid "Flag to Invert?"
+msgstr "Flagg som skal endrast?"
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr "Ny status?"
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "check"
+
+#: parted/parted.c:2096
+#, fuzzy
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr ""
+"check NR ta ein enkel konsistenssjekk av filsystemet"
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "cp"
+
+#: parted/parted.c:2105
+#, 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"
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:2114
+#, fuzzy
+msgid ""
+"help [COMMAND] print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [KOMMANDO] gjev generell hjelp, eller hjelp om KOMMANDO"
+
+#: parted/parted.c:2120
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:2120
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:2123
+#, fuzzy
+msgid ""
+"mklabel,mktable LABEL-TYPE create a new disklabel (partition "
+"table)"
+msgstr "mklabel LABEL-TYPE lag ny disklabel (partisjonstabell)"
+
+#: parted/parted.c:2129
+msgid "mkfs"
+msgstr "mkfs"
+
+#: parted/parted.c:2132
+#, fuzzy
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+"mkfs NR FS-TYPE lag eit filsystem av FS-TYPE på partisjon NR"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:2141
+#, 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:2147
+#, 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:2152
+msgid "mkpartfs"
+msgstr "mkpartfs"
+
+#: parted/parted.c:2155
+#, 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"
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr "move"
+
+#: parted/parted.c:2164
+#, fuzzy
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "move NR START SLUTT flytt partisjonen NR"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:2172
+#, fuzzy
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr "name NR NAMN gje partisjonen NR namnet NAMN"
+
+#: parted/parted.c:2177
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"print [NR] vis partisjonstabellen eller ein partisjon"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:2199
+#, fuzzy
+msgid "quit exit program"
+msgstr "quit avslutt programmet"
+
+#: parted/parted.c:2204
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:2207
+#, 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:2213
+msgid "resize"
+msgstr "resize"
+
+#: parted/parted.c:2216
+#, 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"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:2227
+#, fuzzy
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "rm NR slett partisjonen NR"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:2235
+#, fuzzy
+msgid "select DEVICE choose the device to edit"
+msgstr "select EINING vel eininga du vil gjera endringar på"
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:2243
+#, 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:2249
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:2252
+msgid ""
+"toggle [NUMBER [FLAG]] toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:2258
+#, fuzzy
+msgid "unit"
+msgstr "quit"
+
+#: parted/parted.c:2261
+#, fuzzy
+msgid "unit UNIT set the default unit to UNIT"
+msgstr "quit avslutt programmet"
+
+#: parted/parted.c:2266
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:2269
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:2273
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "Ingen diskar funne"
+
+#: parted/parted.c:2412
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:2450
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Gløym ikkje å oppdatera /etc/fstab, om naudsynt.\n"
+
+#: parted/ui.c:160
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:163
+#, 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:168
+#, 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:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:372
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:377
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:420
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:523
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:1024
+msgid "Expecting a partition number."
+msgstr "Forventa eit partisjonsnummer."
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "Partisjonen finst ikkje."
+
+#: parted/ui.c:1053
+msgid "Expecting a file system type."
+msgstr "Forventa ei filsystemtype."
+
+#: parted/ui.c:1060
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Filsystemtypen «%s» er ukjend."
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr "Forventa ein disklabel-type."
+
+#: parted/ui.c:1178
+msgid "Can't create any more partitions."
+msgstr "Kan ikkje laga fleire partisjonar."
+
+#: parted/ui.c:1188
+msgid "Expecting a partition type."
+msgstr "Forventa ein partisjonstype."
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr "på"
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr "av"
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "FLAGG:"
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "KOMMANDOar:"
+
+#: parted/ui.c:1445
+#, c-format
+msgid "Using %s\n"
+msgstr "Brukar %s\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "der naudsynt, spør brukaren"
+
+#, 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 ""
+#~ "Utan argument skriv print ut heile partisjonstabellen. Dersom eit\n"
+#~ "partisjonsnummer er oppgjeve, vil meir detaljert informasjon om\n"
+#~ "partisjonen verta vist.\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 ""
+#~ "Sektorane på %s er %d oktettar store. Parted fungerer berre skikkeleg på "
+#~ "diskar som har ein sektorstorleik på %d oktettar"
+
+#~ msgid "Could not read geometry of %s - %s."
+#~ msgstr "Kunne ikkje lesa geometrien til %s - %s."
+
+#~ 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 "File system has an invalid signature for a FAT file systems."
+#~ msgstr "Filsystemet har ein ugyldig signatur til å vera eit FAT-filsystem."
+
+#~ 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 create a partition at %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Du bad om ein partisjon på %.3f-%.3f MiB. Det nærmaste Parted kan koma "
+#~ "er %.3f-%.3f MiB."
+
+#~ 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 "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/parted-1.8.7/po/parted.pot b/parted-1.8.7/po/parted.pot
new file mode 100644
index 0000000..5c5f285
--- /dev/null
+++ b/parted-1.8.7/po/parted.pot
@@ -0,0 +1,2891 @@
+# 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: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2007-05-09 17:02-0400\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"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+msgid "Unknown system error"
+msgstr ""
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr ""
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, c-format
+msgid "Unable to open %s read-write (%s). %s has been opened read-only."
+msgstr ""
+
+#: libparted/arch/beos.c:411 libparted/arch/linux.c:1431
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr ""
+
+#: libparted/arch/beos.c:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr ""
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr ""
+
+#: libparted/arch/beos.c:496 libparted/arch/linux.c:1570
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr ""
+
+#: libparted/arch/beos.c:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, c-format
+msgid "too many arguments"
+msgstr ""
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr ""
+
+#: libparted/arch/gnu.c:114
+msgid "Unable to probe store."
+msgstr ""
+
+#: libparted/arch/gnu.c:352
+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:369
+#, 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:380 parted/parted.c:2443
+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:772
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr ""
+
+#: libparted/arch/linux.c:408
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr ""
+
+#: libparted/arch/linux.c:523
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:539
+#, c-format
+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 ""
+
+#: libparted/arch/linux.c:579
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr ""
+
+#: libparted/arch/linux.c:668
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr ""
+
+#: libparted/arch/linux.c:677
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:698
+#, 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:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr ""
+
+#: libparted/arch/linux.c:928
+#, c-format
+msgid ""
+"The device %s has zero length, and can't possibly store a file system or "
+"partition table. Perhaps you selected the wrong device?"
+msgstr ""
+
+#: libparted/arch/linux.c:1032
+#, 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:1110
+msgid "DAC960 RAID controller"
+msgstr ""
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr ""
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr ""
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr ""
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr ""
+
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr ""
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr ""
+
+#: libparted/arch/linux.c:2083
+#, 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:2262
+#, 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/arch/linux.c:2368
+#, c-format
+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 ""
+
+#: libparted/cs/geom.c:162
+msgid "Can't have the end before the start!"
+msgstr ""
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr ""
+
+#: libparted/cs/geom.c:366
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr ""
+
+#: libparted/cs/geom.c:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr ""
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr ""
+
+#: libparted/disk.c:471
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s. Perhaps it was compiled "
+"read-only."
+msgstr ""
+
+#: libparted/disk.c:598
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr ""
+
+#: libparted/disk.c:1075
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr ""
+
+#: libparted/disk.c:1634
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr ""
+
+#: libparted/disk.c:1647
+msgid "Too many primary partitions."
+msgstr ""
+
+#: libparted/disk.c:1656
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+
+#: libparted/disk.c:1680
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr ""
+
+#: libparted/disk.c:1690
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr ""
+
+#: libparted/disk.c:1715
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr ""
+
+#: libparted/disk.c:1725 libparted/disk.c:1779 libparted/disk.c:1945
+msgid "Can't have overlapping partitions."
+msgstr ""
+
+#: libparted/disk.c:1733
+msgid "Can't have a primary partition inside an extended partition."
+msgstr ""
+
+#: libparted/disk.c:2140
+msgid "metadata"
+msgstr ""
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr ""
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr ""
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr ""
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr ""
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr ""
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr ""
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr ""
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr ""
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr ""
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr ""
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr ""
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr ""
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2190
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr ""
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr ""
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr ""
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr ""
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr ""
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr ""
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr ""
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr ""
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr ""
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr ""
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr ""
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr ""
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr ""
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr ""
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org containing at least the version (%s) and the following "
+"message: "
+msgstr ""
+
+#: libparted/filesys.c:384
+msgid "Could not detect file system."
+msgstr ""
+
+#: libparted/filesys.c:395
+msgid "The file system is bigger than its volume!"
+msgstr ""
+
+#: libparted/filesys.c:403
+#, c-format
+msgid "Support for opening %s file systems is not implemented yet."
+msgstr ""
+
+#: libparted/filesys.c:445
+#, c-format
+msgid "Support for creating %s file systems is not implemented yet."
+msgstr ""
+
+#: libparted/filesys.c:505
+#, c-format
+msgid "Support for checking %s file systems is not implemented yet."
+msgstr ""
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr ""
+
+#: libparted/filesys.c:582
+msgid "growing file system"
+msgstr ""
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr ""
+
+#: libparted/filesys.c:644
+#, c-format
+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 ""
+
+#: libparted/filesys.c:658
+#, c-format
+msgid "Support for copying %s file systems is not implemented yet."
+msgstr ""
+
+#: libparted/filesys.c:696
+#, c-format
+msgid "Support for resizing %s file systems is not implemented yet."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+msgid "checking"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+msgid ""
+"The reiserfs file system passed a basic check. For a more comprehensive "
+"check, run reiserfsck --check."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+msgid "Sorry, can't move the start of reiserfs partitions yet."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+msgid "shrinking"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+msgid "expanding"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, c-format
+msgid "Device is too small for %lu blocks."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr ""
+
+#: libparted/labels/aix.c:148
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr ""
+
+#: libparted/labels/aix.c:161
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+
+#: libparted/labels/aix.c:171
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+
+#: libparted/labels/aix.c:189
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+
+#: libparted/labels/aix.c:199
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+
+#: libparted/labels/bsd.c:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+msgid "Unable to satisfy all constraints on the partition."
+msgstr ""
+
+#: libparted/labels/bsd.c:526
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr ""
+
+#: libparted/labels/dasd.c:166
+msgid "Unable to determine the block size of this dasd"
+msgstr ""
+
+#: libparted/labels/dasd.c:781
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr ""
+
+#: libparted/labels/dos.c:827
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr ""
+
+#: libparted/labels/dos.c:855
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr ""
+
+#: libparted/labels/dos.c:1318
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr ""
+
+#: libparted/labels/dos.c:1958
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+#: libparted/labels/dvh.c:190
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr ""
+
+#: libparted/labels/dvh.c:313
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+
+#: libparted/labels/dvh.c:616
+msgid "Only primary partitions can be root partitions."
+msgstr ""
+
+#: libparted/labels/dvh.c:630
+msgid "Only primary partitions can be swap partitions."
+msgstr ""
+
+#: libparted/labels/dvh.c:644
+msgid "Only logical partitions can be a boot file."
+msgstr ""
+
+#: libparted/labels/dvh.c:721
+msgid "Only logical partitions (boot files) have a name."
+msgstr ""
+
+#: libparted/labels/dvh.c:812
+msgid "Too many primary partitions"
+msgstr ""
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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:648
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+msgstr ""
+
+#: libparted/labels/gpt.c:698
+#, 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:827
+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:862
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+
+#: libparted/labels/gpt.c:870
+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/mac.c:181
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr ""
+
+#: libparted/labels/mac.c:226
+msgid "Partition map has no partition map entry!"
+msgstr ""
+
+#: libparted/labels/mac.c:273
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr ""
+
+#: libparted/labels/mac.c:532
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr ""
+
+#: libparted/labels/mac.c:550
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr ""
+
+#: libparted/labels/mac.c:580
+msgid "The data region doesn't start at the start of the partition."
+msgstr ""
+
+#: libparted/labels/mac.c:597
+msgid "The boot region doesn't start at the start of the partition."
+msgstr ""
+
+#: libparted/labels/mac.c:611
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr ""
+
+#: libparted/labels/mac.c:622
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr ""
+
+#: libparted/labels/mac.c:675
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+
+#: libparted/labels/mac.c:688
+#, 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:736
+msgid "No valid partition map found."
+msgstr ""
+
+#: libparted/labels/mac.c:795
+#, 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:822
+msgid "Weird! There are 2 partitions map entries!"
+msgstr ""
+
+#: libparted/labels/mac.c:1347
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+
+#: libparted/labels/mac.c:1443
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr ""
+
+#: libparted/labels/pc98.c:354
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr ""
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries. This is still "
+"unsupported."
+msgstr ""
+
+#: libparted/labels/pc98.c:791
+msgid "Can't add another partition."
+msgstr ""
+
+#: libparted/labels/rdb.c:162
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:497
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:600
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:697
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:740
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:1069
+msgid "Unable to allocate a partition number."
+msgstr ""
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr ""
+
+#: libparted/labels/sun.c:266
+#, 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:288
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr ""
+
+#: libparted/labels/sun.c:442
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:737
+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:752
+msgid "Sun disk label is full."
+msgstr ""
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr ""
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr ""
+
+#: libparted/unit.c:527
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:72
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:212
+#, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:278
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:289
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:318
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr ""
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr ""
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+msgid "File system full!"
+msgstr ""
+
+#: libparted/fs/ext2/ext2.c:686
+msgid "Invalid superblock. Are you sure this is an ext2 file system?"
+msgstr ""
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+msgid "File system has errors! You should run e2fsck."
+msgstr ""
+
+#: libparted/fs/ext2/ext2.c:711
+msgid ""
+"File system was not cleanly unmounted! You should run e2fsck. Modifying an "
+"unclean file system could cause severe corruption."
+msgstr ""
+
+#: libparted/fs/ext2/ext2.c:731
+msgid "File system has an incompatible feature enabled."
+msgstr ""
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr ""
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+msgid ""
+"Found an inode with a incorrect link count. Better go run e2fsck first!"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_resize.c:223
+msgid "File system is too full to remove a group!"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_resize.c:232
+msgid "File system has too many allocated inodes to remove a group!"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, c-format
+msgid "Your file system is too full to resize it to %i blocks. Sorry."
+msgstr ""
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, c-format
+msgid ""
+"Your file system has too many occupied inodes to resize it to %i blocks. "
+"Sorry."
+msgstr ""
+
+#: libparted/fs/ext2/ext2_resize.c:666
+msgid "File system was not cleanly unmounted! You should run e2fsck."
+msgstr ""
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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 ""
+
+#: libparted/fs/ext2/ext2_resize.c:691
+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 ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+msgid "Cross-linked blocks found! Better go run e2fsck first!"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, c-format
+msgid "Block %i has no reference? Weird."
+msgstr ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr ""
+
+#: libparted/fs/ext2/interface.c:186
+msgid ""
+"The ext2 file system passed a basic check. For a more comprehensive check, "
+"use the e2fsck program."
+msgstr ""
+
+#: libparted/fs/ext2/interface.c:203
+msgid "Sorry, can't move the start of ext2 partitions yet!"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr ""
+
+#: libparted/fs/fat/calc.c:135
+#, c-format
+msgid ""
+"You need %s of free disk space to shrink this partition to this size. "
+"Currently, only %s is free."
+msgstr ""
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+msgid ""
+"Cluster start delta = %d, which is not a multiple of the cluster size %d."
+msgstr ""
+
+#: libparted/fs/fat/fat.c:308
+#, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr ""
+
+#: libparted/fs/fat/fat.c:474
+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 ""
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr ""
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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 ""
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+msgid ""
+"File system is reporting the free space as %d clusters, not %d clusters."
+msgstr ""
+
+#: libparted/fs/fat/fat.c:874
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes. FAT "
+"support will be disabled."
+msgstr ""
+
+#: libparted/fs/fat/resize.c:159
+msgid ""
+"There's not enough room in the root directory for all of the files. Either "
+"cancel, or ignore to lose the files."
+msgstr ""
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr ""
+
+#: libparted/fs/fat/resize.c:489
+msgid "If you leave your file system as FAT16, then you will have no problems."
+msgstr ""
+
+#: libparted/fs/fat/resize.c:492
+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 ""
+
+#: libparted/fs/fat/resize.c:500
+msgid ""
+"If you leave your file system as FAT32, then you will not introduce any new "
+"problems."
+msgstr ""
+
+#: libparted/fs/fat/resize.c:504
+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 ""
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr ""
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr ""
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr ""
+
+#: libparted/fs/fat/resize.c:551
+msgid ""
+"The file system can only be resized to this size by converting to FAT16."
+msgstr ""
+
+#: libparted/fs/fat/resize.c:567
+msgid ""
+"The file system can only be resized to this size by converting to FAT32."
+msgstr ""
+
+#: libparted/fs/fat/resize.c:580
+msgid ""
+"GNU Parted cannot resize this partition to this size. We're working on it!"
+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:139
+#, 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:164
+#, 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:213
+msgid "FAT boot sector says logical sector size is 0. This is weird. "
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:219
+msgid "FAT boot sector says there are no FAT tables. This is weird. "
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:225
+msgid "FAT boot sector says clusters are 0 sectors. This is weird. "
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:235
+msgid "File system is FAT12, which is unsupported."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:411
+#, 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/fat/count.c:152
+#, c-format
+msgid "Bad directory entry for %s: first cluster is the end of file marker."
+msgstr ""
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+msgid ""
+"Bad FAT: unterminated chain for %s. You should run dosfsck or scandisk."
+msgstr ""
+
+#: libparted/fs/fat/count.c:174
+#, c-format
+msgid ""
+"Bad FAT: cluster %d outside file system in chain for %s. You should run "
+"dosfsck or scandisk."
+msgstr ""
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+msgid ""
+"Bad FAT: cluster %d is cross-linked for %s. You should run dosfsck or "
+"scandisk."
+msgstr ""
+
+#: libparted/fs/fat/count.c:203
+#, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr ""
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+msgid ""
+"The file %s is marked as a system file. This means moving it could cause "
+"some programs to stop working."
+msgstr ""
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+msgid ""
+"FAT %d media %x doesn't match the boot sector's media %x. You should "
+"probably run scandisk."
+msgstr ""
+
+#: libparted/fs/fat/table.c:269
+#, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr ""
+
+#: libparted/fs/fat/table.c:301
+#, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr ""
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr ""
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr ""
+
+#: libparted/fs/linux_swap/linux_swap.c:318
+#, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr ""
+
+#: libparted/fs/linux_swap/linux_swap.c:358
+#, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr ""
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr ""
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr ""
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr ""
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+msgid "Could not update the extent cache for HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+msgid "Trying to write HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+msgid "Could not update the extent cache for HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+msgid "Trying to write HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:320
+msgid "writing HFS Master Directory Block"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:720
+msgid "Error while writing the allocation file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:904
+msgid ""
+"It seems there is an error in the HFS wrapper: the bad blocks file doesn't "
+"contain the embedded HFS+ volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:998
+msgid "shrinking HFS wrapper"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+msgid ""
+"This is not a real %s check. This is going to extract special low level "
+"files for debugging purposes."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+msgid ""
+"Invalid size of a transaction block while replaying the journal (%i bytes)."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:260
+msgid ""
+"Journal stored outside of the volume are not supported. Try to desactivate "
+"the journal and run Parted again."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:271
+msgid "Journal offset or size is not multiple of the sector size."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:302
+msgid "Journal size mismatch between journal info block and journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:314
+msgid "Some header fields are not multiple of the sector size."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:323
+msgid ""
+"The sector size stored in the journal is not 512 bytes. Parted only "
+"supports 512 bytes length sectors."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:353
+msgid ""
+"The journal is not empty. Parted must replay the transactions before "
+"opening the file system. This will modify the file system."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:381
+msgid ""
+"The volume header or the master directory block has changed while replaying "
+"the journal. You should restart Parted."
+msgstr ""
+
+#: libparted/fs/hfs/probe.c:51
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to %"
+"d bytes."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+msgid ""
+"A reference to an extent comes from a place it should not. You should check "
+"the file system!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:475
+msgid "This HFS volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+msgid ""
+"The extents overflow file should not contain its own extents! You should "
+"check the file system."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+msgid "Could not cache the file system in memory."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:619
+msgid "This HFS+ volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr ""
+
+#: parted/parted.c:95
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr ""
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr ""
+
+#: parted/parted.c:111
+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:114
+msgid "LABEL-TYPE is one of: "
+msgstr ""
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr ""
+
+#: parted/parted.c:116
+msgid "UNIT is one of: "
+msgstr ""
+
+#: parted/parted.c:117
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr ""
+
+#: parted/parted.c:119
+msgid "FS-TYPE is one of: "
+msgstr ""
+
+#: parted/parted.c:120
+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:123
+msgid "STATE is one of: on, off\n"
+msgstr ""
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr ""
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr ""
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr ""
+
+#: parted/parted.c:130
+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:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr ""
+
+#: parted/parted.c:195
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:211
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr ""
+
+#: parted/parted.c:223
+msgid ""
+"The existing file system will be destroyed and all data on the partition "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+msgid "Partition number?"
+msgstr ""
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr ""
+
+#: parted/parted.c:504
+msgid "Source partition number?"
+msgstr ""
+
+#: parted/parted.c:509
+msgid "Can't copy an extended partition."
+msgstr ""
+
+#: parted/parted.c:515
+msgid "Destination partition number?"
+msgstr ""
+
+#: parted/parted.c:615
+msgid "New disk label type?"
+msgstr ""
+
+#: parted/parted.c:656
+msgid "File system?"
+msgstr ""
+
+#: parted/parted.c:707 parted/parted.c:878
+msgid "Partition type?"
+msgstr ""
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+msgid "Partition name?"
+msgstr ""
+
+#: parted/parted.c:722 parted/parted.c:895
+msgid "File system type?"
+msgstr ""
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr ""
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr ""
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+
+#: parted/parted.c:890
+msgid "An extended partition cannot hold a file system. Did you want mkpart?"
+msgstr ""
+
+#: parted/parted.c:1050
+msgid "Can't move an extended partition."
+msgstr ""
+
+#: parted/parted.c:1079
+msgid "Can't move a partition onto itself. Try using resize, perhaps?"
+msgstr ""
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr ""
+
+#: parted/parted.c:1228
+#, c-format
+msgid "Flags: %s\n"
+msgstr ""
+
+#: parted/parted.c:1229
+#, c-format
+msgid "File System: %s\n"
+msgstr ""
+
+#: parted/parted.c:1230
+msgid "Size: "
+msgstr ""
+
+#: parted/parted.c:1235
+msgid "Minimum size: "
+msgstr ""
+
+#: parted/parted.c:1238
+msgid "Maximum size: "
+msgstr ""
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:1364
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr ""
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:1383
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d. Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:1392
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr ""
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr ""
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Start"
+msgstr ""
+
+#: parted/parted.c:1407 parted/parted.c:1410
+msgid "End"
+msgstr ""
+
+#: parted/parted.c:1410
+msgid "Size"
+msgstr ""
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr ""
+
+#: parted/parted.c:1416
+msgid "File system"
+msgstr ""
+
+#: parted/parted.c:1419
+msgid "Name"
+msgstr ""
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr ""
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1624
+#, 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:1663
+msgid "searching for file systems"
+msgstr ""
+
+#: parted/parted.c:1877
+msgid "New device?"
+msgstr ""
+
+#: parted/parted.c:1902
+msgid "Flag to Invert?"
+msgstr ""
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr ""
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr ""
+
+#: parted/parted.c:2096
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr ""
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr ""
+
+#: parted/parted.c:2105
+msgid ""
+"cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another "
+"partition"
+msgstr ""
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr ""
+
+#: parted/parted.c:2114
+msgid ""
+"help [COMMAND] print general help, or help on "
+"COMMAND"
+msgstr ""
+
+#: parted/parted.c:2120
+msgid "mklabel"
+msgstr ""
+
+#: parted/parted.c:2120
+msgid "mktable"
+msgstr ""
+
+#: parted/parted.c:2123
+msgid ""
+"mklabel,mktable LABEL-TYPE create a new disklabel (partition "
+"table)"
+msgstr ""
+
+#: parted/parted.c:2129
+msgid "mkfs"
+msgstr ""
+
+#: parted/parted.c:2132
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr ""
+
+#: parted/parted.c:2141
+msgid "mkpart PART-TYPE [FS-TYPE] START END make a partition"
+msgstr ""
+
+#: parted/parted.c:2147
+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:2152
+msgid "mkpartfs"
+msgstr ""
+
+#: parted/parted.c:2155
+msgid ""
+"mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system"
+msgstr ""
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr ""
+
+#: parted/parted.c:2164
+msgid "move NUMBER START END move partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr ""
+
+#: parted/parted.c:2172
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr ""
+
+#: parted/parted.c:2177
+msgid "print"
+msgstr ""
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr ""
+
+#: parted/parted.c:2199
+msgid "quit exit program"
+msgstr ""
+
+#: parted/parted.c:2204
+msgid "rescue"
+msgstr ""
+
+#: parted/parted.c:2207
+msgid ""
+"rescue START END rescue a lost partition near START "
+"and END"
+msgstr ""
+
+#: parted/parted.c:2213
+msgid "resize"
+msgstr ""
+
+#: parted/parted.c:2216
+msgid ""
+"resize NUMBER START END resize partition NUMBER and its "
+"file system"
+msgstr ""
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr ""
+
+#: parted/parted.c:2227
+msgid "rm NUMBER delete partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr ""
+
+#: parted/parted.c:2235
+msgid "select DEVICE choose the device to edit"
+msgstr ""
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr ""
+
+#: parted/parted.c:2243
+msgid ""
+"set NUMBER FLAG STATE change the FLAG on partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:2249
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:2252
+msgid ""
+"toggle [NUMBER [FLAG]] toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:2258
+msgid "unit"
+msgstr ""
+
+#: parted/parted.c:2261
+msgid "unit UNIT set the default unit to UNIT"
+msgstr ""
+
+#: parted/parted.c:2266
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:2269
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:2273
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr ""
+
+#: parted/parted.c:2412
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:2450
+msgid "You may need to update /etc/fstab.\n"
+msgstr ""
+
+#: parted/ui.c:160
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:163
+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:168
+#, 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:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:372
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:377
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:420
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:523
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:1024
+msgid "Expecting a partition number."
+msgstr ""
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr ""
+
+#: parted/ui.c:1053
+msgid "Expecting a file system type."
+msgstr ""
+
+#: parted/ui.c:1060
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr ""
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr ""
+
+#: parted/ui.c:1178
+msgid "Can't create any more partitions."
+msgstr ""
+
+#: parted/ui.c:1188
+msgid "Expecting a partition type."
+msgstr ""
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr ""
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr ""
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr ""
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr ""
+
+#: parted/ui.c:1445
+#, c-format
+msgid "Using %s\n"
+msgstr ""
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
diff --git a/parted-1.8.7/po/pl.gmo b/parted-1.8.7/po/pl.gmo
new file mode 100644
index 0000000..d845e40
--- /dev/null
+++ b/parted-1.8.7/po/pl.gmo
Binary files differ
diff --git a/parted-1.8.7/po/pl.po b/parted-1.8.7/po/pl.po
new file mode 100644
index 0000000..df29f1c
--- /dev/null
+++ b/parted-1.8.7/po/pl.po
@@ -0,0 +1,3306 @@
+# Polish translations for GNU Parted package.
+# Copyright (C) 2003, 2005, 2006 Free Software Foundation, Inc.
+# Wojciech Polak <polak@gnu.org>, 2003, 2005, 2006.
+# Jakub Bogusz <qboosh@pld-linux.org>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 1.8.1\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2007-05-09 17:02-0400\n"
+"PO-Revision-Date: 2006-12-07 18:01+0100\n"
+"Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n"
+"Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\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/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Nieznany typ systemu plików \"%s\"."
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+#, fuzzy
+msgid "Invalid range end"
+msgstr "Nieprawid³owy numer."
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "B³±d podczas otwierania %s: %s"
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, 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:411 libparted/arch/linux.c:1431
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s podczas ustawiania do odczytu na %s"
+
+#: libparted/arch/beos.c:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s podczas czytania %s"
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, 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:496 libparted/arch/linux.c:1570
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s podczas ustawiania do zapisu na %s"
+
+#: libparted/arch/beos.c:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s podczas zapisu %s"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "Zbyt du¿o nieprawid³owych stron."
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr "Nie mo¿na otworzyæ %s."
+
+#: libparted/arch/gnu.c:114
+msgid "Unable to probe store."
+msgstr "Detekcja geometrii nie powiod³a siê."
+
+#: libparted/arch/gnu.c:352
+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:369
+#, 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:380 parted/parted.c:2443
+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:772
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "B³±d synchronizacji %s do dysku %s"
+
+#: libparted/arch/linux.c:408
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Nie mo¿na sprawdziæ urz±dzenia %s - %s."
+
+#: libparted/arch/linux.c:523
+#, 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:539
+#, c-format
+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 ""
+"Logiczny rozmiar sektora dla %s wynosi %lld. Nie wszystkie czê¶ci GNU "
+"Parteda aktualnie to obs³uguj±, a dzia³aj±cy kod jest WYSOCE "
+"EKSPERYMENTALNY.\n"
+
+#: libparted/arch/linux.c:579
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Nie mo¿na ustaliæ rozmiaru %s (%s)."
+
+#: libparted/arch/linux.c:668
+#, 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:677
+msgid "Generic IDE"
+msgstr "Ogólne IDE"
+
+#: libparted/arch/linux.c:698
+#, 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:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "B³±d podczas inicjalizacji urz±dzenia SCSI %s - %s"
+
+#: libparted/arch/linux.c:928
+#, c-format
+msgid ""
+"The device %s has zero length, and can't possibly store a file system or "
+"partition table. Perhaps you selected the wrong device?"
+msgstr ""
+"Urz±dzenie %s posiada zerow± d³ugo¶æ i 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:1032
+#, 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:1110
+msgid "DAC960 RAID controller"
+msgstr "Kontroler DAC960 RAID"
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr "Urz±dzenie Promise SX8 SATA"
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr "Dysk DASD IBM S390"
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr "Wirtualny dysk DASD IBM iSeries"
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr "Kontroler ATARAID"
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr "Kontroler I2O"
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr "UBD z User-Mode Linuksa"
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr "Linuksowy device-mapper"
+
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "Nieznane"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "ped_device_new() Ten typ urz±dzenia nie jest wspierany"
+
+#: libparted/arch/linux.c:2083
+#, 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 podczas informowania j±dra systemu o modyfikacji partycji %s -- %s. "
+"Oznacza to, ¿e Linux nie bêdzie wiedzia³ o ¿adnych zmianach jakie zosta³y "
+"dokonane na %s a¿ do czasu ponownego uruchomienia komputera -- proszê nie "
+"pod³±czaæ ani u¿ywaæ tej partycji do czasu ponownego uruchomienia komputera."
+
+#: libparted/arch/linux.c:2262
+#, 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/arch/linux.c:2368
+#, c-format
+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 systemu nie mog³o ponownie odczytaæ tablicy partycji na %s (%s). "
+"Oznacza to, ¿e Linux nie bêdzie wiedzia³ nic o modyfikacjach jakie zosta³y "
+"poczynione a¿ do czasu ponownego uruchomienia komputera. Nale¿y ponownie "
+"uruchomiæ komputer zanim wykonasz jak±kolwiek operacjê na %s."
+
+#: libparted/cs/geom.c:162
+msgid "Can't have the end before the start!"
+msgstr "Nie mo¿na mieæ koñca przed pocz±tkiem!"
+
+#: 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:366
+#, 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:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr "sprawdzam czy istniej± uszkodzone bloki"
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "Nie mo¿na otworzyæ %s - nierozpoznana etykieta dysku."
+
+#: libparted/disk.c:471
+#, 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:598
+#, 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:1075
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "Etykiety dysku %s nie wspieraj± rozszerzonych partycji."
+
+#: libparted/disk.c:1634
+#, 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:1647
+msgid "Too many primary partitions."
+msgstr "Zbyt du¿o partycji g³ównych."
+
+#: libparted/disk.c:1656
+#, 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:1680
+#, 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:1690
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Nie mo¿na mieæ logicznych partycji poza rozszerzon± partycj±."
+
+#: libparted/disk.c:1715
+#, 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:1725 libparted/disk.c:1779 libparted/disk.c:1945
+msgid "Can't have overlapping partitions."
+msgstr "Nie mo¿na mieæ nak³adaj±cych siê partycji."
+
+#: libparted/disk.c:1733
+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:2140
+msgid "metadata"
+msgstr "metadane"
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "wolna"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "rozszerzona"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "logiczna"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "g³ówna"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "³adowalna"
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr "root"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr "wymiany"
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "ukryta"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr "us³uga-hp"
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2190
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Nieznana flaga partycji, %d."
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "Informacja"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "Ostrze¿enie"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "B³±d"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "Fatalny b³±d"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "B³±d"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr "Brak implementacji"
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr "Popraw"
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "Tak"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "Nie"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "Powtórz"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "Zignoruj"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "Poniechaj"
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org 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 bug-"
+"parted@gnu.org, do³±czaj±c numer wersji (%s) oraz nastêpuj±c± wiadomo¶æ: "
+
+#: libparted/filesys.c:384
+msgid "Could not detect file system."
+msgstr "Nie mo¿na wykryæ systemu plików."
+
+#: libparted/filesys.c:395
+msgid "The file system is bigger than its volume!"
+msgstr "System plików jest wiêkszy ni¿ jego wolumen!"
+
+#: libparted/filesys.c:403
+#, c-format
+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."
+
+#: libparted/filesys.c:445
+#, c-format
+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."
+
+#: libparted/filesys.c:505
+#, c-format
+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."
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr "bezpo¶rednie kopiowanie bloków"
+
+#: libparted/filesys.c:582
+msgid "growing file system"
+msgstr "powiêkszanie systemu plików"
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr "Nie mo¿na skopiowaæ na nak³adaj±c± siê partycjê."
+
+#: libparted/filesys.c:644
+#, c-format
+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."
+
+#: libparted/filesys.c:658
+#, c-format
+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."
+
+#: libparted/filesys.c:696
+#, c-format
+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."
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, fuzzy
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr "System plików jest wiêkszy ni¿ jego wolumen!"
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "sprawd¼"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, fuzzy
+msgid ""
+"The reiserfs file system passed a basic check. For a more comprehensive "
+"check, run reiserfsck --check."
+msgstr ""
+"System plików ext2 przeszed³ pomy¶lnie podstawowe sprawdzenie. U¿yj program "
+"e2fsck, aby wykonaæ bardziej wyczerpuj±ce sprawdzenie."
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, fuzzy
+msgid "Sorry, can't move the start of reiserfs partitions yet."
+msgstr "Przepraszam, ale na razie nie mo¿na przesun±æ pocz±tku partycji ext2!"
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+msgid "shrinking"
+msgstr "zmniejszanie"
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "Ostrze¿enie"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, fuzzy, c-format
+msgid "Device is too small for %lu blocks."
+msgstr "System plików jest zbyt ma³y dla ext2."
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr ""
+"Wsparcie dla tworzenia systemów plików %s nie zosta³o jeszcze "
+"zaimplementowane."
+
+#: libparted/labels/aix.c:148
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr ""
+"Wsparcie dla tworzenia systemów plików %s nie zosta³o jeszcze "
+"zaimplementowane."
+
+#: libparted/labels/aix.c:161
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+"Wsparcie dla tworzenia systemów plików %s nie zosta³o jeszcze "
+"zaimplementowane."
+
+#: libparted/labels/aix.c:171
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+"Wsparcie dla tworzenia systemów plików %s nie zosta³o jeszcze "
+"zaimplementowane."
+
+#: libparted/labels/aix.c:189
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+"Wsparcie dla tworzenia systemów plików %s nie zosta³o jeszcze "
+"zaimplementowane."
+
+#: libparted/labels/aix.c:199
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+"Wsparcie dla tworzenia systemów plików %s nie zosta³o jeszcze "
+"zaimplementowane."
+
+#: libparted/labels/bsd.c:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Nie mo¿na zaspokoiæ wszystkich ograniczeñ na partycji."
+
+#: libparted/labels/bsd.c:526
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Nie mo¿na przydzieliæ miejsca na etykietê dysku bsd."
+
+#: libparted/labels/dasd.c:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "Nie mo¿na ustaliæ rozmiaru %s (%s)."
+
+#: libparted/labels/dasd.c:781
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Nie mo¿na przydzieliæ miejsca na etykietê dysku bsd."
+
+#: libparted/labels/dos.c:827
+#, 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:855
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Nieprawid³owa tablica partycji - partycja rekursywna na %s."
+
+#: libparted/labels/dos.c:1318
+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:1958
+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:190
+#, 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:313
+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:616
+msgid "Only primary partitions can be root partitions."
+msgstr "Tylko g³ówne partycje mog± byæ typu root."
+
+#: libparted/labels/dvh.c:630
+msgid "Only primary partitions can be swap partitions."
+msgstr "Tylko g³ówne partycje mog± byæ partycjami wymiany."
+
+#: libparted/labels/dvh.c:644
+msgid "Only logical partitions can be a boot file."
+msgstr "Tylko logiczne partycje mog± byæ plikami ³adowalnymi (boot)."
+
+#: libparted/labels/dvh.c:721
+msgid "Only logical partitions (boot files) have a name."
+msgstr "Tylko logiczne partycje (³adowalne pliki) maj± nazwy."
+
+#: libparted/labels/dvh.c:812
+msgid "Too many primary partitions"
+msgstr "Zbyt du¿o partycji g³ównych"
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "%s podczas zapisu %s"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, fuzzy, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr "Dysk %s: %s\n"
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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:648
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+msgstr ""
+"Format tablicy partycji GPT (wersja %x) jest nowszy ni¿ program Parted jest "
+"w stanie rozpoznaæ. Poinformuj nas o tym! bug-parted@gnu.org"
+
+#: libparted/labels/gpt.c:698
+#, 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:827
+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:862
+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:870
+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/mac.c:181
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Nieprawid³owy podpis %x dla etykiet dysków Mac."
+
+#: libparted/labels/mac.c:226
+msgid "Partition map has no partition map entry!"
+msgstr "Mapa partycji nie posiada wpisu mapy partycji!"
+
+#: libparted/labels/mac.c:273
+#, 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:532
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Partycja %d posiada nieprawid³owy podpis %x."
+
+#: libparted/labels/mac.c:550
+#, 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:580
+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:597
+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:611
+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:622
+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:675
+#, 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:688
+#, 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:736
+msgid "No valid partition map found."
+msgstr "Nie znaleziono prawid³owej mapy partycji."
+
+#: libparted/labels/mac.c:795
+#, 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:822
+msgid "Weird! There are 2 partitions map entries!"
+msgstr "Dziwne! Istniej± 2 wpisy map partycji!"
+
+#: libparted/labels/mac.c:1347
+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:1443
+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:354
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Nieprawid³owa tablica partycji na %s."
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, 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:791
+msgid "Can't add another partition."
+msgstr "Nie mo¿na dodaæ kolejnej partycji."
+
+#: libparted/labels/rdb.c:162
+#, 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:497
+#, 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:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s : Wykryto pêtlê na bloku %d."
+
+#: libparted/labels/rdb.c:600
+#, 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:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s : Nie powiod³o siê wypisanie uszkodzonych bloków."
+
+#: libparted/labels/rdb.c:697
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s : Wypisanie bloków partycji nie powiod³o siê."
+
+#: libparted/labels/rdb.c:705
+#, 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:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s : Nie powiod³o siê wypisanie bloków rozruchowych."
+
+#: libparted/labels/rdb.c:740
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Nie powiód³ siê zapis bloku partycji na %d."
+
+#: libparted/labels/rdb.c:1069
+msgid "Unable to allocate a partition number."
+msgstr "Nie mo¿na przydzieliæ numeru partycji."
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr "Wykryto uszkodzon± etykietê dysku Sun."
+
+#: libparted/labels/sun.c:266
+#, 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:288
+#, 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:442
+#, 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:737
+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:752
+msgid "Sun disk label is full."
+msgstr "Etykieta dysku Sun jest pe³na."
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr "Brak pamiêci"
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+"Nie mo¿na pobraæ rozmiaru jednostki dla specjalnej jednostki 'COMPACT'."
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "\"%s\" posiada nieprawid³ow± sk³adniê dla lokacji."
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "Maksymalna warto¶æ g³owicy wynosi %d."
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "Maksymalna warto¶æ sektora wynosi %d."
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "Lokacja %s jest poza urz±dzeniem %s."
+
+#: libparted/unit.c:527
+msgid "Invalid number."
+msgstr "Nieprawid³owy numer."
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s : Wypisanie bloków partycji nie powiod³o siê."
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, fuzzy, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s : Nie powiod³o siê wypisanie bloków rozruchowych."
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, fuzzy, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s : Wykryto pêtlê na bloku %d."
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, fuzzy, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s : Wykryto pêtlê na bloku %d."
+
+#: libparted/fs/amiga/amiga.c:72
+#, fuzzy, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s : Nie powiod³o siê wypisanie uszkodzonych bloków."
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, fuzzy, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s : Nieprawid³owa suma kontrolna bloku %llu typu %s."
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s : Wykryto pêtlê na bloku %d."
+
+#: libparted/fs/amiga/amiga.c:278
+#, fuzzy, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s : Nie powiod³o siê wypisanie uszkodzonych bloków."
+
+#: libparted/fs/amiga/amiga.c:289
+#, fuzzy, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s : Nie znaleziono bloku rdb, co nie powinno siê zdarzyæ."
+
+#: libparted/fs/amiga/amiga.c:318
+#, fuzzy, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s : Wypisanie bloków partycji nie powiod³o siê."
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr "Sprzeczne deskryptory grup!"
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+msgid "File system full!"
+msgstr "Pe³ny system plików!"
+
+#: libparted/fs/ext2/ext2.c:686
+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?"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+msgid "File system has errors! You should run e2fsck."
+msgstr "System plików posiada b³êdy! Uruchom program e2fsck."
+
+#: libparted/fs/ext2/ext2.c:711
+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."
+
+#: libparted/fs/ext2/ext2.c:731
+msgid "File system has an incompatible feature enabled."
+msgstr "System plików ma w³±czon± niekompatybiln± funkcjê."
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr "B³±d podczas przydzielania pamiêci do bufora podrêcznego."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+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!"
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr "Zbyt ma³o wolnych i-wêz³ów!"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+msgid "File system is too full to remove a group!"
+msgstr "System plików jest zbyt pe³ny, aby usun±æ grupê!"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+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ê!"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr "dodawanie grup"
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, c-format
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, c-format
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:666
+msgid "File system was not cleanly unmounted! You should run e2fsck."
+msgstr ""
+"System plików nie zosta³ prawid³owo od³±czony! Uruchom program e2fsck."
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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'."
+
+#: libparted/fs/ext2/ext2_resize.c:691
+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 ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+msgid "Cross-linked blocks found! Better go run e2fsck first!"
+msgstr ""
+"Znaleziono bloki dowi±zane skro¶nie! Lepiej uruchom najpierw program e2fsck!"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "Blok %i nie posiada odwo³añ? Dziwne."
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "Blok %i nie powinien byæ zaznaczony (%d, %d)!"
+
+#: libparted/fs/ext2/interface.c:186
+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. U¿yj program "
+"e2fsck, aby wykonaæ bardziej wyczerpuj±ce sprawdzenie."
+
+#: libparted/fs/ext2/interface.c:203
+msgid "Sorry, can't move the start of ext2 partitions yet!"
+msgstr "Przepraszam, ale na razie nie mo¿na przesun±æ pocz±tku partycji ext2!"
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr "Nie mo¿na opró¿niæ bufora pamiêci podrêcznej!"
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr "zapis metadanych do grup"
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr "System plików jest zbyt ma³y dla ext2."
+
+#: libparted/fs/fat/calc.c:135
+#, c-format
+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."
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:308
+#, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr "Partycja jest zbyt du¿a/ma³a dla systemu plików %s."
+
+#: libparted/fs/fat/fat.c:474
+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ê."
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr "Nie ma mo¿liwych konfiguracji dla tego typu FAT."
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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)."
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:874
+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/resize.c:159
+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."
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr "B³±d podczas zapisu do katalogu g³ównego (root)."
+
+#: libparted/fs/fat/resize.c:489
+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."
+
+#: libparted/fs/fat/resize.c:492
+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)."
+
+#: libparted/fs/fat/resize.c:500
+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."
+
+#: libparted/fs/fat/resize.c:504
+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."
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr "Czy chcesz u¿yæ FAT32?"
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: libparted/fs/fat/resize.c:551
+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."
+
+#: libparted/fs/fat/resize.c:567
+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."
+
+#: libparted/fs/fat/resize.c:580
+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!"
+
+#: 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:139
+#, 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:164
+#, 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:213
+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:219
+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:225
+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:235
+msgid "File system is FAT12, which is unsupported."
+msgstr "Systemem plików jest FAT12, który nie jest wspierany."
+
+#: libparted/fs/fat/bootsector.c:411
+#, 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/fat/count.c:152
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:174
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:203
+#, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr "%s ma %dk, jednak ma %d klastrów (%dk)."
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:269
+#, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "fat_table_set: klaster %ld poza systemem plików"
+
+#: libparted/fs/fat/table.c:301
+#, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "fat_table_get: klaster %ld poza systemem plików"
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "fat_table_alloc_cluster: brak wolnych klastrów"
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Nierozpoznany podpis linuksowej partycji wymiany `%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:318
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Nierozpoznany podpis linuksowej partycji wymiany `%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:358
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Nierozpoznany podpis linuksowej partycji wymiany `%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr "Zbyt du¿o nieprawid³owych stron."
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr "System plików zawiera b³êdy."
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr "Uszkodzone bloki nie mog± byæ odczytane."
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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!"
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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æ!"
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+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."
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr "Próba odczytania pliku HFS z CNID %X za EOF."
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr "Nie znaleziono sektora %lli pliku HFS z CNID %X."
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+msgid "Trying to write HFS file with CNID %X behind EOF."
+msgstr "Próba zapisu pliku HFS z CNID %X za EOF."
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+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."
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr "Próba odczytania pliku HFS+ z CNID %X za EOF."
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr "Nie znaleziono sektora %lli pliku HFS+ z CNID %X."
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+msgid "Trying to write HFS+ file with CNID %X behind EOF."
+msgstr "Próba zapisu pliku HFS+ z CNID %X za EOF."
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr "Przykro mi, ale nie mo¿na jeszcze w ten sposób zmieniæ rozmiaru HFS."
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr "Relokacja danych nie powiod³a siê."
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr "Relokacja danych pozostawi³a dane pod koniec wolumenu."
+
+#: libparted/fs/hfs/hfs.c:320
+msgid "writing HFS Master Directory Block"
+msgstr "zapisywanie g³ównego bloku katalogu HFS (HFS Master Directory Block)"
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr "Nie znaleziono prawid³owej sygnatury HFS[+X] podczas otwierania."
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr "Wersja %d HFS+ nie jest wspierana."
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr "Wersja %d HFSX nie jest wspierana."
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr "Relokacja danych pozostawi³a dane na koñcu wolumenu."
+
+#: libparted/fs/hfs/hfs.c:720
+msgid "Error while writing the allocation file."
+msgstr "B³±d podczas zapisu pliku przydzia³u."
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr "B³±d podczas zapisu kompatybilnej czê¶ci pliku przydzia³u."
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr "zapisywanie nag³ówka wolumenu HFS+"
+
+#: libparted/fs/hfs/hfs.c:850
+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."
+
+#: libparted/fs/hfs/hfs.c:904
+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+."
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr "Przykro mi, ale nie mo¿na jeszcze w ten sposób zmieniæ rozmiaru HFS+."
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr "zmniejszanie wbudowanego wolumenu HFS+"
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr "Zmiana rozmiaru wolumenu HFS+ nie powiod³a siê."
+
+#: libparted/fs/hfs/hfs.c:998
+msgid "shrinking HFS wrapper"
+msgstr "zmniejszanie otoczki HFS"
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr "Aktualizacja otoczki HFS nie powiod³a siê."
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+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."
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr "Suma kontrolna nag³ówka listy uszkodzonych bloków."
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+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)."
+
+#: libparted/fs/hfs/journal.c:260
+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."
+
+#: libparted/fs/hfs/journal.c:271
+msgid "Journal offset or size is not multiple of the sector size."
+msgstr ""
+"Wyrównanie kroniki lub wielko¶æ nie jest wielokrotno¶ci± rozmiaru sektora."
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr "Nieprawid³owe magiczne warto¶ci w nag³ówku kroniki."
+
+#: libparted/fs/hfs/journal.c:302
+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."
+
+#: libparted/fs/hfs/journal.c:314
+msgid "Some header fields are not multiple of the sector size."
+msgstr "Niektóre pola nag³ówka nie s± wielokrotno¶ci± rozmiaru sektora."
+
+#: libparted/fs/hfs/journal.c:323
+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."
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr "Nieprawid³owa suma kontrolna kroniki."
+
+#: libparted/fs/hfs/journal.c:353
+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."
+
+#: libparted/fs/hfs/journal.c:381
+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."
+
+#: libparted/fs/hfs/probe.c:51
+#, 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."
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr "Obszar nie zosta³ przeniesiony."
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+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!"
+
+#: libparted/fs/hfs/reloc.c:381
+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!"
+
+#: libparted/fs/hfs/reloc.c:475
+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!"
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+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."
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+msgid "Could not cache the file system in memory."
+msgstr "Nie mo¿na zapamiêtaæ systemu plików w pamiêci."
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr "Nie powiod³o siê za³adowanie listy uszkodzonych bloków."
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr "Wykryto b³±d podczas przenoszenia obszaru."
+
+#: libparted/fs/hfs/reloc_plus.c:495
+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!"
+
+#: libparted/fs/hfs/reloc_plus.c:619
+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!"
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr "wy¶wietla tê oto pomoc"
+
+#: parted/parted.c:95
+#, fuzzy
+msgid "lists partition layout on all block devices"
+msgstr "wypisuje tablice partycji wszystkich wykrytych urz±dzeñ"
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr "nigdy nie prosi u¿ytkownika o interwencjê"
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr "wy¶wietla numer wersji"
+
+#: parted/parted.c:111
+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:114
+msgid "LABEL-TYPE is one of: "
+msgstr "TYP-ETYKIETY stanowi jedn± z nastêpuj±cych warto¶ci: "
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr "FLAGA stanowi jedn± z nastêpuj±cych warto¶ci: "
+
+#: parted/parted.c:116
+msgid "UNIT is one of: "
+msgstr "JEDNOSTKA stanowi jedn± z nastêpuj±cych warto¶ci: "
+
+#: parted/parted.c:117
+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:119
+msgid "FS-TYPE is one of: "
+msgstr "SYSTEM-PLIKÓW stanowi jedn± z nastêpuj±cych warto¶ci: "
+
+#: parted/parted.c:120
+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:123
+msgid "STATE is one of: on, off\n"
+msgstr "STAN jest reprezentowany poprzez: w³±czony, wy³±czony\n"
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "URZ¡DZENIEM jest zwykle /dev/hda lub /dev/sda\n"
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr "NAZWA jest dowolnym s³owem jakie chcesz\n"
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr "Partycja musi posiadaæ jeden z nastêpuj±cych systemów plików: "
+
+#: parted/parted.c:130
+#, 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 - 2006 Free Software Foundation, Inc.\n"
+"Program ten jest wolno dostêpny, zgodnie z Powszechn± Licencj± Publiczn± "
+"GNU.\n"
+"\n"
+"Program ten udostêpniany jest w nadziei, ¿e bêdzie przydatny, ale BEZ ¯ADNEJ "
+"GWARANCJI, nawet bez domy¶lnej gwarancji PRZYDATNO¦CI HANDLOWEJ albo "
+"PRZYDATNO¦CI DO KONKRETNYCH ZASTOSOWAÑ. Wiêcej szczegó³ów znajduje siê w "
+"Powszechnej Licencji Publicznej GNU.\n"
+"\n"
+
+#: parted/parted.c:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(czas do koñca %.2d:%.2d)"
+
+#: parted/parted.c:195
+#, 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± "
+"Parteddem."
+
+#: parted/parted.c:211
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Partycja (partycje) na %s s± u¿ywane."
+
+#: parted/parted.c:223
+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æ?"
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+msgid "Partition number?"
+msgstr "Numer partycji?"
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr "Urz±dzenie ¼ród³owe?"
+
+#: parted/parted.c:504
+msgid "Source partition number?"
+msgstr "Numer partycji ¼ród³owej?"
+
+#: parted/parted.c:509
+msgid "Can't copy an extended partition."
+msgstr "Nie mo¿na skopiowaæ rozszerzonej partycji."
+
+#: parted/parted.c:515
+msgid "Destination partition number?"
+msgstr "Numer partycji docelowej?"
+
+#: parted/parted.c:615
+msgid "New disk label type?"
+msgstr "Nowy typ etykiety dysku?"
+
+#: parted/parted.c:656
+msgid "File system?"
+msgstr "System plików?"
+
+#: parted/parted.c:707 parted/parted.c:878
+msgid "Partition type?"
+msgstr "Typ partycji?"
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+msgid "Partition name?"
+msgstr "Nazwa partycji?"
+
+#: parted/parted.c:722 parted/parted.c:895
+msgid "File system type?"
+msgstr "Typ systemu plików?"
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr "Pocz±tek?"
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr "Koniec?"
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+"Wybrano partycjê od %s do %s.\n"
+"Najbli¿sza z jak± Parted mo¿e sobie poradziæ jest %s - %s. Czy jest to "
+"akceptowalne?"
+
+#: parted/parted.c:890
+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?"
+
+#: parted/parted.c:1050
+msgid "Can't move an extended partition."
+msgstr "Nie mo¿na przesun±æ rozszerzonej partycji."
+
+#: parted/parted.c:1079
+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?"
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr "Numer: %d\n"
+
+#: parted/parted.c:1228
+#, c-format
+msgid "Flags: %s\n"
+msgstr "Flagi: %s\n"
+
+#: parted/parted.c:1229
+#, c-format
+msgid "File System: %s\n"
+msgstr "System plików: %s\n"
+
+#: parted/parted.c:1230
+msgid "Size: "
+msgstr "Rozmiar: "
+
+#: parted/parted.c:1235
+msgid "Minimum size: "
+msgstr "Minimalny rozmiar: "
+
+#: parted/parted.c:1238
+msgid "Maximum size: "
+msgstr "Maksymalny rozmiar: "
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr "Model: %s (%s)\n"
+
+#: parted/parted.c:1364
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "Dysk %s: %s\n"
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "Rozmiar sektora (logiczny/fizyczny): %lldB/%lldB\n"
+
+#: parted/parted.c:1383
+#, 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:1392
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "Tablica partycji: %s\n"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr "Numer"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Start"
+msgstr "Pocz±tek"
+
+#: parted/parted.c:1407 parted/parted.c:1410
+msgid "End"
+msgstr "Koniec"
+
+#: parted/parted.c:1410
+msgid "Size"
+msgstr "Rozmiar"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr "Typ"
+
+#: parted/parted.c:1416
+msgid "File system"
+msgstr "System plików"
+
+#: parted/parted.c:1419
+msgid "Name"
+msgstr "Nazwa"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr "Flaga"
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr "Wolne miejsce"
+
+#: parted/parted.c:1624
+#, 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:1663
+msgid "searching for file systems"
+msgstr "szukam systemów plików"
+
+#: parted/parted.c:1877
+msgid "New device?"
+msgstr "Nowe urz±dzenie?"
+
+#: parted/parted.c:1902
+msgid "Flag to Invert?"
+msgstr "Flaga do przestawienia?"
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr "Nowy stan?"
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr "Jednostka?"
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "sprawd¼"
+
+#: parted/parted.c:2096
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr ""
+"check NUMER wykonuje proste sprawdzenie systemu plików"
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "kopiuj"
+
+#: parted/parted.c:2105
+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ê"
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "pomoc"
+
+#: parted/parted.c:2114
+#, fuzzy
+msgid ""
+"help [COMMAND] print general help, or help on "
+"COMMAND"
+msgstr ""
+"pomoc [KOMENDA] wy¶wietla pomoc ogóln± lub dotycz±c± KOMENDY"
+
+#: parted/parted.c:2120
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:2120
+msgid "mktable"
+msgstr "mktable"
+
+#: parted/parted.c:2123
+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:2129
+msgid "mkfs"
+msgstr "mkfs"
+
+#: parted/parted.c:2132
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr "mkfs NUMER SYSTEM-PLIKÓW tworzy system plików na partycji NUMER"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:2141
+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:2147
+#, 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 ""
+"Komenda 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:2152
+msgid "mkpartfs"
+msgstr "mkpartfs"
+
+#: parted/parted.c:2155
+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"
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr "przesuñ"
+
+#: parted/parted.c:2164
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "move NUMER POCZ¡TEK KONIEC przesuwa partycjê NUMER"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "nazwa"
+
+#: parted/parted.c:2172
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr "name NUMER NAZWA nadaje NAZWÊ partycji NUMER"
+
+#: parted/parted.c:2177
+msgid "print"
+msgstr "drukuj"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr "wypisuje tablice partycji wszystkich wykrytych urz±dzeñ"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "koniec"
+
+#: parted/parted.c:2199
+msgid "quit exit program"
+msgstr "quit koñczy pracê programu"
+
+#: parted/parted.c:2204
+msgid "rescue"
+msgstr "uratuj"
+
+#: parted/parted.c:2207
+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:2213
+msgid "resize"
+msgstr "rozmiar"
+
+#: parted/parted.c:2216
+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"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "usuñ"
+
+#: parted/parted.c:2227
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "rm NUMER usuwa partycjê NUMER"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "wybierz"
+
+#: parted/parted.c:2235
+msgid "select DEVICE choose the device to edit"
+msgstr "select URZ¡DZENIE wybiera urz±dzenie do edycji"
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr "ustaw"
+
+#: parted/parted.c:2243
+msgid ""
+"set NUMBER FLAG STATE change the FLAG on partition NUMBER"
+msgstr "set NUMER FLAGA STAN zmienia flagê na partycji NUMER"
+
+#: parted/parted.c:2249
+msgid "toggle"
+msgstr "przestaw"
+
+#: parted/parted.c:2252
+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:2258
+msgid "unit"
+msgstr "jednostka"
+
+#: parted/parted.c:2261
+msgid "unit UNIT set the default unit to UNIT"
+msgstr "unit JEDNOSTKA ustawia domy¶ln± jednostkê"
+
+#: parted/parted.c:2266
+msgid "version"
+msgstr "wersja"
+
+#: parted/parted.c:2269
+#, fuzzy
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"version wy¶wietla aktualn± wersjê GNU Parteda i "
+"informacje o prawach autorskich"
+
+#: parted/parted.c:2273
+#, fuzzy
+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:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "Nie znaleziono urz±dzenia"
+
+#: parted/parted.c:2412
+#, fuzzy
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr "UWAGA: Nie jeste¶ superu¿ytkownikiem. Uwa¿aj na uprawnienia.\n"
+
+#: parted/parted.c:2450
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr ""
+"Nie zapomnij o aktualizacji /etc/fstab, je¶li istnieje taka potrzeba.\n"
+
+#: parted/ui.c:160
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+"Witamy w GNU Partedzie! Listê komend mo¿na zobaczyæ po napisaniu 'help'.\n"
+
+#: parted/ui.c:163
+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 [KOMENDA [PARAMETRY]...]...]\n"
+"Wykonuje KOMENDY z PARAMETRAMI dla URZ¡DZENIA. Je¶li nie podano KOMEND(Y),\n"
+"program zostanie uruchomiony w trybie interaktywnym.\n"
+
+#: parted/ui.c:168
+#, 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"
+"Znalaz³e¶ b³±d w programie GNU Parted! Poni¿ej znajduje siê instrukcja "
+"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 "
+"Parteda\n"
+"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 dodatkowymi informacjami o konfiguracji, które uwa¿asz za istotne.\n"
+
+#: parted/ui.c:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+#, fuzzy
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"B³±d: SEGV_MAPERR (Adres nie odwzorowany na obiekcie)"
+
+#: parted/ui.c:372
+#, fuzzy
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"B³±d: SEGV_ACCERR (Nieprawid³owe uprawnienia dla odwzorowanego obiektu)"
+
+#: parted/ui.c:377
+#, fuzzy
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"B³±d: Wyst±pi³ ogólny sygna³ SIGSEGV."
+
+#: parted/ui.c:410
+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:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"B³±d: FPE_INTOVF (przepe³nienie dla liczby ca³kowitej)"
+
+#: parted/ui.c:420
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"B³±d: FPE_FLTDIV (dzielenie przez zero na liczbach zmiennoprzecinkowych)"
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"B³±d: FPE_FLTOVF (przepe³nienie dla liczby zmiennoprzecinkowej)"
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"B³±d: FPE_FLTUND (niedope³nienie dla liczby zmiennoprzecinkowej)"
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"B³±d: FPE_FLTRES (niedok³adny wynik dla liczb zmiennoprzecinkowych)"
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"B³±d: FPE_FLTINV (nieprawid³owa operacja dla liczb zmiennoprzecinkowych)"
+
+#: parted/ui.c:445
+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:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"B³±d: Wyst±pi³ ogólny sygna³ SIGFPE."
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"B³±d: ILL_ILLOPC (niedozwolony kod instrukcji)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"B³±d: ILL_ILLOPN (niedozwolony operand)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"B³±d: ILL_ILLADR (niedozwolony tryb adresowania)"
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"B³±d: ILL_ILLTRP (niedozwolona pu³apka)"
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"B³±d: ILL_PRVOPC (uprzywilejowany kod instrukcji)"
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"B³±d: ILL_PRVREG (uprzywilejowany rejestr)"
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"B³±d: ILL_COPROC (b³±d koprocesora)"
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"B³±d: ILL_BADSTK (wewnêtrzny b³±d stosu)"
+
+#: parted/ui.c:523
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"B³±d: Wyst±pi³ ogólny sygna³ SIGILL."
+
+#: parted/ui.c:1024
+msgid "Expecting a partition number."
+msgstr "Oczekiwany by³ numer partycji."
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "Partycja nie istnieje."
+
+#: parted/ui.c:1053
+msgid "Expecting a file system type."
+msgstr "Oczekiwany by³ typ systemu plików."
+
+#: parted/ui.c:1060
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Nieznany typ systemu plików \"%s\"."
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr "Oczekiwany by³ typ etykiety dysku."
+
+#: parted/ui.c:1178
+msgid "Can't create any more partitions."
+msgstr "Nie mo¿na utworzyæ wiêcej partycji."
+
+#: parted/ui.c:1188
+msgid "Expecting a partition type."
+msgstr "Oczekiwany by³ typ partycji."
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr "w³±czone"
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr "wy³±czone"
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "OPCJE:"
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "KOMENDY:"
+
+#: parted/ui.c:1445
+#, c-format
+msgid "Using %s\n"
+msgstr "U¿ycie %s\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#~ msgid "GNU Parted cannot resize this file system, please useresize2fs."
+#~ msgstr ""
+#~ "GNU Parted nie potrafi zmieniæ rozmiaru tego systemu plików, proszê u¿yæ "
+#~ "resize2fs."
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "gdy jest potrzeba, prosi o interwencjê u¿ytkownika"
+
+#~ msgid "GNU Parted Version information:\n"
+#~ msgstr "Informacje o wersji GNU Parteda:\n"
+
+#~ msgid ""
+#~ "print [free|NUMBER|all] display the partition table, a "
+#~ "partition, or all devices"
+#~ msgstr ""
+#~ "print [free|NUMER|all] wy¶wietla tablicê partycji, partycjê lub "
+#~ "wszystkie urz±dzenia"
+
+#~ 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 ""
+#~ "Bez podania argumentów, komenda print wy¶wietla ca³± tablicê partycji.\n"
+#~ "Z argumentem 'free' wy¶wietla informacje o wolnym miejscu, natomiast\n"
+#~ "je¶li podano NUMER partycji, wtedy wy¶wietlone zostan± bardziej\n"
+#~ "szczegó³owe informacje odno¶nie podanej partycji. Je¶li podano argument\n"
+#~ "'all', wy¶wietlone zostan± informacje dla wszystkich urz±dzeñ.\n"
diff --git a/parted-1.8.7/po/pt.gmo b/parted-1.8.7/po/pt.gmo
new file mode 100644
index 0000000..f6f6a2a
--- /dev/null
+++ b/parted-1.8.7/po/pt.gmo
Binary files differ
diff --git a/parted-1.8.7/po/pt.po b/parted-1.8.7/po/pt.po
new file mode 100644
index 0000000..1a70280
--- /dev/null
+++ b/parted-1.8.7/po/pt.po
@@ -0,0 +1,3411 @@
+# 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: 2007-05-09 17:02-0400\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"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: lib/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Tipo de sistema de ficheiros desconhecido."
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Erro abrindo %s: %s"
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, 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:411 libparted/arch/linux.c:1431
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s durante procura para leitura em %s"
+
+#: libparted/arch/beos.c:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s durante leitura em %s"
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, 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:496 libparted/arch/linux.c:1570
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s durante procura para escrita em %s"
+
+#: libparted/arch/beos.c:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s durante escrita em %s"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "Muitas páginas inválidas."
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr ""
+
+#: libparted/arch/gnu.c:114
+#, fuzzy
+msgid "Unable to probe store."
+msgstr "Impossível alinhar a partição."
+
+#: libparted/arch/gnu.c:352
+#, 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:369
+#, 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:380 parted/parted.c:2443
+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:772
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr ""
+
+#: libparted/arch/linux.c:408
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Não foi possível inicializar o dispositivo %s - %s."
+
+#: libparted/arch/linux.c:523
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:539
+#, c-format
+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 ""
+
+#: libparted/arch/linux.c:579
+#, fuzzy, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Impossível determinar tamanho de %s (%s)"
+
+#: libparted/arch/linux.c:668
+#, 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:677
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:698
+#, 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:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Erro inicializando dispositivo SCSI %s - %s"
+
+#: libparted/arch/linux.c:928
+#, c-format
+msgid ""
+"The device %s has zero length, and can't possibly store a file system or "
+"partition table. Perhaps you selected the wrong device?"
+msgstr ""
+
+#: libparted/arch/linux.c:1032
+#, 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:1110
+msgid "DAC960 RAID controller"
+msgstr "Controlador RAID DAC960"
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr "Controlador ATARAID"
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr "Controlador I20"
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr ""
+
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "ped_device_new() Tipo de dispositivo não suportado"
+
+#: libparted/arch/linux.c:2083
+#, 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:2262
+#, 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/arch/linux.c:2368
+#, fuzzy, c-format
+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 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:162
+msgid "Can't have the end before the start!"
+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:366
+#, 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:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr ""
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "Impossível abrir %s - rótulo de disco desconhecido."
+
+#: libparted/disk.c:471
+#, 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:598
+#, 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:1075
+#, 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:1634
+#, 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:1647
+#, fuzzy
+msgid "Too many primary partitions."
+msgstr "Muitas páginas inválidas."
+
+#: libparted/disk.c:1656
+#, 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:1680
+#, 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:1690
+#, 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:1715
+#, 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:1725 libparted/disk.c:1779 libparted/disk.c:1945
+#, fuzzy
+msgid "Can't have overlapping partitions."
+msgstr "Não posso copiar para uma partição sobreposta."
+
+#: libparted/disk.c:1733
+#, 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:2140
+msgid "metadata"
+msgstr ""
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "livre"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "extendida"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "lógica"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "primária"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "boot"
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr "root"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "escondida"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr ""
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2190
+#, fuzzy, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Sinalizador de partição desconhecido, %d."
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "Informação"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "Aviso"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "Erro"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "Fatal"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "Bug"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr "Sem Implementação"
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr "Arranjar"
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "Sim"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "Não"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "Repetir"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "Ignorar"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org 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/filesys.c:384
+msgid "Could not detect file system."
+msgstr "Não foi possível detectar o sistema de Ficheiros."
+
+#: libparted/filesys.c:395
+#, fuzzy
+msgid "The file system is bigger than its volume!"
+msgstr "O rotulo do disco afirma que o disco é maior que %s"
+
+#: libparted/filesys.c:403
+#, c-format
+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."
+
+#: libparted/filesys.c:445
+#, c-format
+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."
+
+#: libparted/filesys.c:505
+#, c-format
+msgid "Support for checking %s file systems is not implemented yet."
+msgstr "Suporte para verificar sistema de ficheiros não implementado para %s."
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr ""
+
+#: libparted/filesys.c:582
+#, fuzzy
+msgid "growing file system"
+msgstr "Tipo de sistema de ficheiros desconhecido."
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr "Não posso copiar para uma partição sobreposta."
+
+#: libparted/filesys.c:644
+#, fuzzy, c-format
+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."
+
+#: libparted/filesys.c:658
+#, c-format
+msgid "Support for copying %s file systems is not implemented yet."
+msgstr "Suporte para copiar sistema de ficheiros não implementado para %s."
+
+#: libparted/filesys.c:696
+#, c-format
+msgid "Support for resizing %s file systems is not implemented yet."
+msgstr ""
+"Suporte para redimensionar sistema de ficheiros não implementado para %s."
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, fuzzy
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr "O rotulo do disco afirma que o disco é maior que %s"
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "check"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, 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."
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, 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!"
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+#, fuzzy
+msgid "shrinking"
+msgstr "Aviso"
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "Aviso"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, c-format
+msgid "Device is too small for %lu blocks."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, 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:148
+#, 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:161
+#, 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:171
+#, 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:189
+#, 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:199
+#, 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:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+#, fuzzy
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Impossível alinhar a partição."
+
+#: libparted/labels/bsd.c:526
+#, fuzzy
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Impossível localizar um rotulo de disco bsd"
+
+#: libparted/labels/dasd.c:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "Impossível determinar tamanho de %s (%s)"
+
+#: libparted/labels/dasd.c:781
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Impossível localizar um rotulo de disco bsd"
+
+#: libparted/labels/dos.c:827
+#, 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:855
+#, 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:1318
+#, 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:1958
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+#: libparted/labels/dvh.c:190
+#, 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:313
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+
+#: libparted/labels/dvh.c:616
+#, 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:630
+#, 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:644
+msgid "Only logical partitions can be a boot file."
+msgstr ""
+
+#: libparted/labels/dvh.c:721
+msgid "Only logical partitions (boot files) have a name."
+msgstr ""
+
+#: libparted/labels/dvh.c:812
+#, fuzzy
+msgid "Too many primary partitions"
+msgstr "Muitas páginas inválidas."
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "%s durante escrita em %s"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, fuzzy, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr "Tipo de rótulo de disco: %s\n"
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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:648
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+msgstr ""
+
+#: libparted/labels/gpt.c:698
+#, 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:827
+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:862
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+
+#: libparted/labels/gpt.c:870
+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/mac.c:181
+#, 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:226
+msgid "Partition map has no partition map entry!"
+msgstr "Mapa de partições não tem nenhuma entrada!"
+
+#: libparted/labels/mac.c:273
+#, 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:532
+#, 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:550
+#, 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:580
+#, 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:597
+#, 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:611
+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:622
+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:675
+#, 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:688
+#, 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:736
+msgid "No valid partition map found."
+msgstr "Nenhum mapa de partições válido foi encontrado."
+
+#: libparted/labels/mac.c:795
+#, 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:822
+#, fuzzy
+msgid "Weird! There are 2 partitions map entries!"
+msgstr "Estranho - 2 entradas no mapa de partição"
+
+#: libparted/labels/mac.c:1347
+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:1443
+#, 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:354
+#, fuzzy, c-format
+msgid "Invalid partition table on %s."
+msgstr "Tabela de partições inválida em %s"
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, 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:791
+msgid "Can't add another partition."
+msgstr "Não posso adicionar outra partição."
+
+#: libparted/labels/rdb.c:162
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:497
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:600
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:697
+#, fuzzy, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "Impossível alinhar a partição."
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:740
+#, 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:1069
+#, fuzzy
+msgid "Unable to allocate a partition number."
+msgstr "Impossível alinhar a partição."
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr ""
+
+#: libparted/labels/sun.c:266
+#, 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:288
+#, 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:442
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:737
+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:752
+msgid "Sun disk label is full."
+msgstr ""
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr "Não há memória."
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, 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:527
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "Impossível alinhar a partição."
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, fuzzy, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "Impossível alinhar a partição."
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:72
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s durante escrita em %s"
+
+#: libparted/fs/amiga/amiga.c:278
+#, fuzzy, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "Impossível alinhar a partição."
+
+#: libparted/fs/amiga/amiga.c:289
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:318
+#, fuzzy, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "Impossível alinhar a partição."
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr "Descritores de grupo inconsistentes!"
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+#, fuzzy
+msgid "File system full!"
+msgstr "Sistema de ficheiros cheio!"
+
+#: libparted/fs/ext2/ext2.c:686
+#, fuzzy
+msgid "Invalid superblock. Are you sure this is an ext2 file system?"
+msgstr "Superbloco inválido. Tem certeza que isto é um sistema ext2?"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+#, fuzzy
+msgid "File system has errors! You should run e2fsck."
+msgstr "Sistema de ficheiros tem erros! Execute e2fsck primeiro!"
+
+#: libparted/fs/ext2/ext2.c:711
+#, 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!"
+
+#: libparted/fs/ext2/ext2.c:731
+#, fuzzy
+msgid "File system has an incompatible feature enabled."
+msgstr "Sistema de ficheiros tem características incompatíveis"
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr "Erro ao determinar o cache temporário."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+#, 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."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr "Não há inodes livres suficientes!"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+#, fuzzy
+msgid "File system is too full to remove a group!"
+msgstr "Sistema de ficheiros muito ocupado para remover um grupo!"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+#, 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!"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, fuzzy, c-format
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, fuzzy, c-format
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:666
+#, fuzzy
+msgid "File system was not cleanly unmounted! You should run e2fsck."
+msgstr ""
+"Sistema de ficheiros não foi desmontado correctamente! Execute e2fsck "
+"primeiro!"
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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 ""
+
+#: libparted/fs/ext2/ext2_resize.c:691
+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 ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+#, fuzzy
+msgid "Cross-linked blocks found! Better go run e2fsck first!"
+msgstr ""
+"Encontrados blocos com referência cruzada! Melhor executar e2fsck primeiro."
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, fuzzy, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "Bloco %i não tem referência? Estranho"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, fuzzy, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "Bloco %i não deveria ter sido marcado!"
+
+#: libparted/fs/ext2/interface.c:186
+#, 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."
+
+#: libparted/fs/ext2/interface.c:203
+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!"
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr "Não foi possível esvaziar a cache temporária!"
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr ""
+
+#: libparted/fs/fat/calc.c:135
+#, fuzzy, c-format
+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)"
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:308
+#, fuzzy, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr "A partição é muito pequena para um sistema de ficheiros FAT"
+
+#: libparted/fs/fat/fat.c:474
+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."
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr "Não há configurações possíveis para este tipo de FAT."
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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)."
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:874
+#, 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/resize.c:159
+#, 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."
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr "Erro escrevendo no diretório raiz."
+
+#: libparted/fs/fat/resize.c:489
+#, 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."
+
+#: libparted/fs/fat/resize.c:492
+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)."
+
+#: libparted/fs/fat/resize.c:500
+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."
+
+#: libparted/fs/fat/resize.c:504
+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."
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr ""
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr "Você gostaria de usar FAT32?"
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr ""
+
+#: libparted/fs/fat/resize.c:551
+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."
+
+#: libparted/fs/fat/resize.c:567
+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."
+
+#: libparted/fs/fat/resize.c:580
+#, 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!"
+
+#: 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:139
+#, 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:164
+#, 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:213
+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:219
+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:225
+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:235
+#, fuzzy
+msgid "File system is FAT12, which is unsupported."
+msgstr "O sistema de ficheiros é FAT12, que não é suportado."
+
+#: libparted/fs/fat/bootsector.c:411
+#, 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/fat/count.c:152
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:174
+#, fuzzy, c-format
+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."
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:203
+#, fuzzy, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr "%s é %dk, mas tem %d clusters (%dk)."
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+msgid ""
+"The file %s is marked as a system file. This means moving it could cause "
+"some programs to stop working."
+msgstr ""
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:269
+#, fuzzy, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "fat_table_set: cluster %ld fora do sistema de ficheiros"
+
+#: libparted/fs/fat/table.c:301
+#, fuzzy, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "fat_table_get: cluster %ld fora do sistema de ficheiros"
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "fat_table_alloc_cluster: não há clusters livres"
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, 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:318
+#, 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:358
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Assinatura linux swap não reconhecida '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr "Muitas páginas inválidas."
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr ""
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr ""
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+msgid "Could not update the extent cache for HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+msgid "Trying to write HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+msgid "Could not update the extent cache for HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+msgid "Trying to write HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:320
+#, fuzzy
+msgid "writing HFS Master Directory Block"
+msgstr "Erro escrevendo no diretório raiz."
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:720
+#, fuzzy
+msgid "Error while writing the allocation file."
+msgstr "Erro escrevendo no diretório raiz."
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:904
+msgid ""
+"It seems there is an error in the HFS wrapper: the bad blocks file doesn't "
+"contain the embedded HFS+ volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:998
+msgid "shrinking HFS wrapper"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+msgid ""
+"This is not a real %s check. This is going to extract special low level "
+"files for debugging purposes."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+msgid ""
+"Invalid size of a transaction block while replaying the journal (%i bytes)."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:260
+msgid ""
+"Journal stored outside of the volume are not supported. Try to desactivate "
+"the journal and run Parted again."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:271
+#, 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."
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:302
+msgid "Journal size mismatch between journal info block and journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:314
+#, 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."
+
+#: libparted/fs/hfs/journal.c:323
+msgid ""
+"The sector size stored in the journal is not 512 bytes. Parted only "
+"supports 512 bytes length sectors."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:353
+msgid ""
+"The journal is not empty. Parted must replay the transactions before "
+"opening the file system. This will modify the file system."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:381
+msgid ""
+"The volume header or the master directory block has changed while replaying "
+"the journal. You should restart Parted."
+msgstr ""
+
+#: libparted/fs/hfs/probe.c:51
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to %"
+"d bytes."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+msgid ""
+"A reference to an extent comes from a place it should not. You should check "
+"the file system!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:475
+msgid "This HFS volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+msgid ""
+"The extents overflow file should not contain its own extents! You should "
+"check the file system."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+#, fuzzy
+msgid "Could not cache the file system in memory."
+msgstr "Não foi possível detectar o sistema de Ficheiros."
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:619
+msgid "This HFS+ volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr "mostra esta mensagem de ajuda"
+
+#: parted/parted.c:95
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr "nunca pede intervenção do utulizador"
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr "mostra a versão"
+
+#: parted/parted.c:111
+#, 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:114
+msgid "LABEL-TYPE is one of: "
+msgstr "TIPO_ROTULO é um de:"
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr "FLAG é um de: "
+
+#: parted/parted.c:116
+#, fuzzy
+msgid "UNIT is one of: "
+msgstr "FLAG é um de: "
+
+#: parted/parted.c:117
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "TIPO-PART é um de: primary, logical, extended\n"
+
+#: parted/parted.c:119
+msgid "FS-TYPE is one of: "
+msgstr "TIPO-FS é um de: "
+
+#: parted/parted.c:120
+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:123
+msgid "STATE is one of: on, off\n"
+msgstr "ESTADO é um de: on, off\n"
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "DISPOSITIVO é usualmente /dev/hda ou /dev/sda\n"
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr "NAME é qualquer palavra que desejar\n"
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr ""
+
+#: parted/parted.c:130
+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:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr ""
+
+#: parted/parted.c:195
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:211
+#, 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:223
+msgid ""
+"The existing file system will be destroyed and all data on the partition "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+#, fuzzy
+msgid "Partition number?"
+msgstr "A partição está a ser utilizada."
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr ""
+
+#: parted/parted.c:504
+#, fuzzy
+msgid "Source partition number?"
+msgstr "A partição origem não existe."
+
+#: parted/parted.c:509
+#, fuzzy
+msgid "Can't copy an extended partition."
+msgstr "Não posso copiar partições extendidas."
+
+#: parted/parted.c:515
+#, fuzzy
+msgid "Destination partition number?"
+msgstr "A partição destino está a ser utilizada."
+
+#: parted/parted.c:615
+#, fuzzy
+msgid "New disk label type?"
+msgstr "Tipo de rótulo de disco: %s\n"
+
+#: parted/parted.c:656
+#, fuzzy
+msgid "File system?"
+msgstr "SistemaFich "
+
+#: parted/parted.c:707 parted/parted.c:878
+#, fuzzy
+msgid "Partition type?"
+msgstr "A partição não existe."
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+#, fuzzy
+msgid "Partition name?"
+msgstr "A partição não existe."
+
+#: parted/parted.c:722 parted/parted.c:895
+#, fuzzy
+msgid "File system type?"
+msgstr "SistemaFich "
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr ""
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr ""
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+
+#: parted/parted.c:890
+msgid "An extended partition cannot hold a file system. Did you want mkpart?"
+msgstr ""
+
+#: parted/parted.c:1050
+#, fuzzy
+msgid "Can't move an extended partition."
+msgstr "Não posso mover partições extendidas."
+
+#: parted/parted.c:1079
+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?"
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr ""
+
+#: parted/parted.c:1228
+#, fuzzy, c-format
+msgid "Flags: %s\n"
+msgstr "Sinalizador"
+
+#: parted/parted.c:1229
+#, fuzzy, c-format
+msgid "File System: %s\n"
+msgstr "SistemaFich "
+
+#: parted/parted.c:1230
+msgid "Size: "
+msgstr ""
+
+#: parted/parted.c:1235
+msgid "Minimum size: "
+msgstr ""
+
+#: parted/parted.c:1238
+msgid "Maximum size: "
+msgstr ""
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:1364
+#, fuzzy, c-format
+msgid "Disk %s: %s\n"
+msgstr "Tipo de rótulo de disco: %s\n"
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:1383
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d. Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:1392
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "Tabela de partições inválida em %s"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr ""
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Start"
+msgstr ""
+
+#: parted/parted.c:1407 parted/parted.c:1410
+msgid "End"
+msgstr ""
+
+#: parted/parted.c:1410
+#, fuzzy
+msgid "Size"
+msgstr "resize"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr ""
+
+#: parted/parted.c:1416
+#, fuzzy
+msgid "File system"
+msgstr "SistemaFich "
+
+#: parted/parted.c:1419
+#, fuzzy
+msgid "Name"
+msgstr "name"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr "Sinalizador"
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1624
+#, 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:1663
+msgid "searching for file systems"
+msgstr ""
+
+#: parted/parted.c:1877
+#, fuzzy
+msgid "New device?"
+msgstr "Nenhum dispositivo encontrado"
+
+#: parted/parted.c:1902
+msgid "Flag to Invert?"
+msgstr ""
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr ""
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "check"
+
+#: parted/parted.c:2096
+#, fuzzy
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr ""
+"check MINOR faz um teste simples no sistema de ficheiros"
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "cp"
+
+#: parted/parted.c:2105
+#, 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"
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:2114
+#, fuzzy
+msgid ""
+"help [COMMAND] print general help, or help on "
+"COMMAND"
+msgstr "help [COMANDO] mostra ajuda geral, ou ajuda a COMANDO"
+
+#: parted/parted.c:2120
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:2120
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:2123
+#, 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:2129
+msgid "mkfs"
+msgstr "mkfs"
+
+#: parted/parted.c:2132
+#, fuzzy
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+"mkfs MINOR TIPO-FS cria um sistema TIPO-FS na partição MINOR"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:2141
+#, 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:2147
+#, 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:2152
+msgid "mkpartfs"
+msgstr "mkpartfs"
+
+#: parted/parted.c:2155
+#, 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"
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr "move"
+
+#: parted/parted.c:2164
+#, fuzzy
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "move MINOR INICIO [FIM] redimensiona a partição MINOR"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:2172
+#, fuzzy
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr "name MINOR NAME renomeia a partição MINOR para NAME"
+
+#: parted/parted.c:2177
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr "print mostra a tabela de partições"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:2199
+#, fuzzy
+msgid "quit exit program"
+msgstr "quit sair do programa"
+
+#: parted/parted.c:2204
+#, fuzzy
+msgid "rescue"
+msgstr "resize"
+
+#: parted/parted.c:2207
+#, fuzzy
+msgid ""
+"rescue START END rescue a lost partition near START "
+"and END"
+msgstr "print mostra a tabela de partições"
+
+#: parted/parted.c:2213
+msgid "resize"
+msgstr "resize"
+
+#: parted/parted.c:2216
+#, fuzzy
+msgid ""
+"resize NUMBER START END resize partition NUMBER and its "
+"file system"
+msgstr "resize MINOR INICIO FIM redimensiona a partição MINOR"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:2227
+#, fuzzy
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "rm MINOR apaga a partição MINOR"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:2235
+#, fuzzy
+msgid "select DEVICE choose the device to edit"
+msgstr "select DEVICE selecciona o dispositivo a editar"
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:2243
+#, 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:2249
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:2252
+msgid ""
+"toggle [NUMBER [FLAG]] toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:2258
+#, fuzzy
+msgid "unit"
+msgstr "quit"
+
+#: parted/parted.c:2261
+#, fuzzy
+msgid "unit UNIT set the default unit to UNIT"
+msgstr "print mostra a tabela de partições"
+
+#: parted/parted.c:2266
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:2269
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:2273
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "Nenhum dispositivo encontrado"
+
+#: parted/parted.c:2412
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:2450
+msgid "You may need to update /etc/fstab.\n"
+msgstr ""
+
+#: parted/ui.c:160
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:163
+#, 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:168
+#, 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:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:372
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:377
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:420
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:523
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:1024
+#, fuzzy
+msgid "Expecting a partition number."
+msgstr "A partição destino está a ser utilizada."
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "A partição não existe."
+
+#: parted/ui.c:1053
+#, fuzzy
+msgid "Expecting a file system type."
+msgstr "Tipo de sistema de ficheiros desconhecido."
+
+#: parted/ui.c:1060
+#, fuzzy, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Tipo de sistema de ficheiros desconhecido."
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr ""
+
+#: parted/ui.c:1178
+#, fuzzy
+msgid "Can't create any more partitions."
+msgstr "Não posso adicionar outra partição."
+
+#: parted/ui.c:1188
+#, fuzzy
+msgid "Expecting a partition type."
+msgstr "A partição destino não existe."
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr "on"
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr ""
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "OPÇÕES:"
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "COMANDOs:"
+
+#: parted/ui.c:1445
+#, fuzzy, c-format
+msgid "Using %s\n"
+msgstr ""
+"\n"
+"Usando %s\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "quando necessário, pede intervenção do utilizador"
+
+#~ 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 "Could not read geometry of %s - %s."
+#~ msgstr "Não foi possível ler a geometria de %s - %s"
+
+#~ 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 "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 "START and END are in megabytes\n"
+#~ msgstr "INICIO e FIM são em megabytes\n"
+
+#~ msgid ""
+#~ "You requested to create a partition at %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Pretende criar uma partiçao em %.3f-%.3fMb. O mais perto que se consegue "
+#~ "será %3f-%.3fMb."
+
+#~ 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/parted-1.8.7/po/pt_BR.gmo b/parted-1.8.7/po/pt_BR.gmo
new file mode 100644
index 0000000..c7f2afd
--- /dev/null
+++ b/parted-1.8.7/po/pt_BR.gmo
Binary files differ
diff --git a/parted-1.8.7/po/pt_BR.po b/parted-1.8.7/po/pt_BR.po
new file mode 100644
index 0000000..28595d2
--- /dev/null
+++ b/parted-1.8.7/po/pt_BR.po
@@ -0,0 +1,3478 @@
+# 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: 2007-05-09 17:02-0400\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"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: lib/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Tipo de sistema de arquivos desconhecido."
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Erro abrindo %s: %s"
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, 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:411 libparted/arch/linux.c:1431
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s durante procura para leitura em %s"
+
+#: libparted/arch/beos.c:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s durante leitura em %s"
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, 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:496 libparted/arch/linux.c:1570
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s durante procura para escrita em %s"
+
+#: libparted/arch/beos.c:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s durante escrita em %s"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "Muitas páginas inválidas."
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr ""
+
+#: libparted/arch/gnu.c:114
+#, fuzzy
+msgid "Unable to probe store."
+msgstr "Impossível alinhar a partição."
+
+#: libparted/arch/gnu.c:352
+#, 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:369
+#, 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:380 parted/parted.c:2443
+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:772
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr ""
+
+#: libparted/arch/linux.c:408
+#, 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:523
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:539
+#, c-format
+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 ""
+
+#: libparted/arch/linux.c:579
+#, fuzzy, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Impossível determinar tamanho de %s (%s)"
+
+#: libparted/arch/linux.c:668
+#, 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:677
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:698
+#, 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:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Erro inicializando dispositivo SCSI %s - %s"
+
+#: libparted/arch/linux.c:928
+#, c-format
+msgid ""
+"The device %s has zero length, and can't possibly store a file system or "
+"partition table. Perhaps you selected the wrong device?"
+msgstr ""
+
+#: libparted/arch/linux.c:1032
+#, 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:1110
+msgid "DAC960 RAID controller"
+msgstr "Controlador RAID DAC960"
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr "Controlador ATARAID"
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr "Controlador I2O"
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr ""
+
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "Desconhecido"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "ped_device_new() Tipo de dispositivo não suportado"
+
+#: libparted/arch/linux.c:2083
+#, 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:2262
+#, 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/arch/linux.c:2368
+#, fuzzy, c-format
+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 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:162
+msgid "Can't have the end before the start!"
+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:366
+#, 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:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr ""
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "Impossível abrir %s - rótulo de disco desconhecido."
+
+#: libparted/disk.c:471
+#, 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:598
+#, 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:1075
+#, 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:1634
+#, 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:1647
+#, fuzzy
+msgid "Too many primary partitions."
+msgstr "Muitas páginas inválidas."
+
+#: libparted/disk.c:1656
+#, 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:1680
+#, 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:1690
+#, 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:1715
+#, 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:1725 libparted/disk.c:1779 libparted/disk.c:1945
+#, fuzzy
+msgid "Can't have overlapping partitions."
+msgstr "Não posso copiar em uma partição sobreposta."
+
+#: libparted/disk.c:1733
+#, 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:2140
+msgid "metadata"
+msgstr "metadado"
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "livre"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "extendida"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "lógica"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "primária"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "boot"
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr "root"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "escondida"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr ""
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2190
+#, fuzzy, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Sinalizador de partição desconhecido, %d."
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "Informação"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "Aviso"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "Erro"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "Fatal"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "Bug"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr "Sem Implementação"
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr "Arrumar"
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "Sim"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "Não"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "Repetir"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "Ignorar"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "Cancelar"
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org 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/filesys.c:384
+msgid "Could not detect file system."
+msgstr "Não foi possível detectar o sistema de arquivos."
+
+#: libparted/filesys.c:395
+#, fuzzy
+msgid "The file system is bigger than its volume!"
+msgstr "O rótulo de disco descreve um disco maior que %s."
+
+#: libparted/filesys.c:403
+#, c-format
+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."
+
+#: libparted/filesys.c:445
+#, c-format
+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."
+
+#: libparted/filesys.c:505
+#, c-format
+msgid "Support for checking %s file systems is not implemented yet."
+msgstr "Suporte para checar sistema de arquivos não implementado para %s."
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr ""
+
+#: libparted/filesys.c:582
+#, fuzzy
+msgid "growing file system"
+msgstr "Tipo de sistema de arquivos desconhecido."
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr "Não posso copiar em uma partição sobreposta."
+
+#: libparted/filesys.c:644
+#, fuzzy, c-format
+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."
+
+#: libparted/filesys.c:658
+#, c-format
+msgid "Support for copying %s file systems is not implemented yet."
+msgstr "Suporte para copiar sistema de arquivos não implementado para %s."
+
+#: libparted/filesys.c:696
+#, c-format
+msgid "Support for resizing %s file systems is not implemented yet."
+msgstr ""
+"Suporte para redimensionar sistema de arquivos não implementado para %s."
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, fuzzy
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr "O rótulo de disco descreve um disco maior que %s."
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "check"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, 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."
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, 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!"
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+#, fuzzy
+msgid "shrinking"
+msgstr "Aviso"
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "Aviso"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, c-format
+msgid "Device is too small for %lu blocks."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, 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:148
+#, 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:161
+#, 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:171
+#, 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:189
+#, 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:199
+#, 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:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+#, fuzzy
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Impossível alinhar a partição."
+
+#: libparted/labels/bsd.c:526
+#, 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:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "Impossível determinar tamanho de %s (%s)"
+
+#: libparted/labels/dasd.c:781
+#, 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:827
+#, 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:855
+#, 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:1318
+#, 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:1958
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+#: libparted/labels/dvh.c:190
+#, 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:313
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+
+#: libparted/labels/dvh.c:616
+#, 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:630
+#, 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:644
+msgid "Only logical partitions can be a boot file."
+msgstr ""
+
+#: libparted/labels/dvh.c:721
+msgid "Only logical partitions (boot files) have a name."
+msgstr ""
+
+#: libparted/labels/dvh.c:812
+#, fuzzy
+msgid "Too many primary partitions"
+msgstr "Muitas páginas inválidas."
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "%s durante escrita em %s"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, fuzzy, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr "%s %s %s"
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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:648
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+msgstr ""
+
+#: libparted/labels/gpt.c:698
+#, 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:827
+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:862
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+
+#: libparted/labels/gpt.c:870
+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/mac.c:181
+#, 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:226
+msgid "Partition map has no partition map entry!"
+msgstr "Mapa de partições não tem nenhuma entrada!"
+
+#: libparted/labels/mac.c:273
+#, 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:532
+#, 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:550
+#, 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:580
+#, 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:597
+#, 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:611
+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:622
+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:675
+#, 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:688
+#, 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:736
+msgid "No valid partition map found."
+msgstr "Nenhum mapa de partições válido foi encontrado."
+
+#: libparted/labels/mac.c:795
+#, 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:822
+#, fuzzy
+msgid "Weird! There are 2 partitions map entries!"
+msgstr "Estranho - 2 entradas no mapa de partição"
+
+#: libparted/labels/mac.c:1347
+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:1443
+#, 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:354
+#, fuzzy, c-format
+msgid "Invalid partition table on %s."
+msgstr "Tabela de partições inválida em %s"
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, 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:791
+msgid "Can't add another partition."
+msgstr "Não posso adicionar outra partição."
+
+#: libparted/labels/rdb.c:162
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:497
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:600
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:697
+#, fuzzy, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "Impossível alinhar a partição."
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:740
+#, 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:1069
+#, fuzzy
+msgid "Unable to allocate a partition number."
+msgstr "Impossível alinhar a partição."
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr "Um rótulo de disco Sun corrompido foi detectado."
+
+#: libparted/labels/sun.c:266
+#, 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:288
+#, 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:442
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:737
+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:752
+msgid "Sun disk label is full."
+msgstr "O rótulo de disco Sun está cheio."
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr "Não há memória."
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, 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:527
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "Impossível alinhar a partição."
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, fuzzy, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "Impossível alinhar a partição."
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:72
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s durante escrita em %s"
+
+#: libparted/fs/amiga/amiga.c:278
+#, fuzzy, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "Impossível alinhar a partição."
+
+#: libparted/fs/amiga/amiga.c:289
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:318
+#, fuzzy, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "Impossível alinhar a partição."
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr "Descritores de grupo inconsistentes!"
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+#, fuzzy
+msgid "File system full!"
+msgstr "Sistema de arquivos cheio!"
+
+#: libparted/fs/ext2/ext2.c:686
+#, 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?"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+#, fuzzy
+msgid "File system has errors! You should run e2fsck."
+msgstr "Sistema de arquivos tem erros! Execute e2fsck primeiro."
+
+#: libparted/fs/ext2/ext2.c:711
+#, 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."
+
+#: libparted/fs/ext2/ext2.c:731
+#, fuzzy
+msgid "File system has an incompatible feature enabled."
+msgstr "Sistema de arquivos tem uma característica incompatível habilitada"
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr "Erro determinando o cache temporário."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+#, 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."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr "Não há inodes livres suficientes!"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+#, fuzzy
+msgid "File system is too full to remove a group!"
+msgstr "Sistema de arquivos muito ocupado para remover um grupo!"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+#, 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!"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, fuzzy, c-format
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, fuzzy, c-format
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:666
+#, fuzzy
+msgid "File system was not cleanly unmounted! You should run e2fsck."
+msgstr ""
+"Sistema de arquivos não foi desmontado corretamente! Execute e2fsck primeiro."
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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 ""
+
+#: libparted/fs/ext2/ext2_resize.c:691
+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 ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+#, fuzzy
+msgid "Cross-linked blocks found! Better go run e2fsck first!"
+msgstr ""
+"Encontrados blocos com referência cruzada! Melhor executar e2fsck primeiro."
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, fuzzy, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "Bloco %i não tem referência? Estranho"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, fuzzy, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "Bloco %i não deveria ter sido marcado!"
+
+#: libparted/fs/ext2/interface.c:186
+#, 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."
+
+#: libparted/fs/ext2/interface.c:203
+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!"
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr "Não foi possível esvaziar cache temporário!"
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr ""
+
+#: libparted/fs/fat/calc.c:135
+#, fuzzy, c-format
+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)"
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:308
+#, fuzzy, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr "A partição é muito pequena para um sistema de arquivos FAT"
+
+#: libparted/fs/fat/fat.c:474
+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."
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr "Não há configurações possíveis para este tipo de FAT."
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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)."
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:874
+#, 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/resize.c:159
+#, 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."
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr "Erro escrevendo no diretório raiz."
+
+#: libparted/fs/fat/resize.c:489
+#, 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."
+
+#: libparted/fs/fat/resize.c:492
+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)."
+
+#: libparted/fs/fat/resize.c:500
+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."
+
+#: libparted/fs/fat/resize.c:504
+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."
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr "Você gostaria de usar FAT32?"
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: libparted/fs/fat/resize.c:551
+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."
+
+#: libparted/fs/fat/resize.c:567
+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."
+
+#: libparted/fs/fat/resize.c:580
+#, 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!"
+
+#: 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:139
+#, 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:164
+#, 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:213
+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:219
+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:225
+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:235
+#, fuzzy
+msgid "File system is FAT12, which is unsupported."
+msgstr "O sistema de arquivos é FAT12, que não é suportado."
+
+#: libparted/fs/fat/bootsector.c:411
+#, 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/fat/count.c:152
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:174
+#, fuzzy, c-format
+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."
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:203
+#, fuzzy, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr "%s é %dk, mas tem %d clusters (%dk)."
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+msgid ""
+"The file %s is marked as a system file. This means moving it could cause "
+"some programs to stop working."
+msgstr ""
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:269
+#, fuzzy, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "fat_table_set: cluster %ld fora do sistema de arquivos"
+
+#: libparted/fs/fat/table.c:301
+#, fuzzy, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "fat_table_get: cluster %ld fora do sistema de arquivos"
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "fat_table_alloc_cluster: não há clusters livres"
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, 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:318
+#, 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:358
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Assinatura linux swap não reconhecida '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr "Muitas páginas inválidas."
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr ""
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr ""
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+msgid "Could not update the extent cache for HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+msgid "Trying to write HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+msgid "Could not update the extent cache for HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+msgid "Trying to write HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:320
+#, fuzzy
+msgid "writing HFS Master Directory Block"
+msgstr "Erro escrevendo no diretório raiz."
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:720
+#, fuzzy
+msgid "Error while writing the allocation file."
+msgstr "Erro escrevendo no diretório raiz."
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:904
+msgid ""
+"It seems there is an error in the HFS wrapper: the bad blocks file doesn't "
+"contain the embedded HFS+ volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:998
+msgid "shrinking HFS wrapper"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+msgid ""
+"This is not a real %s check. This is going to extract special low level "
+"files for debugging purposes."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+msgid ""
+"Invalid size of a transaction block while replaying the journal (%i bytes)."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:260
+msgid ""
+"Journal stored outside of the volume are not supported. Try to desactivate "
+"the journal and run Parted again."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:271
+#, 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."
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:302
+msgid "Journal size mismatch between journal info block and journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:314
+#, 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."
+
+#: libparted/fs/hfs/journal.c:323
+msgid ""
+"The sector size stored in the journal is not 512 bytes. Parted only "
+"supports 512 bytes length sectors."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:353
+msgid ""
+"The journal is not empty. Parted must replay the transactions before "
+"opening the file system. This will modify the file system."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:381
+msgid ""
+"The volume header or the master directory block has changed while replaying "
+"the journal. You should restart Parted."
+msgstr ""
+
+#: libparted/fs/hfs/probe.c:51
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to %"
+"d bytes."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+msgid ""
+"A reference to an extent comes from a place it should not. You should check "
+"the file system!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:475
+msgid "This HFS volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+msgid ""
+"The extents overflow file should not contain its own extents! You should "
+"check the file system."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+#, fuzzy
+msgid "Could not cache the file system in memory."
+msgstr "Não foi possível detectar o sistema de arquivos."
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:619
+msgid "This HFS+ volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr "mostra esta mensagem de ajuda"
+
+#: parted/parted.c:95
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr "nunca pede intervenção do usuário"
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr "mostra a versão"
+
+#: parted/parted.c:111
+#, 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:114
+msgid "LABEL-TYPE is one of: "
+msgstr "TIPO_ROTULO é um de:"
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr "FLAG é um de: "
+
+#: parted/parted.c:116
+#, fuzzy
+msgid "UNIT is one of: "
+msgstr "FLAG é um de: "
+
+#: parted/parted.c:117
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "TIPO-PART é um de: primary, logical, extended\n"
+
+#: parted/parted.c:119
+msgid "FS-TYPE is one of: "
+msgstr "TIPO-FS é um de: "
+
+#: parted/parted.c:120
+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:123
+msgid "STATE is one of: on, off\n"
+msgstr "ESTADO é um de: on, off\n"
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "DISPOSITIVO é usualmente /dev/hda ou /dev/sda\n"
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr "NAME é qualquer palavra que desejar\n"
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr ""
+
+#: parted/parted.c:130
+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:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr ""
+
+#: parted/parted.c:195
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:211
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Partição(ões) em %s está(ão) sendo utilizada(s)."
+
+#: parted/parted.c:223
+msgid ""
+"The existing file system will be destroyed and all data on the partition "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+#, fuzzy
+msgid "Partition number?"
+msgstr "A partição está sendo utilizada."
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr ""
+
+#: parted/parted.c:504
+#, fuzzy
+msgid "Source partition number?"
+msgstr "A partição origem não existe."
+
+#: parted/parted.c:509
+#, fuzzy
+msgid "Can't copy an extended partition."
+msgstr "Não posso copiar partições extendidas."
+
+#: parted/parted.c:515
+#, fuzzy
+msgid "Destination partition number?"
+msgstr "A partição destino está sendo utilizada."
+
+#: parted/parted.c:615
+#, fuzzy
+msgid "New disk label type?"
+msgstr "Tipo de rótulo de disco: %s\n"
+
+#: parted/parted.c:656
+#, fuzzy
+msgid "File system?"
+msgstr "Sistema de arquivos "
+
+#: parted/parted.c:707 parted/parted.c:878
+#, fuzzy
+msgid "Partition type?"
+msgstr "A partição não existe."
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+#, fuzzy
+msgid "Partition name?"
+msgstr "A partição não existe."
+
+#: parted/parted.c:722 parted/parted.c:895
+#, fuzzy
+msgid "File system type?"
+msgstr "Sistema de arquivos "
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr ""
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr ""
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+
+#: parted/parted.c:890
+msgid "An extended partition cannot hold a file system. Did you want mkpart?"
+msgstr ""
+
+#: parted/parted.c:1050
+#, fuzzy
+msgid "Can't move an extended partition."
+msgstr "Não posso mover partições extendidas."
+
+#: parted/parted.c:1079
+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?"
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr ""
+
+#: parted/parted.c:1228
+#, fuzzy, c-format
+msgid "Flags: %s\n"
+msgstr "Sinalizador"
+
+#: parted/parted.c:1229
+#, fuzzy, c-format
+msgid "File System: %s\n"
+msgstr "Sistema de arquivos "
+
+#: parted/parted.c:1230
+msgid "Size: "
+msgstr ""
+
+#: parted/parted.c:1235
+msgid "Minimum size: "
+msgstr ""
+
+#: parted/parted.c:1238
+msgid "Maximum size: "
+msgstr ""
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:1364
+#, fuzzy, c-format
+msgid "Disk %s: %s\n"
+msgstr "%s %s %s"
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:1383
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d. Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:1392
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "Tabela de partições inválida em %s"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr ""
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Start"
+msgstr ""
+
+#: parted/parted.c:1407 parted/parted.c:1410
+msgid "End"
+msgstr ""
+
+#: parted/parted.c:1410
+#, fuzzy
+msgid "Size"
+msgstr "resize"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr ""
+
+#: parted/parted.c:1416
+#, fuzzy
+msgid "File system"
+msgstr "Sistema de arquivos "
+
+#: parted/parted.c:1419
+#, fuzzy
+msgid "Name"
+msgstr "name"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr "Sinalizador"
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1624
+#, 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:1663
+msgid "searching for file systems"
+msgstr ""
+
+#: parted/parted.c:1877
+#, fuzzy
+msgid "New device?"
+msgstr "Nenhum dispositivo encontrado"
+
+#: parted/parted.c:1902
+msgid "Flag to Invert?"
+msgstr ""
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr ""
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "check"
+
+#: parted/parted.c:2096
+#, fuzzy
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr ""
+"check MINOR faz um teste simples no sistema de arquivos"
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "cp"
+
+#: parted/parted.c:2105
+#, 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"
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:2114
+#, fuzzy
+msgid ""
+"help [COMMAND] print general help, or help on "
+"COMMAND"
+msgstr "help [COMANDO] mostra ajuda geral, ou ajuda a COMANDO"
+
+#: parted/parted.c:2120
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:2120
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:2123
+#, 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:2129
+msgid "mkfs"
+msgstr "mkfs"
+
+#: parted/parted.c:2132
+#, fuzzy
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+"mkfs MINOR TIPO-FS cria um sistema TIPO-FS na partição MINOR"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:2141
+#, 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:2147
+#, 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:2152
+msgid "mkpartfs"
+msgstr "mkpartfs"
+
+#: parted/parted.c:2155
+#, 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"
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr "move"
+
+#: parted/parted.c:2164
+#, fuzzy
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "move MINOR INICIO [FIM] move a partição MINOR"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:2172
+#, fuzzy
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr "name MINOR NAME renomeia a partição MINOR para NAME"
+
+#: parted/parted.c:2177
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr "print mostra a tabela de partições"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:2199
+#, fuzzy
+msgid "quit exit program"
+msgstr "quit sair do programa"
+
+#: parted/parted.c:2204
+#, fuzzy
+msgid "rescue"
+msgstr "resize"
+
+#: parted/parted.c:2207
+#, fuzzy
+msgid ""
+"rescue START END rescue a lost partition near START "
+"and END"
+msgstr "print mostra a tabela de partições"
+
+#: parted/parted.c:2213
+msgid "resize"
+msgstr "resize"
+
+#: parted/parted.c:2216
+#, fuzzy
+msgid ""
+"resize NUMBER START END resize partition NUMBER and its "
+"file system"
+msgstr "resize MINOR INICIO FIM redimensiona a partição MINOR"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:2227
+#, fuzzy
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "rm MINOR apaga a partição MINOR"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:2235
+#, fuzzy
+msgid "select DEVICE choose the device to edit"
+msgstr "select DEVICE seleciona o dispositivo a editar"
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:2243
+#, 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:2249
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:2252
+msgid ""
+"toggle [NUMBER [FLAG]] toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:2258
+#, fuzzy
+msgid "unit"
+msgstr "quit"
+
+#: parted/parted.c:2261
+#, fuzzy
+msgid "unit UNIT set the default unit to UNIT"
+msgstr "print mostra a tabela de partições"
+
+#: parted/parted.c:2266
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:2269
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:2273
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "Nenhum dispositivo encontrado"
+
+#: parted/parted.c:2412
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:2450
+msgid "You may need to update /etc/fstab.\n"
+msgstr ""
+
+#: parted/ui.c:160
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:163
+#, 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:168
+#, 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:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:372
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:377
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:420
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:523
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:1024
+#, fuzzy
+msgid "Expecting a partition number."
+msgstr "A partição destino está sendo utilizada."
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "A partição não existe."
+
+#: parted/ui.c:1053
+#, fuzzy
+msgid "Expecting a file system type."
+msgstr "Tipo de sistema de arquivos desconhecido."
+
+#: parted/ui.c:1060
+#, fuzzy, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Tipo de sistema de arquivos desconhecido."
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr ""
+
+#: parted/ui.c:1178
+#, fuzzy
+msgid "Can't create any more partitions."
+msgstr "Não posso adicionar outra partição."
+
+#: parted/ui.c:1188
+#, fuzzy
+msgid "Expecting a partition type."
+msgstr "A partição destino não existe."
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr "on"
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr ""
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "OPÇÕESs:"
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "COMANDOs:"
+
+#: parted/ui.c:1445
+#, fuzzy, c-format
+msgid "Using %s\n"
+msgstr ""
+"\n"
+"Usando %s\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "quando necessário, pede intervenção do usuário"
+
+#~ 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 "Could not read geometry of %s - %s."
+#~ msgstr "Não foi possível ler a geometria de %s - %s"
+
+#~ 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 "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 "START and END are in megabytes\n"
+#~ msgstr "INICIO e FIM são em megabytes\n"
+
+#~ msgid ""
+#~ "You requested to create a partition at %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Você comandou a criação de uma partição em %.3f-%.3fMb. O mais perto que "
+#~ "o Parted pode chegar é %.3f-%.3fMb."
+
+#~ 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/parted-1.8.7/po/quot.sed b/parted-1.8.7/po/quot.sed
new file mode 100644
index 0000000..0122c46
--- /dev/null
+++ b/parted-1.8.7/po/quot.sed
@@ -0,0 +1,6 @@
+s/"\([^"]*\)"/“\1”/g
+s/`\([^`']*\)'/‘\1’/g
+s/ '\([^`']*\)' / ‘\1’ /g
+s/ '\([^`']*\)'$/ ‘\1’/g
+s/^'\([^`']*\)' /‘\1’ /g
+s/“”/""/g
diff --git a/parted-1.8.7/po/remove-potcdate.sin b/parted-1.8.7/po/remove-potcdate.sin
new file mode 100644
index 0000000..2436c49
--- /dev/null
+++ b/parted-1.8.7/po/remove-potcdate.sin
@@ -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/parted-1.8.7/po/ro.gmo b/parted-1.8.7/po/ro.gmo
new file mode 100644
index 0000000..80ee8df
--- /dev/null
+++ b/parted-1.8.7/po/ro.gmo
Binary files differ
diff --git a/parted-1.8.7/po/ro.po b/parted-1.8.7/po/ro.po
new file mode 100644
index 0000000..25169f0
--- /dev/null
+++ b/parted-1.8.7/po/ro.po
@@ -0,0 +1,3030 @@
+# 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: 2007-05-09 17:02-0400\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"
+"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/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Tip de sistem de fiºiere necunoscut \"%s\"."
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Eroare la deschiderea %s: %s"
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, 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:411 libparted/arch/linux.c:1431
+#, 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:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s în timpul citirii pe %s"
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, 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:496 libparted/arch/linux.c:1570
+#, 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:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s în timpul scrierii pe %s"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, c-format
+msgid "too many arguments"
+msgstr ""
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr "Nu pot deschide %s."
+
+#: libparted/arch/gnu.c:114
+msgid "Unable to probe store."
+msgstr "Nu pot proba `store'."
+
+#: libparted/arch/gnu.c:352
+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:369
+#, 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:380 parted/parted.c:2443
+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:772
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s încearcã sã sincronizeze %s pe disc"
+
+#: libparted/arch/linux.c:408
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Nu am putut afla date despre dispozitivul %s - %s."
+
+#: libparted/arch/linux.c:523
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:539
+#, c-format
+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 ""
+
+#: libparted/arch/linux.c:579
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Nu pot determina dimensiunea lui %s (%s)."
+
+#: libparted/arch/linux.c:668
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Nu am putut identifica dispozitivul %s - %s"
+
+#: libparted/arch/linux.c:677
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:698
+#, 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:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Eroare la iniþializarea dispozitivului SCSI %s - %s"
+
+#: libparted/arch/linux.c:928
+#, fuzzy, c-format
+msgid ""
+"The device %s has zero length, and can't 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:1032
+#, 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:1110
+msgid "DAC960 RAID controller"
+msgstr "Controller RAID DAC960"
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr "Controller ATARAID"
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr "Controller I2O"
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr ""
+
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "Necunoscut"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "ped_device_new() Tip de dispozitiv nesuportat"
+
+#: libparted/arch/linux.c:2083
+#, 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:2262
+#, 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/arch/linux.c:2368
+#, c-format
+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."
+
+#: libparted/cs/geom.c:162
+msgid "Can't have the end before the start!"
+msgstr ""
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr ""
+
+#: libparted/cs/geom.c:366
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr ""
+
+#: libparted/cs/geom.c:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr ""
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "Nu pot deschide %s - etichetã de disc nerecunoscutã."
+
+#: libparted/disk.c:471
+#, 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:598
+#, 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:1075
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "Etichetele de disc %s nu suportã partiþii extinse."
+
+#: libparted/disk.c:1634
+#, 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:1647
+msgid "Too many primary partitions."
+msgstr "Prea multe partiþii primare."
+
+#: libparted/disk.c:1656
+#, 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:1680
+#, 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:1690
+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:1715
+#, 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:1725 libparted/disk.c:1779 libparted/disk.c:1945
+msgid "Can't have overlapping partitions."
+msgstr "Nu puteþi avea partiþii care se suprapun."
+
+#: libparted/disk.c:1733
+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:2140
+msgid "metadata"
+msgstr "metadata"
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "liber"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "extinsã"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "logicã"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "primarã"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "boot"
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr "root"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "ascunsã"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr "hp-service"
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2190
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Flag de partiþie necunoscut, %d."
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "Informaþii"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "Avertisment"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "Eroare"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "Fatalã"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "Bug"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr ""
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr ""
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr ""
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr ""
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr ""
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr ""
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr ""
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr ""
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org containing at least the version (%s) and the following "
+"message: "
+msgstr ""
+
+#: libparted/filesys.c:384
+msgid "Could not detect file system."
+msgstr ""
+
+#: libparted/filesys.c:395
+msgid "The file system is bigger than its volume!"
+msgstr ""
+
+#: libparted/filesys.c:403
+#, c-format
+msgid "Support for opening %s file systems is not implemented yet."
+msgstr ""
+
+#: libparted/filesys.c:445
+#, c-format
+msgid "Support for creating %s file systems is not implemented yet."
+msgstr ""
+
+#: libparted/filesys.c:505
+#, c-format
+msgid "Support for checking %s file systems is not implemented yet."
+msgstr ""
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr ""
+
+#: libparted/filesys.c:582
+msgid "growing file system"
+msgstr ""
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr ""
+
+#: libparted/filesys.c:644
+#, c-format
+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 ""
+
+#: libparted/filesys.c:658
+#, c-format
+msgid "Support for copying %s file systems is not implemented yet."
+msgstr ""
+
+#: libparted/filesys.c:696
+#, c-format
+msgid "Support for resizing %s file systems is not implemented yet."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+msgid "checking"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+msgid ""
+"The reiserfs file system passed a basic check. For a more comprehensive "
+"check, run reiserfsck --check."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+msgid "Sorry, can't move the start of reiserfs partitions yet."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+msgid "shrinking"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "Avertisment"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, c-format
+msgid "Device is too small for %lu blocks."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr ""
+
+#: libparted/labels/aix.c:148
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr ""
+
+#: libparted/labels/aix.c:161
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr ""
+
+#: libparted/labels/aix.c:171
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr ""
+
+#: libparted/labels/aix.c:189
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr ""
+
+#: libparted/labels/aix.c:199
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr ""
+
+#: libparted/labels/bsd.c:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Nu pot satisface toate constrângerile pe partiþie."
+
+#: libparted/labels/bsd.c:526
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Nu pot aloca loc pentru eticheta de disc bsd."
+
+#: libparted/labels/dasd.c:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "Nu pot determina dimensiunea lui %s (%s)."
+
+#: libparted/labels/dasd.c:781
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Nu pot aloca loc pentru eticheta de disc bsd."
+
+#: libparted/labels/dos.c:827
+#, 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:855
+#, 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:1318
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr ""
+
+#: libparted/labels/dos.c:1958
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+#: libparted/labels/dvh.c:190
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr ""
+
+#: libparted/labels/dvh.c:313
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+
+#: libparted/labels/dvh.c:616
+msgid "Only primary partitions can be root partitions."
+msgstr ""
+
+#: libparted/labels/dvh.c:630
+msgid "Only primary partitions can be swap partitions."
+msgstr ""
+
+#: libparted/labels/dvh.c:644
+msgid "Only logical partitions can be a boot file."
+msgstr ""
+
+#: libparted/labels/dvh.c:721
+msgid "Only logical partitions (boot files) have a name."
+msgstr ""
+
+#: libparted/labels/dvh.c:812
+msgid "Too many primary partitions"
+msgstr ""
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "%s în timpul scrierii pe %s"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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:648
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+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:698
+#, 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:827
+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:862
+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:870
+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/mac.c:181
+#, 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:226
+msgid "Partition map has no partition map entry!"
+msgstr "Harta de partiþii nu are nici o intrare!"
+
+#: libparted/labels/mac.c:273
+#, 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:532
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Partiþia %d are o semnãturã invalidã %x."
+
+#: libparted/labels/mac.c:550
+#, 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:580
+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:597
+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:611
+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:622
+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:675
+#, 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:688
+#, 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:736
+msgid "No valid partition map found."
+msgstr "Nu a fost gãsitã nici o hartã de partiþie validã."
+
+#: libparted/labels/mac.c:795
+#, 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:822
+msgid "Weird! There are 2 partitions map entries!"
+msgstr "Ciudat! Existã 2 intrãri în harta partiþiei"
+
+#: libparted/labels/mac.c:1347
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+
+#: libparted/labels/mac.c:1443
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr ""
+
+#: libparted/labels/pc98.c:354
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Tabela de partiþii invalidã pe %s."
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries. This is still "
+"unsupported."
+msgstr ""
+
+#: libparted/labels/pc98.c:791
+msgid "Can't add another partition."
+msgstr ""
+
+#: libparted/labels/rdb.c:162
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:497
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:600
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:697
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:740
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:1069
+msgid "Unable to allocate a partition number."
+msgstr "Nu pot aloca un numãr de partiþie."
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr ""
+
+#: libparted/labels/sun.c:266
+#, 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:288
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr ""
+
+#: libparted/labels/sun.c:442
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:737
+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:752
+msgid "Sun disk label is full."
+msgstr ""
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr ""
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr ""
+
+#: libparted/unit.c:527
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, 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:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:72
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s în timpul scrierii pe %s"
+
+#: libparted/fs/amiga/amiga.c:278
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:289
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:318
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr ""
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr ""
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+msgid "File system full!"
+msgstr ""
+
+#: libparted/fs/ext2/ext2.c:686
+msgid "Invalid superblock. Are you sure this is an ext2 file system?"
+msgstr ""
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+msgid "File system has errors! You should run e2fsck."
+msgstr ""
+
+#: libparted/fs/ext2/ext2.c:711
+msgid ""
+"File system was not cleanly unmounted! You should run e2fsck. Modifying an "
+"unclean file system could cause severe corruption."
+msgstr ""
+
+#: libparted/fs/ext2/ext2.c:731
+msgid "File system has an incompatible feature enabled."
+msgstr ""
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr ""
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+msgid ""
+"Found an inode with a incorrect link count. Better go run e2fsck first!"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_resize.c:223
+msgid "File system is too full to remove a group!"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_resize.c:232
+msgid "File system has too many allocated inodes to remove a group!"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, c-format
+msgid "Your file system is too full to resize it to %i blocks. Sorry."
+msgstr ""
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, c-format
+msgid ""
+"Your file system has too many occupied inodes to resize it to %i blocks. "
+"Sorry."
+msgstr ""
+
+#: libparted/fs/ext2/ext2_resize.c:666
+msgid "File system was not cleanly unmounted! You should run e2fsck."
+msgstr ""
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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 ""
+
+#: libparted/fs/ext2/ext2_resize.c:691
+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 ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+msgid "Cross-linked blocks found! Better go run e2fsck first!"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, c-format
+msgid "Block %i has no reference? Weird."
+msgstr ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr ""
+
+#: libparted/fs/ext2/interface.c:186
+msgid ""
+"The ext2 file system passed a basic check. For a more comprehensive check, "
+"use the e2fsck program."
+msgstr ""
+
+#: libparted/fs/ext2/interface.c:203
+msgid "Sorry, can't move the start of ext2 partitions yet!"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr ""
+
+#: libparted/fs/fat/calc.c:135
+#, c-format
+msgid ""
+"You need %s of free disk space to shrink this partition to this size. "
+"Currently, only %s is free."
+msgstr ""
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+msgid ""
+"Cluster start delta = %d, which is not a multiple of the cluster size %d."
+msgstr ""
+
+#: libparted/fs/fat/fat.c:308
+#, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr "Partiþie prea mare/micã pentru un sistem de fiºiere %s."
+
+#: libparted/fs/fat/fat.c:474
+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 ""
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr ""
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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 ""
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+msgid ""
+"File system is reporting the free space as %d clusters, not %d clusters."
+msgstr ""
+
+#: libparted/fs/fat/fat.c:874
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes. FAT "
+"support will be disabled."
+msgstr ""
+
+#: libparted/fs/fat/resize.c:159
+msgid ""
+"There's not enough room in the root directory for all of the files. Either "
+"cancel, or ignore to lose the files."
+msgstr ""
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr ""
+
+#: libparted/fs/fat/resize.c:489
+msgid "If you leave your file system as FAT16, then you will have no problems."
+msgstr ""
+
+#: libparted/fs/fat/resize.c:492
+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 ""
+
+#: libparted/fs/fat/resize.c:500
+msgid ""
+"If you leave your file system as FAT32, then you will not introduce any new "
+"problems."
+msgstr ""
+
+#: libparted/fs/fat/resize.c:504
+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 ""
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr ""
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr ""
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr ""
+
+#: libparted/fs/fat/resize.c:551
+msgid ""
+"The file system can only be resized to this size by converting to FAT16."
+msgstr ""
+
+#: libparted/fs/fat/resize.c:567
+msgid ""
+"The file system can only be resized to this size by converting to FAT32."
+msgstr ""
+
+#: libparted/fs/fat/resize.c:580
+msgid ""
+"GNU Parted cannot resize this partition to this size. We're working on it!"
+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:139
+#, 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:164
+#, 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:213
+msgid "FAT boot sector says logical sector size is 0. This is weird. "
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:219
+msgid "FAT boot sector says there are no FAT tables. This is weird. "
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:225
+msgid "FAT boot sector says clusters are 0 sectors. This is weird. "
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:235
+msgid "File system is FAT12, which is unsupported."
+msgstr ""
+
+#: libparted/fs/fat/bootsector.c:411
+#, 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/fat/count.c:152
+#, c-format
+msgid "Bad directory entry for %s: first cluster is the end of file marker."
+msgstr ""
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+msgid ""
+"Bad FAT: unterminated chain for %s. You should run dosfsck or scandisk."
+msgstr ""
+
+#: libparted/fs/fat/count.c:174
+#, c-format
+msgid ""
+"Bad FAT: cluster %d outside file system in chain for %s. You should run "
+"dosfsck or scandisk."
+msgstr ""
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+msgid ""
+"Bad FAT: cluster %d is cross-linked for %s. You should run dosfsck or "
+"scandisk."
+msgstr ""
+
+#: libparted/fs/fat/count.c:203
+#, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr ""
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+msgid ""
+"The file %s is marked as a system file. This means moving it could cause "
+"some programs to stop working."
+msgstr ""
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+msgid ""
+"FAT %d media %x doesn't match the boot sector's media %x. You should "
+"probably run scandisk."
+msgstr ""
+
+#: libparted/fs/fat/table.c:269
+#, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr ""
+
+#: libparted/fs/fat/table.c:301
+#, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr ""
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr ""
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr ""
+
+#: libparted/fs/linux_swap/linux_swap.c:318
+#, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr ""
+
+#: libparted/fs/linux_swap/linux_swap.c:358
+#, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr ""
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr ""
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr ""
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr ""
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+msgid "Could not update the extent cache for HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+msgid "Trying to write HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+msgid "Could not update the extent cache for HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+msgid "Trying to write HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:320
+msgid "writing HFS Master Directory Block"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:720
+msgid "Error while writing the allocation file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:904
+msgid ""
+"It seems there is an error in the HFS wrapper: the bad blocks file doesn't "
+"contain the embedded HFS+ volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:998
+msgid "shrinking HFS wrapper"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+msgid ""
+"This is not a real %s check. This is going to extract special low level "
+"files for debugging purposes."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+msgid ""
+"Invalid size of a transaction block while replaying the journal (%i bytes)."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:260
+msgid ""
+"Journal stored outside of the volume are not supported. Try to desactivate "
+"the journal and run Parted again."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:271
+msgid "Journal offset or size is not multiple of the sector size."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:302
+msgid "Journal size mismatch between journal info block and journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:314
+msgid "Some header fields are not multiple of the sector size."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:323
+msgid ""
+"The sector size stored in the journal is not 512 bytes. Parted only "
+"supports 512 bytes length sectors."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:353
+msgid ""
+"The journal is not empty. Parted must replay the transactions before "
+"opening the file system. This will modify the file system."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:381
+msgid ""
+"The volume header or the master directory block has changed while replaying "
+"the journal. You should restart Parted."
+msgstr ""
+
+#: libparted/fs/hfs/probe.c:51
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to %"
+"d bytes."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+msgid ""
+"A reference to an extent comes from a place it should not. You should check "
+"the file system!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:475
+msgid "This HFS volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+msgid ""
+"The extents overflow file should not contain its own extents! You should "
+"check the file system."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+msgid "Could not cache the file system in memory."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:619
+msgid "This HFS+ volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr ""
+
+#: parted/parted.c:95
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr ""
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr ""
+
+#: parted/parted.c:111
+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:114
+msgid "LABEL-TYPE is one of: "
+msgstr ""
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr ""
+
+#: parted/parted.c:116
+msgid "UNIT is one of: "
+msgstr ""
+
+#: parted/parted.c:117
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr ""
+
+#: parted/parted.c:119
+msgid "FS-TYPE is one of: "
+msgstr ""
+
+#: parted/parted.c:120
+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:123
+msgid "STATE is one of: on, off\n"
+msgstr ""
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr ""
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr ""
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr ""
+
+#: parted/parted.c:130
+#, 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:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr ""
+
+#: parted/parted.c:195
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:211
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr ""
+
+#: parted/parted.c:223
+msgid ""
+"The existing file system will be destroyed and all data on the partition "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+msgid "Partition number?"
+msgstr ""
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr ""
+
+#: parted/parted.c:504
+msgid "Source partition number?"
+msgstr ""
+
+#: parted/parted.c:509
+msgid "Can't copy an extended partition."
+msgstr "Nu puteþi copia o partiþie extinsã."
+
+#: parted/parted.c:515
+msgid "Destination partition number?"
+msgstr "Numãrul partiþiei destinaþie?"
+
+#: parted/parted.c:615
+msgid "New disk label type?"
+msgstr "Tip de etichetã pentru discul nou?"
+
+#: parted/parted.c:656
+msgid "File system?"
+msgstr "Sistem de fiºiere?"
+
+#: parted/parted.c:707 parted/parted.c:878
+msgid "Partition type?"
+msgstr ""
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+msgid "Partition name?"
+msgstr ""
+
+#: parted/parted.c:722 parted/parted.c:895
+msgid "File system type?"
+msgstr ""
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr ""
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr ""
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+
+#: parted/parted.c:890
+msgid "An extended partition cannot hold a file system. Did you want mkpart?"
+msgstr ""
+
+#: parted/parted.c:1050
+msgid "Can't move an extended partition."
+msgstr "Nu puteþi muta o partiþie extinsã."
+
+#: parted/parted.c:1079
+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?"
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr ""
+
+#: parted/parted.c:1228
+#, c-format
+msgid "Flags: %s\n"
+msgstr ""
+
+#: parted/parted.c:1229
+#, c-format
+msgid "File System: %s\n"
+msgstr ""
+
+#: parted/parted.c:1230
+msgid "Size: "
+msgstr ""
+
+#: parted/parted.c:1235
+msgid "Minimum size: "
+msgstr ""
+
+#: parted/parted.c:1238
+msgid "Maximum size: "
+msgstr ""
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:1364
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr ""
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:1383
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d. Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:1392
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "Tabela de partiþii invalidã pe %s."
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr "Numãr"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Start"
+msgstr "Start"
+
+#: parted/parted.c:1407 parted/parted.c:1410
+msgid "End"
+msgstr "Sfârºit"
+
+#: parted/parted.c:1410
+msgid "Size"
+msgstr "Dimensiune"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr "Tip"
+
+#: parted/parted.c:1416
+msgid "File system"
+msgstr "Sistem de fiºiere"
+
+#: parted/parted.c:1419
+msgid "Name"
+msgstr "Nume"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr ""
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1624
+#, 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:1663
+msgid "searching for file systems"
+msgstr ""
+
+#: parted/parted.c:1877
+msgid "New device?"
+msgstr ""
+
+#: parted/parted.c:1902
+msgid "Flag to Invert?"
+msgstr ""
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr ""
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr ""
+
+#: parted/parted.c:2096
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr ""
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "cp"
+
+#: parted/parted.c:2105
+msgid ""
+"cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another "
+"partition"
+msgstr ""
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:2114
+#, 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:2120
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:2120
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:2123
+#, 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:2129
+msgid "mkfs"
+msgstr "mkfs"
+
+#: parted/parted.c:2132
+#, fuzzy
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+"mkfs NUMÃR TIP-SF creazã un sistem de fiºiere TIP-SF pe partiþia NUMÃR"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:2141
+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:2147
+#, 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:2152
+msgid "mkpartfs"
+msgstr "mkpartfs"
+
+#: parted/parted.c:2155
+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"
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr "move"
+
+#: parted/parted.c:2164
+#, fuzzy
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "move NUMÃR START SFÂRªIT mutã partiþia NUMÃR"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:2172
+#, 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:2177
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"print [NUMÃR] afiºeazã tabela de partiþii, sau o partiþie"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:2199
+#, fuzzy
+msgid "quit exit program"
+msgstr "quit ieºire din program"
+
+#: parted/parted.c:2204
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:2207
+#, 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:2213
+msgid "resize"
+msgstr "resize"
+
+#: parted/parted.c:2216
+#, 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"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:2227
+#, fuzzy
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "rm NUMÃR ºterge partiþia NUMÃR"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:2235
+#, fuzzy
+msgid "select DEVICE choose the device to edit"
+msgstr "select UNITATE alege unitatea de editat"
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:2243
+#, 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:2249
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:2252
+#, 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:2258
+msgid "unit"
+msgstr "unitate"
+
+#: parted/parted.c:2261
+#, fuzzy
+msgid "unit UNIT set the default unit to UNIT"
+msgstr "quit UNITATE seteazã unitatea implicitã ca UNITATE"
+
+#: parted/parted.c:2266
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:2269
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:2273
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "Nu a fost gãsitã nici o unitate"
+
+#: parted/parted.c:2412
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:2450
+#, 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:160
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:163
+#, 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:168
+#, 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:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:372
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:377
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:420
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:523
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:1024
+msgid "Expecting a partition number."
+msgstr "Aºtept un numãr de partiþie."
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "Partiþia nu existã."
+
+#: parted/ui.c:1053
+msgid "Expecting a file system type."
+msgstr "Aºtept un tip de sistem de fiºiere."
+
+#: parted/ui.c:1060
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Tip de sistem de fiºiere necunoscut \"%s\"."
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr "Aºtept un tip de etichetã de disc."
+
+#: parted/ui.c:1178
+msgid "Can't create any more partitions."
+msgstr "Nu mai pot crea nici o partiþie"
+
+#: parted/ui.c:1188
+msgid "Expecting a partition type."
+msgstr "Aºtept un tip de partiþie."
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr "pornit"
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr "oprit"
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "OPÞIUNI:"
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "COMMENZI:"
+
+#: parted/ui.c:1445
+#, c-format
+msgid "Using %s\n"
+msgstr "Folosesc %s\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#, 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 ""
+#~ "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"
+
+#~ 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 ""
+#~ "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/parted-1.8.7/po/ru.gmo b/parted-1.8.7/po/ru.gmo
new file mode 100644
index 0000000..feb49a3
--- /dev/null
+++ b/parted-1.8.7/po/ru.gmo
Binary files differ
diff --git a/parted-1.8.7/po/ru.po b/parted-1.8.7/po/ru.po
new file mode 100644
index 0000000..b15d5d2
--- /dev/null
+++ b/parted-1.8.7/po/ru.po
@@ -0,0 +1,3330 @@
+# ðÅÒÅ×ÏÄ ÓÏÏÂÝÅÎÉÊ parted.
+# Copyright (C) 1999 Free Software Foundation, Inc.
+# Dmitry S. Sivachenko <dima@Chg.RU>, 1999.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 1.2.1\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2007-05-09 17:02-0400\n"
+"PO-Revision-Date: 2000-06-16 22:52+04:00\n"
+"Last-Translator: Dmitry S. Sivachenko <dima@Chg.RU>\n"
+"Language-Team: Russian <ru@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=koi8-r\n"
+"Content-Transfer-Encoding: 8-bit\n"
+
+#: lib/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ."
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr ""
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, c-format
+msgid "Unable to open %s read-write (%s). %s has been opened read-only."
+msgstr ""
+
+#: libparted/arch/beos.c:411 libparted/arch/linux.c:1431
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s ×Ï ×ÒÅÍÑ ÐÏÚÉÃÉÏÎÉÒÏ×ÁÎÉÑ ÄÌÑ ÞÔÅÎÉÑ ÎÁ %s"
+
+#: libparted/arch/beos.c:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s ×Ï ×ÒÅÍÑ ÞÔÅÎÉÑ ÎÁ %s"
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, fuzzy, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr ""
+"îÅ×ÏÚÍÏÖÎÏ ÄÏÂÁ×ÉÔØ ÌÏÇÉÞÅÓËÉÊ ÒÁÚÄÅÌ ÎÁ %s, ÐÏÔÏÍÕ ÞÔÏ ÎÅÔ ÒÁÓÛÉÒÅÎÎÏÇÏ "
+"ÒÁÚÄÅÌÁ."
+
+#: libparted/arch/beos.c:496 libparted/arch/linux.c:1570
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s ×Ï ×ÒÅÍÑ ÐÏÚÉÃÉÏÎÉÒÏ×ÁÎÉÑ ÄÌÑ ÚÁÐÉÓÉ ÎÁ %s"
+
+#: libparted/arch/beos.c:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s ×Ï ×ÒÅÍÑ ÚÁÐÉÓÉ ÎÁ %s"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÐÌÏÈÉÈ ÓÔÒÁÎÉÃ."
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr ""
+
+#: libparted/arch/gnu.c:114
+msgid "Unable to probe store."
+msgstr ""
+
+#: libparted/arch/gnu.c:352
+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:369
+#, 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). üÔÏ ÚÎÁÞÉÔ, ÞÔÏ "
+"ÓÄÅÌÁÎÎÙÅ ×ÁÍÉ ÉÚÍÅÎÅÎÉÑ ÎÅÄÏÓÔÕÐÎÙ ÄÌÑ Linux. ÷Ù ÄÏÌÖÎÙ ÐÅÒÅÚÁÇÒÕÚÉÔØ ×ÁÛ "
+"ËÏÍÐØÀÔÅÒ ÄÏ ÔÏÇÏ, ËÁË ÞÔÏ-ÌÉÂÏ ÄÅÌÁÔØ Ó %s."
+
+#: libparted/arch/gnu.c:380 parted/parted.c:2443
+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:772
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr ""
+
+#: libparted/arch/linux.c:408
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "îÅ ÕÄÁÅÔÓÑ ÐÏÌÕÞÉÔØ ÓÔÁÔÕÓ ÕÓÔÒÏÊÓÔ×Á %s - %s."
+
+#: libparted/arch/linux.c:523
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:539
+#, c-format
+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 ""
+
+#: libparted/arch/linux.c:579
+#, fuzzy, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "îÅ ÕÄÁÅÔÓÑ ÏÐÒÅÄÅÌÉÔØ ÒÁÚÍÅÒ %s (%s)"
+
+#: libparted/arch/linux.c:668
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "îÅ ÕÄÁÅÔÓÑ ÐÏÌÕÞÉÔØ ÉÄÅÎÔÉÆÉËÁÔÏÒ ÕÓÔÒÏÊÓÔ×Á %s - %s"
+
+#: libparted/arch/linux.c:677
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:698
+#, 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:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "ïÛÉÂËÁ ÉÎÉÃÉÁÌÉÚÁÃÉÉ SCSI-ÕÓÔÒÏÊÓÔ×Á %s - %s"
+
+#: libparted/arch/linux.c:928
+#, c-format
+msgid ""
+"The device %s has zero length, and can't possibly store a file system or "
+"partition table. Perhaps you selected the wrong device?"
+msgstr ""
+
+#: libparted/arch/linux.c:1032
+#, 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:1110
+msgid "DAC960 RAID controller"
+msgstr ""
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr ""
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr ""
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr ""
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr ""
+
+#: libparted/arch/linux.c:1162
+#, fuzzy
+msgid "Unknown"
+msgstr "ÎÅÉÚ×ÅÓÔÎÁÑ"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "ped_device_new() îÅÐÏÄÄÅÒÖÉ×ÁÅÍÙÊ ÔÉÐ ÕÓÔÒÏÊÓÔ×Á"
+
+#: libparted/arch/linux.c:2083
+#, 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:2262
+#, 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/arch/linux.c:2368
+#, fuzzy, c-format
+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."
+
+#: libparted/cs/geom.c:162
+#, fuzzy
+msgid "Can't have the end before the start!"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÐÅÒÅÍÅÓÔÉÔØ ËÏÎÅà ÒÁÚÄÅÌÁ ÚÁ ÎÁÞÁÌÏ."
+
+#: libparted/cs/geom.c:169
+#, fuzzy
+msgid "Can't have a partition outside the disk!"
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÒÁÚÄÅÌ ×ÎÅ ÕÓÔÒÏÊÓÔ×Á."
+
+#: libparted/cs/geom.c:366
+#, fuzzy, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr "ðÏÐÙÔËÁ ÚÁÐÉÓÉ ÓÏËÔÏÒÏ× %ld-%ld ÚÁ ÐÒÅÄÅÌÙ ÒÁÚÄÅÌÁ ÎÁ %s"
+
+#: libparted/cs/geom.c:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr ""
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "îÅ ÕÄÁÅÔÓÑ ÏÔËÒÙÔØ %s - ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ ÍÅÔËÁ ÄÉÓËÁ."
+
+#: libparted/disk.c:471
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s. Perhaps it was compiled "
+"read-only."
+msgstr ""
+
+#: libparted/disk.c:598
+#, fuzzy, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "òÁÚÄÅÌ ÓÌÉÛËÏÍ ÍÁÌ ÄÌÑ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ FAT"
+
+#: libparted/disk.c:1075
+#, fuzzy, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÓËÏÐÉÒÏ×ÁÔØ ÒÁÓÛÉÒÅÎÎÙÊ ÒÁÚÄÅÌ."
+
+#: libparted/disk.c:1634
+#, fuzzy, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÓËÏÐÉÒÏ×ÁÔØ ÒÁÓÛÉÒÅÎÎÙÊ ÒÁÚÄÅÌ."
+
+#: libparted/disk.c:1647
+#, fuzzy
+msgid "Too many primary partitions."
+msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÐÌÏÈÉÈ ÓÔÒÁÎÉÃ."
+
+#: libparted/disk.c:1656
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"îÅ×ÏÚÍÏÖÎÏ ÄÏÂÁ×ÉÔØ ÌÏÇÉÞÅÓËÉÊ ÒÁÚÄÅÌ ÎÁ %s, ÐÏÔÏÍÕ ÞÔÏ ÎÅÔ ÒÁÓÛÉÒÅÎÎÏÇÏ "
+"ÒÁÚÄÅÌÁ."
+
+#: libparted/disk.c:1680
+#, fuzzy, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÉÍÅÔØ ÂÏÌØÛÅ ÏÄÎÏÇÏ ÒÁÓÛÉÒÅÎÎÏÇÏ ÒÁÚÄÅÌÁ ÎÁ %s"
+
+#: libparted/disk.c:1690
+#, fuzzy
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "îÅ×ÏÚÍÏÖÎÏ Õ×ÅÌÉÞÉÔØ ÌÏÇÉÞÅÓËÉÊ ÒÁÚÄÅÌ ×ÎÅ ÒÁÓÛÉÒÅÎÎÏÇÏ ÒÁÚÄÅÌÁ."
+
+#: libparted/disk.c:1715
+#, fuzzy, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÄÏÂÁ×ÉÔØ ÌÏÇÉÞÅÓËÉÊ ÒÁÚÄÅÌ ×ÎÅ ÒÁÓÛÉÒÅÎÎÏÇÏ ÒÁÚÄÅÌÁ ÎÁ %s."
+
+#: libparted/disk.c:1725 libparted/disk.c:1779 libparted/disk.c:1945
+#, fuzzy
+msgid "Can't have overlapping partitions."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÓËÏÐÉÒÏ×ÁÔØ ÒÁÓÛÉÒÅÎÎÙÊ ÒÁÚÄÅÌ."
+
+#: libparted/disk.c:1733
+#, fuzzy
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÄÏÂÁ×ÉÔØ ÏÓÎÏ×ÎÏÊ ÒÁÚÄÅÌ ×ÎÕÔÒØ ÒÁÓÛÉÒÅÎÎÏÇÏ."
+
+#: libparted/disk.c:2140
+msgid "metadata"
+msgstr "ÍÅÔÁÄÁÎÎÙÅ"
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "Ó×ÏÂÏÄÎÏ"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "ÒÁÓÛÉÒÅÎÎÙÊ"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "ÌÏÇÉÞÅÓËÉÊ"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "ÏÓÎÏ×ÎÏÊ"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "boot"
+
+#: libparted/disk.c:2166
+#, fuzzy
+msgid "root"
+msgstr "boot"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr ""
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "ÓËÒÙÔÙÊ"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr ""
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr ""
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr ""
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr ""
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2190
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr ""
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "éÎÆÏÒÍÁÃÉÑ"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "ïÛÉÂËÁ"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "æÁÔÁÌØÎÁÑ ÏÛÉÂËÁ"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "ïÛÉÂËÁ"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr "îÅÔ ÒÅÁÌÉÚÁÃÉÉ"
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr "éÓÐÒÁ×ÉÔØ"
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "äÁ"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "îÅÔ"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "ðÏ×ÔÏÒÉÔØ"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "éÇÎÏÒÉÒÏ×ÁÔØ"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "ïÔÍÅÎÉÔØ"
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org containing at least the version (%s) and the following "
+"message: "
+msgstr ""
+"÷ GNU parted ÂÙÌÁ ÏÂÎÁÒÕÖÅÎÁ ÏÛÉÂËÁ. ðÏÖÁÌÕÊÓÔÁ, ÐÏÛÌÉÔÅ ÐÏ ÁÄÒÅÓÕ bug-"
+"parted@gnu.org ÓÏÏÂÝÅÎÉÅ Ï ÏÛÉÂËÅ, ÓÏÄÅÒÖÁÝÅÅ ×ÅÒÓÉÀ (%s) É ÓÌÅÄÕÀÝÅÅ "
+"ÓÏÏÂÝÅÎÉÅ:"
+
+#: libparted/filesys.c:384
+msgid "Could not detect file system."
+msgstr "îÅ ÕÄÁÅÔÓÑ ÏÐÒÅÄÅÌÉÔØ ÆÁÊÌÏ×ÕÀ ÓÉÓÔÅÍÕ."
+
+#: libparted/filesys.c:395
+msgid "The file system is bigger than its volume!"
+msgstr ""
+
+#: libparted/filesys.c:403
+#, fuzzy, c-format
+msgid "Support for opening %s file systems is not implemented yet."
+msgstr "ðÏÄÄÅÒÖËÁ ÄÌÑ ËÏÐÉÒÏ×ÁÎÉÑ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ ÄÌÑ %s ÐÏËÁ ÎÅ ÒÅÁÌÉÚÏ×ÁÎÁ."
+
+#: libparted/filesys.c:445
+#, fuzzy, c-format
+msgid "Support for creating %s file systems is not implemented yet."
+msgstr "ðÏÄÄÅÒÖËÁ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÑ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ ÄÌÑ %s ÐÏËÁ ÎÅ ÒÅÁÌÉÚÏ×ÁÎÁ."
+
+#: libparted/filesys.c:505
+#, fuzzy, c-format
+msgid "Support for checking %s file systems is not implemented yet."
+msgstr "ðÏÄÄÅÒÖËÁ ÄÌÑ ÐÒÏ×ÅÒËÉ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ ÄÌÑ %s ÐÏËÁ ÎÅ ÒÅÁÌÉÚÏ×ÁÎÁ."
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr ""
+
+#: libparted/filesys.c:582
+#, fuzzy
+msgid "growing file system"
+msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ."
+
+#: libparted/filesys.c:622
+#, fuzzy
+msgid "Can't copy onto an overlapping partition."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÓËÏÐÉÒÏ×ÁÔØ ÒÁÓÛÉÒÅÎÎÙÊ ÒÁÚÄÅÌ."
+
+#: libparted/filesys.c:644
+#, c-format
+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 ""
+
+#: libparted/filesys.c:658
+#, fuzzy, c-format
+msgid "Support for copying %s file systems is not implemented yet."
+msgstr "ðÏÄÄÅÒÖËÁ ÄÌÑ ËÏÐÉÒÏ×ÁÎÉÑ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ ÄÌÑ %s ÐÏËÁ ÎÅ ÒÅÁÌÉÚÏ×ÁÎÁ."
+
+#: libparted/filesys.c:696
+#, fuzzy, c-format
+msgid "Support for resizing %s file systems is not implemented yet."
+msgstr ""
+"ðÏÄÄÅÒÖËÁ ÄÌÑ ÉÚÍÅÎÅÎÉÑ ÒÁÚÍÅÒÁ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ ÄÌÑ %s ÐÏËÁ ÎÅ ÒÅÁÌÉÚÏ×ÁÎÁ."
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, fuzzy
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr "æÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÉÍÅÅÔ ÎÅ×ÅÒÎÕÀ ÄÌÑ FAT ÓÉÇÎÁÔÕÒÕ."
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "check"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, fuzzy
+msgid ""
+"The reiserfs file system passed a basic check. For a more comprehensive "
+"check, run reiserfsck --check."
+msgstr ""
+"æÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ext2 ÐÒÏÛÌÁ ÏÓÎÏ×ÎÕÀ ÐÒÏ×ÅÒËÕ. äÌÑ ÂÏÌÅÅ ÏÂÓÔÏÑÔÅÌØÎÏÊ "
+"ÐÒÏ×ÅÒËÉ, ÉÓÐÏÌØÚÕÊÔÅ ÐÒÏÇÒÁÍÍÕ e2fsck."
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, fuzzy
+msgid "Sorry, can't move the start of reiserfs partitions yet."
+msgstr "ë ÓÏÖÁÌÅÎÉÀ, ÐÅÒÅÍÅÝÅÎÉÅ ÎÁÞÁÌÁ ÒÁÚÄÅÌÏ× ext2 ÐÏËÁ ÎÅ×ÏÚÍÏÖÎÏ!"
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+#, fuzzy
+msgid "shrinking"
+msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ"
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "ðÒÅÄÕÐÒÅÖÄÅÎÉÅ"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, c-format
+msgid "Device is too small for %lu blocks."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "ðÏÄÄÅÒÖËÁ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÑ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ ÄÌÑ %s ÐÏËÁ ÎÅ ÒÅÁÌÉÚÏ×ÁÎÁ."
+
+#: libparted/labels/aix.c:148
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "ðÏÄÄÅÒÖËÁ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÑ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ ÄÌÑ %s ÐÏËÁ ÎÅ ÒÅÁÌÉÚÏ×ÁÎÁ."
+
+#: libparted/labels/aix.c:161
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr "ðÏÄÄÅÒÖËÁ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÑ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ ÄÌÑ %s ÐÏËÁ ÎÅ ÒÅÁÌÉÚÏ×ÁÎÁ."
+
+#: libparted/labels/aix.c:171
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr "ðÏÄÄÅÒÖËÁ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÑ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ ÄÌÑ %s ÐÏËÁ ÎÅ ÒÅÁÌÉÚÏ×ÁÎÁ."
+
+#: libparted/labels/aix.c:189
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr "ðÏÄÄÅÒÖËÁ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÑ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ ÄÌÑ %s ÐÏËÁ ÎÅ ÒÅÁÌÉÚÏ×ÁÎÁ."
+
+#: libparted/labels/aix.c:199
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr "ðÏÄÄÅÒÖËÁ ÆÏÒÍÁÔÉÒÏ×ÁÎÉÑ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ ÄÌÑ %s ÐÏËÁ ÎÅ ÒÅÁÌÉÚÏ×ÁÎÁ."
+
+#: libparted/labels/bsd.c:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+msgid "Unable to satisfy all constraints on the partition."
+msgstr ""
+
+#: libparted/labels/bsd.c:526
+#, fuzzy
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "îÅ ÕÄÁÅÔÓÑ ÏÔËÒÙÔØ %s - ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ ÍÅÔËÁ ÄÉÓËÁ."
+
+#: libparted/labels/dasd.c:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "îÅ ÕÄÁÅÔÓÑ ÏÐÒÅÄÅÌÉÔØ ÒÁÚÍÅÒ %s (%s)"
+
+#: libparted/labels/dasd.c:781
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "îÅ ÕÄÁÅÔÓÑ ÏÔËÒÙÔØ %s - ÎÅÒÁÓÐÏÚÎÁÎÎÁÑ ÍÅÔËÁ ÄÉÓËÁ."
+
+#: libparted/labels/dos.c:827
+#, fuzzy, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "îÅ×ÅÒÎÁÑ ÔÁÂÌÉÃÁ ÒÁÚÄÅÌÏ× ÎÁ %s - ÎÅÐÒÁ×ÉÌØÎÁÑ ÓÉÇÎÁÔÕÒÁ %x"
+
+#: libparted/labels/dos.c:855
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "îÅ×ÅÒÎÁÑ ÔÁÂÌÉÃÁ ÒÁÚÄÅÌÏ× - ÒÅËÕÒÓÉ×ÎÙÊ ÒÁÚÄÅÌ ÎÁ %s."
+
+#: libparted/labels/dos.c:1318
+#, fuzzy
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "òÁÚÄÅÌ ext2 ÎÅ ÍÏÖÅÔ ÂÙÔØ ÓËÒÙÔ."
+
+#: libparted/labels/dos.c:1958
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+#: libparted/labels/dvh.c:190
+#, fuzzy, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr ""
+"îÅ×ÏÚÍÏÖÎÏ ÉÚÍÅÎÉÔØ ÒÁÚÍÅÒ ÒÁÓÛÉÒÅÎÎÏÇÏ ÒÁÚÄÅÌÁ ÔÁË, ÞÔÏÂÙ ÉÓËÌÀÞÉÔØ "
+"ÌÏÇÉÞÅÓËÉÊ ÒÁÚÄÅÌ."
+
+#: libparted/labels/dvh.c:313
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+
+#: libparted/labels/dvh.c:616
+#, fuzzy
+msgid "Only primary partitions can be root partitions."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÄÏÂÁ×ÉÔØ ÏÓÎÏ×ÎÏÊ ÒÁÚÄÅÌ ×ÎÕÔÒØ ÒÁÓÛÉÒÅÎÎÏÇÏ."
+
+#: libparted/labels/dvh.c:630
+#, fuzzy
+msgid "Only primary partitions can be swap partitions."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÄÏÂÁ×ÉÔØ ÏÓÎÏ×ÎÏÊ ÒÁÚÄÅÌ ×ÎÕÔÒØ ÒÁÓÛÉÒÅÎÎÏÇÏ."
+
+#: libparted/labels/dvh.c:644
+msgid "Only logical partitions can be a boot file."
+msgstr ""
+
+#: libparted/labels/dvh.c:721
+msgid "Only logical partitions (boot files) have a name."
+msgstr ""
+
+#: libparted/labels/dvh.c:812
+#, fuzzy
+msgid "Too many primary partitions"
+msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÐÌÏÈÉÈ ÓÔÒÁÎÉÃ."
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "%s ×Ï ×ÒÅÍÑ ÚÁÐÉÓÉ ÎÁ %s"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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:648
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+msgstr ""
+
+#: libparted/labels/gpt.c:698
+#, 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:827
+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:862
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+
+#: libparted/labels/gpt.c:870
+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/mac.c:181
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr ""
+
+#: libparted/labels/mac.c:226
+msgid "Partition map has no partition map entry!"
+msgstr ""
+
+#: libparted/labels/mac.c:273
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr ""
+
+#: libparted/labels/mac.c:532
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr ""
+
+#: libparted/labels/mac.c:550
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr ""
+
+#: libparted/labels/mac.c:580
+#, fuzzy
+msgid "The data region doesn't start at the start of the partition."
+msgstr "îÏ×ÙÊ ÒÁÚÄÅÌ ÐÅÒÅËÒÙ×ÁÅÔÓÑ Ó ÄÒÕÇÉÍ ÒÁÚÄÅÌÏÍ."
+
+#: libparted/labels/mac.c:597
+#, fuzzy
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "îÏ×ÙÊ ÒÁÚÄÅÌ ÐÅÒÅËÒÙ×ÁÅÔÓÑ Ó ÄÒÕÇÉÍ ÒÁÚÄÅÌÏÍ."
+
+#: libparted/labels/mac.c:611
+#, fuzzy
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "îÏ×ÙÊ ÒÁÚÄÅÌ ÐÅÒÅËÒÙ×ÁÅÔÓÑ Ó ÄÒÕÇÉÍ ÒÁÚÄÅÌÏÍ."
+
+#: libparted/labels/mac.c:622
+#, fuzzy
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "îÏ×ÙÊ ÒÁÚÄÅÌ ÐÅÒÅËÒÙ×ÁÅÔÓÑ Ó ÄÒÕÇÉÍ ÒÁÚÄÅÌÏÍ."
+
+#: libparted/labels/mac.c:675
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+
+#: libparted/labels/mac.c:688
+#, 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:736
+msgid "No valid partition map found."
+msgstr ""
+
+#: libparted/labels/mac.c:795
+#, 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:822
+msgid "Weird! There are 2 partitions map entries!"
+msgstr ""
+
+#: libparted/labels/mac.c:1347
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+
+#: libparted/labels/mac.c:1443
+#, fuzzy
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr ""
+"îÅ ÕÄÁÅÔÓÑ ÄÏÂÁ×ÉÔØ ÅÝÅ ÏÄÉÎ ÏÓÎÏ×ÎÏÊ ÒÁÚÄÅÌ, ÓÕÝÅÓÔ×ÕÅÔ ÐÒÅÄÅÌ × 4 ÏÓÎÏ×ÎÙÈ "
+"ÒÁÚÄÅÌÁ."
+
+#: libparted/labels/pc98.c:354
+#, fuzzy, c-format
+msgid "Invalid partition table on %s."
+msgstr "îÅ×ÅÒÎÁÑ ÔÁÂÌÉÃÁ ÒÁÚÄÅÌÏ× - ÒÅËÕÒÓÉ×ÎÙÊ ÒÁÚÄÅÌ ÎÁ %s."
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries. This is still "
+"unsupported."
+msgstr ""
+
+#: libparted/labels/pc98.c:791
+#, fuzzy
+msgid "Can't add another partition."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÓËÏÐÉÒÏ×ÁÔØ ÒÁÓÛÉÒÅÎÎÙÊ ÒÁÚÄÅÌ."
+
+#: libparted/labels/rdb.c:162
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:497
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:581
+#, fuzzy, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s ÎÅ Ñ×ÌÑÅÔÓÑ ÂÌÏÞÎÙÍ ÕÓÔÒÏÊÓÔ×ÏÍ."
+
+#: libparted/labels/rdb.c:600
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:697
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:740
+#, fuzzy, c-format
+msgid "Failed to write partition block at %d."
+msgstr "îÅ ÕÄÁÅÔÓÑ ÏÐÒÅÄÅÌÉÔØ, Ñ×ÌÑÅÔÓÑ ÌÉ ÒÁÚÄÅÌ ÚÁÍÏÎÔÉÒÏ×ÁÎÎÙÍ."
+
+#: libparted/labels/rdb.c:1069
+#, fuzzy
+msgid "Unable to allocate a partition number."
+msgstr "îÅ ÕÄÁÅÔÓÑ ÏÐÒÅÄÅÌÉÔØ, Ñ×ÌÑÅÔÓÑ ÌÉ ÒÁÚÄÅÌ ÚÁÍÏÎÔÉÒÏ×ÁÎÎÙÍ."
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr ""
+
+#: libparted/labels/sun.c:266
+#, 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:288
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr ""
+
+#: libparted/labels/sun.c:442
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:737
+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:752
+msgid "Sun disk label is full."
+msgstr ""
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr "îÅ È×ÁÔÁÅÔ ÐÁÍÑÔÉ."
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, fuzzy, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÒÁÚÄÅÌ ×ÎÅ ÕÓÔÒÏÊÓÔ×Á."
+
+#: libparted/unit.c:527
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "îÅ ÕÄÁÅÔÓÑ ÏÐÒÅÄÅÌÉÔØ, Ñ×ÌÑÅÔÓÑ ÌÉ ÒÁÚÄÅÌ ÚÁÍÏÎÔÉÒÏ×ÁÎÎÙÍ."
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, fuzzy, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s ÎÅ Ñ×ÌÑÅÔÓÑ ÂÌÏÞÎÙÍ ÕÓÔÒÏÊÓÔ×ÏÍ."
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, fuzzy, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s ÎÅ Ñ×ÌÑÅÔÓÑ ÂÌÏÞÎÙÍ ÕÓÔÒÏÊÓÔ×ÏÍ."
+
+#: libparted/fs/amiga/amiga.c:72
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s ÎÅ Ñ×ÌÑÅÔÓÑ ÂÌÏÞÎÙÍ ÕÓÔÒÏÊÓÔ×ÏÍ."
+
+#: libparted/fs/amiga/amiga.c:278
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:289
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:318
+#, fuzzy, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "îÅ ÕÄÁÅÔÓÑ ÏÐÒÅÄÅÌÉÔØ, Ñ×ÌÑÅÔÓÑ ÌÉ ÒÁÚÄÅÌ ÚÁÍÏÎÔÉÒÏ×ÁÎÎÙÍ."
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr "ðÒÏÔÉ×ÏÒÅÞÉ×ÁÑ ÇÒÕÐÐÁ ÄÅÓËÒÉÐÔÏÒÏ×!"
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+#, fuzzy
+msgid "File system full!"
+msgstr "æÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÐÏÌÎÁ!"
+
+#: libparted/fs/ext2/ext2.c:686
+#, fuzzy
+msgid "Invalid superblock. Are you sure this is an ext2 file system?"
+msgstr "îÅ×ÅÒÎÙÊ ÓÕÐÅÒÂÌÏË. ÷Ù Õ×ÅÒÅÎÙ, ÞÔÏ ÜÔÏ ÆÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ext2?"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+#, fuzzy
+msgid "File system has errors! You should run e2fsck."
+msgstr "æÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÓÏÄÅÒÖÉÔ ÏÛÉÂËÉ! úÁÐÕÓÔÉÔÅ ÓÎÁÞÁÌÁ e2fsck!"
+
+#: libparted/fs/ext2/ext2.c:711
+msgid ""
+"File system was not cleanly unmounted! You should run e2fsck. Modifying an "
+"unclean file system could cause severe corruption."
+msgstr ""
+
+#: libparted/fs/ext2/ext2.c:731
+#, fuzzy
+msgid "File system has an incompatible feature enabled."
+msgstr "æÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÉÍÅÅÔ ×ËÌÀÞÅÎÎÏÅ ÎÅÓÏ×ÍÅÓÔÉÍÏÅ Ó×ÏÊÓÔ×Ï"
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr "ïÛÉÂËÁ ÒÁÚÍÅÝÅÎÉÑ ÂÕÆÅÒÁ ËÜÛÁ."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+#, fuzzy
+msgid ""
+"Found an inode with a incorrect link count. Better go run e2fsck first!"
+msgstr ""
+"îÁÊÄÅÎÁ inode Ó ÎÅÐÒÁ×ÉÌØÎÙÍ ÞÉÓÌÏÍ ÓÓÙÌÏË. ìÕÞÛÅ ÚÁÐÕÓÔÉÔÅ ÓÎÁÞÁÌÁ e2fsck."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr "îÅÄÏÓÔÁÔÏÞÎÏ Ó×ÏÂÏÄÎÙÈ inode!"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+#, fuzzy
+msgid "File system is too full to remove a group!"
+msgstr "æÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÓÌÉÛËÏÍ ÚÁÐÏÌÎÅÎÁ, ÞÔÏÂÙ ÕÄÁÌÉÔØ ÇÒÕÐÐÕ!"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+#, fuzzy
+msgid "File system has too many allocated inodes to remove a group!"
+msgstr ""
+"æÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÉÍÅÅÔ ÓÌÉÛËÏÍ ÍÎÏÇÏ ×ÙÄÅÌÅÎÎÙÈ inode, ÞÔÏÂÙ ÕÄÁÌÉÔØ ÇÒÕÐÐÕ!"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, fuzzy, c-format
+msgid "Your file system is too full to resize it to %i blocks. Sorry."
+msgstr ""
+"ë ÓÏÖÁÌÅÎÉÀ, ÆÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÓÌÉÛËÏÍ ÚÁÐÏÌÎÅÎÁ, ÞÔÏÂÙ ÉÚÍÅÎÉÔØ ÅÅ ÒÁÚÍÅÒ ÄÏ "
+"%i ÂÌÏËÏ×."
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, fuzzy, c-format
+msgid ""
+"Your file system has too many occupied inodes to resize it to %i blocks. "
+"Sorry."
+msgstr ""
+"ë ÓÏÖÁÌÅÎÉÀ, ×ÁÛÁ ÆÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÉÍÅÅÔ ÓÌÉÛËÏÍ ÍÎÏÇÏ ÚÁÎÑÔÙÈ inode, ÞÔÏÂÙ "
+"ÉÚÍÅÎÉÔØ ÅÅ ÒÁÚÍÅÒ ÄÏ %i ÂÌÏËÏ×."
+
+#: libparted/fs/ext2/ext2_resize.c:666
+#, fuzzy
+msgid "File system was not cleanly unmounted! You should run e2fsck."
+msgstr ""
+"æÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÎÅ ÂÙÌÁ ÐÒÁ×ÉÌØÎÏ ÒÁÚÍÏÎÔÉÒÏ×ÁÎÁ! úÁÐÕÓÔÉÔÅ ÓÎÁÞÁÌÁ e2fsck!"
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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 ""
+
+#: libparted/fs/ext2/ext2_resize.c:691
+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 ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+#, fuzzy
+msgid "Cross-linked blocks found! Better go run e2fsck first!"
+msgstr ""
+"îÁÊÄÅÎÙ ÂÌÏËÉ Ó ÐÅÒÅËÒÅÓÔÎÙÍÉ ÓÓÙÌËÁÍÉ! ÌÕÞÛÅ ÓÎÁÞÁÌÁ ÚÁÐÕÓÔÉÔÅ e2fsck!"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, fuzzy, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "âÌÏË %i ÎÅ ÉÍÅÅÔ ÓÓÙÌËÉ? óÔÒÁÎÎÏ"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, fuzzy, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "âÌÏË %i ÎÅ ÄÏÌÖÅÎ ÂÙÔØ ÐÏÍÅÞÅÎÎÙÍ!"
+
+#: libparted/fs/ext2/interface.c:186
+#, fuzzy
+msgid ""
+"The ext2 file system passed a basic check. For a more comprehensive check, "
+"use the e2fsck program."
+msgstr ""
+"æÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ext2 ÐÒÏÛÌÁ ÏÓÎÏ×ÎÕÀ ÐÒÏ×ÅÒËÕ. äÌÑ ÂÏÌÅÅ ÏÂÓÔÏÑÔÅÌØÎÏÊ "
+"ÐÒÏ×ÅÒËÉ, ÉÓÐÏÌØÚÕÊÔÅ ÐÒÏÇÒÁÍÍÕ e2fsck."
+
+#: libparted/fs/ext2/interface.c:203
+msgid "Sorry, can't move the start of ext2 partitions yet!"
+msgstr "ë ÓÏÖÁÌÅÎÉÀ, ÐÅÒÅÍÅÝÅÎÉÅ ÎÁÞÁÌÁ ÒÁÚÄÅÌÏ× ext2 ÐÏËÁ ÎÅ×ÏÚÍÏÖÎÏ!"
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr "îÅ ÕÄÁÅÔÓÑ ÏÞÉÓÔÉÔØ ÂÕÆÅÒ ËÜÛÁ!"
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr ""
+
+#: libparted/fs/fat/calc.c:135
+#, fuzzy, c-format
+msgid ""
+"You need %s of free disk space to shrink this partition to this size. "
+"Currently, only %s is free."
+msgstr ""
+"÷ÁÍ ÔÒÅÂÕÅÔÓÑ %díâ Ó×ÏÂÏÄÎÏÇÏ ÐÒÏÓÔÒÁÎÓÔ×Á, ÞÔÏÂÙ ÕÍÅÎØÛÉÔØ ÄÁÎÎÙÊ ÒÁÚÄÅÌ ÄÏ "
+"ÔÁËÏÇÏ ÒÁÚÍÅÒÁ (Õ ×ÁÓ ÓÅÊÞÁÓ Ó×ÏÂÏÄÎÏ ÔÏÌØËÏ %díâ)"
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+msgid ""
+"Cluster start delta = %d, which is not a multiple of the cluster size %d."
+msgstr ""
+"ëÌÁÓÔÅÒ ÎÁÞÉÎÁÅÔÓÑ ÓÏ ÓÍÅÝÅÎÉÅÍ %d, ÞÔÏ ÎÅ Ñ×ÌÑÅÔÓÑ ÃÅÌÙÍ ÞÉÓÌÏÍ ËÌÁÓÔÅÒÏ× "
+"ÒÁÚÍÅÒÁ %d."
+
+#: libparted/fs/fat/fat.c:308
+#, fuzzy, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr "òÁÚÄÅÌ ÓÌÉÛËÏÍ ÍÁÌ ÄÌÑ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ FAT"
+
+#: libparted/fs/fat/fat.c:474
+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 ÄÌÑ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ, É ÚÁÔÅÍ "
+"×ÏÚ×ÒÁÝÁÊÔÅÓØ."
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr "äÌÑ ÜÔÏÇÏ ÔÉÐÁ FAT ÄÏÐÕÓÔÉÍÙÈ ËÏÎÆÉÇÕÒÁÃÉÊ ÎÅÔ."
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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)."
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+msgid ""
+"File system is reporting the free space as %d clusters, not %d clusters."
+msgstr ""
+"æÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÓÏÏÂÝÁÅÔ Ï Ó×ÏÂÏÄÎÏÍ ÐÒÏÓÔÒÁÎÓÔ×Å × %d ËÌÁÓÔÅÒÏ×, Á ÎÅ × %d "
+"ËÌÁÓÔÅÒÏ×."
+
+#: libparted/fs/fat/fat.c:874
+#, 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/resize.c:159
+#, 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 ""
+"äÌÑ ×ÓÅÈ ÆÁÊÌÏ× ÎÅ È×ÁÔÁÅÔ ÍÅÓÔÁ × ËÏÒÎÅ×ÏÍ ËÁÔÁÌÏÇÅ. ìÉÂÏ ÏÔÍÅÎÉÔÅ, ÌÉÂÏ "
+"ÉÇÎÏÒÉÒÕÊÔÅ ÄÌÑ ÐÏÔÅÒÉ ÆÁÊÌÏ×."
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr "ïÛÉÂËÁ ÚÁÐÉÓÉ × ËÏÒÎÅ×ÏÊ ËÁÔÁÌÏÇ."
+
+#: libparted/fs/fat/resize.c:489
+msgid "If you leave your file system as FAT16, then you will have no problems."
+msgstr ""
+
+#: libparted/fs/fat/resize.c:492
+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 ""
+
+#: libparted/fs/fat/resize.c:500
+msgid ""
+"If you leave your file system as FAT32, then you will not introduce any new "
+"problems."
+msgstr ""
+
+#: libparted/fs/fat/resize.c:504
+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 ""
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr ""
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr ""
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr ""
+
+#: libparted/fs/fat/resize.c:551
+msgid ""
+"The file system can only be resized to this size by converting to FAT16."
+msgstr ""
+
+#: libparted/fs/fat/resize.c:567
+msgid ""
+"The file system can only be resized to this size by converting to FAT32."
+msgstr ""
+
+#: libparted/fs/fat/resize.c:580
+#, fuzzy
+msgid ""
+"GNU Parted cannot resize this partition to this size. We're working on it!"
+msgstr ""
+"GNU Parted ÎÅ ÍÏÖÅÔ ÉÚÍÅÎÉÔØ ÒÁÚÍÅÒ ÒÁÚÄÅÌÁ ÄÏ ÜÔÏÊ ×ÅÌÉÞÉÎÙ. íÙ ÒÁÂÏÔÁÅÍ "
+"ÎÁÄ ÜÔÉÍ!"
+
+#: 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 "æÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÉÍÅÅÔ ÎÅ×ÅÒÎÕÀ ÄÌÑ FAT ÓÉÇÎÁÔÕÒÕ."
+
+#: libparted/fs/fat/bootsector.c:64
+#, fuzzy
+msgid "File system has an invalid sector size for a FAT file system."
+msgstr "æÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÉÍÅÅÔ ÎÅ×ÅÒÎÙÊ ÄÌÑ FAT ÒÁÚÍÅÒ ÓÅËÔÏÒÁ."
+
+#: libparted/fs/fat/bootsector.c:71
+#, fuzzy
+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 "æÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÉÍÅÅÔ ÎÅ×ÅÒÎÕÀ ÄÌÑ FAT ÓÉÇÎÁÔÕÒÕ."
+
+#: libparted/fs/fat/bootsector.c:139
+#, 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:164
+#, 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:213
+msgid "FAT boot sector says logical sector size is 0. This is weird. "
+msgstr ""
+"úÁÇÒÕÚÏÞÎÙÊ ÓÅËÔÏÒ FAT ÓÏÄÅÒÖÉÔ ÒÁÚÍÅÒ ÌÏÇÉÞÅÓËÏÇÏ ÓÅËÔÏÒÁ, ÒÁ×ÎÙÊ 0. üÔÏ "
+"ÓÔÒÁÎÎÏ. "
+
+#: libparted/fs/fat/bootsector.c:219
+msgid "FAT boot sector says there are no FAT tables. This is weird. "
+msgstr ""
+"÷ ÚÁÇÒÕÚÏÞÎÏÍ ÓÅËÔÏÒÅ FAT ÎÅ ÓÏÄÅÒÖÉÔÓÑ ÉÎÆÏÒÍÁÃÉÉ Ï ÔÁÂÌÉÃÁÈ FAT. üÔÏ "
+"ÓÔÒÁÎÎÏ. "
+
+#: libparted/fs/fat/bootsector.c:225
+msgid "FAT boot sector says clusters are 0 sectors. This is weird. "
+msgstr ""
+"÷ ÓÏÏÔ×ÅÔÓÔ×ÉÉ Ó ÚÁÇÒÕÚÏÞÎÙÍ ÓÅËÔÏÒÏÍ FAT, ËÌÁÓÔÅÒ ÓÏÄÅÒÖÉÔ 0 ÓÅËÔÏÒÏ×. üÔÏ "
+"ÓÔÒÁÎÎÏ. "
+
+#: libparted/fs/fat/bootsector.c:235
+#, fuzzy
+msgid "File system is FAT12, which is unsupported."
+msgstr "æÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ FAT12. ïÎÁ ÎÅ ÐÏÄÄÅÒÖÉ×ÁÅÔÓÑ."
+
+#: libparted/fs/fat/bootsector.c:411
+#, 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/fat/count.c:152
+#, c-format
+msgid "Bad directory entry for %s: first cluster is the end of file marker."
+msgstr ""
+"ðÌÏÈÏÊ ÜÌÅÍÅÎÔ ËÁÔÁÌÏÇÁ ÄÌÑ %s: ÐÅÒ×ÙÊ ËÌÁÓÔÅÒ Ñ×ÌÑÅÔÓÑ ËÏÎÃÏÍ ÍÁÒËÅÒÁ ÆÁÊÌÁ."
+
+#: libparted/fs/fat/count.c:165
+#, fuzzy, c-format
+msgid ""
+"Bad FAT: unterminated chain for %s. You should run dosfsck or scandisk."
+msgstr "ïÛÉÂËÁ × FAT: ÎÅÚÁ×ÅÒÛÅÎÎÁÑ ÃÅÐÏÞËÁ ÄÌÑ %s"
+
+#: libparted/fs/fat/count.c:174
+#, fuzzy, c-format
+msgid ""
+"Bad FAT: cluster %d outside file system in chain for %s. You should run "
+"dosfsck or scandisk."
+msgstr ""
+"ïÛÉÂËÁ × FAT: ËÌÁÓÔÅÒ %d ÎÁÈÏÄÉÔÓÑ ×ÎÅ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ × ÃÅÐÏÞËÅ ÄÌÑ %s"
+
+#: libparted/fs/fat/count.c:184
+#, fuzzy, c-format
+msgid ""
+"Bad FAT: cluster %d is cross-linked for %s. You should run dosfsck or "
+"scandisk."
+msgstr "ïÛÉÂËÁ × FAT: ËÌÁÓÔÅÒ %d ÉÍÅÅÔ ÓÓÙÌËÕ ÄÌÑ %s"
+
+#: libparted/fs/fat/count.c:203
+#, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr ""
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+msgid ""
+"The file %s is marked as a system file. This means moving it could cause "
+"some programs to stop working."
+msgstr ""
+"æÁÊÌ %s ÐÏÍÅÞÅÎ ËÁË ÓÉÓÔÅÍÎÙÊ. üÔÏ ÚÎÁÞÉÔ, ÞÔÏ ÅÇÏ ÐÅÒÅÍÅÝÅÎÉÅ ÍÏÖÅÔ "
+"ÐÒÉ×ÅÓÔÉ Ë ÐÒÅËÒÁÝÅÎÉÀ ÒÁÂÏÔÙ ÎÅËÏÔÏÒÙÈ ÐÒÏÇÒÁÍÍ."
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:269
+#, fuzzy, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "fat_table_set: ËÌÁÓÔÅÒ %ld ÎÁÈÏÄÉÔÓÑ ×ÎÅ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ"
+
+#: libparted/fs/fat/table.c:301
+#, fuzzy, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "fat_table_get: ËÌÁÓÔÅÒ %ld ÎÁÈÏÄÉÔÓÑ ×ÎÅ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ"
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "fat_table_alloc_cluster: ÎÅÔ Ó×ÏÂÏÄÎÙÈ ËÌÁÓÔÅÒÏ×"
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "îÅÒÁÓÐÏÚÎÁÎÎÁÑ ÓÉÇÎÁÔÕÒÁ linux swap %10s."
+
+#: libparted/fs/linux_swap/linux_swap.c:318
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "îÅÒÁÓÐÏÚÎÁÎÎÁÑ ÓÉÇÎÁÔÕÒÁ linux swap %10s."
+
+#: libparted/fs/linux_swap/linux_swap.c:358
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "îÅÒÁÓÐÏÚÎÁÎÎÁÑ ÓÉÇÎÁÔÕÒÁ linux swap %10s."
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr "óÌÉÛËÏÍ ÍÎÏÇÏ ÐÌÏÈÉÈ ÓÔÒÁÎÉÃ."
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr ""
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr ""
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+msgid "Could not update the extent cache for HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+msgid "Trying to write HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+msgid "Could not update the extent cache for HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+msgid "Trying to write HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:320
+#, fuzzy
+msgid "writing HFS Master Directory Block"
+msgstr "ïÛÉÂËÁ ÚÁÐÉÓÉ × ËÏÒÎÅ×ÏÊ ËÁÔÁÌÏÇ."
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:720
+#, fuzzy
+msgid "Error while writing the allocation file."
+msgstr "ïÛÉÂËÁ ÚÁÐÉÓÉ × ËÏÒÎÅ×ÏÊ ËÁÔÁÌÏÇ."
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:904
+msgid ""
+"It seems there is an error in the HFS wrapper: the bad blocks file doesn't "
+"contain the embedded HFS+ volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:998
+msgid "shrinking HFS wrapper"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+msgid ""
+"This is not a real %s check. This is going to extract special low level "
+"files for debugging purposes."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+msgid ""
+"Invalid size of a transaction block while replaying the journal (%i bytes)."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:260
+msgid ""
+"Journal stored outside of the volume are not supported. Try to desactivate "
+"the journal and run Parted again."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:271
+#, fuzzy
+msgid "Journal offset or size is not multiple of the sector size."
+msgstr ""
+"ëÌÁÓÔÅÒ ÎÁÞÉÎÁÅÔÓÑ ÓÏ ÓÍÅÝÅÎÉÅÍ %d, ÞÔÏ ÎÅ Ñ×ÌÑÅÔÓÑ ÃÅÌÙÍ ÞÉÓÌÏÍ ËÌÁÓÔÅÒÏ× "
+"ÒÁÚÍÅÒÁ %d."
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:302
+msgid "Journal size mismatch between journal info block and journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:314
+#, fuzzy
+msgid "Some header fields are not multiple of the sector size."
+msgstr ""
+"ëÌÁÓÔÅÒ ÎÁÞÉÎÁÅÔÓÑ ÓÏ ÓÍÅÝÅÎÉÅÍ %d, ÞÔÏ ÎÅ Ñ×ÌÑÅÔÓÑ ÃÅÌÙÍ ÞÉÓÌÏÍ ËÌÁÓÔÅÒÏ× "
+"ÒÁÚÍÅÒÁ %d."
+
+#: libparted/fs/hfs/journal.c:323
+msgid ""
+"The sector size stored in the journal is not 512 bytes. Parted only "
+"supports 512 bytes length sectors."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:353
+msgid ""
+"The journal is not empty. Parted must replay the transactions before "
+"opening the file system. This will modify the file system."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:381
+msgid ""
+"The volume header or the master directory block has changed while replaying "
+"the journal. You should restart Parted."
+msgstr ""
+
+#: libparted/fs/hfs/probe.c:51
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to %"
+"d bytes."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+msgid ""
+"A reference to an extent comes from a place it should not. You should check "
+"the file system!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:475
+msgid "This HFS volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+msgid ""
+"The extents overflow file should not contain its own extents! You should "
+"check the file system."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+#, fuzzy
+msgid "Could not cache the file system in memory."
+msgstr "îÅ ÕÄÁÅÔÓÑ ÏÐÒÅÄÅÌÉÔØ ÆÁÊÌÏ×ÕÀ ÓÉÓÔÅÍÕ."
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:619
+msgid "This HFS+ volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr "ÏÔÏÂÒÁÖÁÅÔ ÜÔÏ ÓÐÒÁ×ÏÞÎÏÅ ÓÏÏÂÝÅÎÉÅ"
+
+#: parted/parted.c:95
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr "ÎÉËÏÇÄÁ ÎÅ ÚÁÐÒÁÛÉ×ÁÅÔ ×ÍÅÛÁÔÅÌØÓÔ×Ï ÐÏÌØÚÏ×ÁÔÅÌÑ"
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr "ÏÔÏÂÒÁÖÁÅÔ ×ÅÒÓÉÀ"
+
+#: parted/parted.c:111
+#, 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. ïÓÎÏ×ÎÙÅ ÒÁÚÄÅÌÙ ÉÍÅÀÔ "
+"ÎÏÍÅÒÁ 1-4, Á ÌÏÇÉÞÅÓËÉÅ - 5 É ÄÁÌÅÅ.\n"
+
+#: parted/parted.c:114
+msgid "LABEL-TYPE is one of: "
+msgstr "ôéð-íåôëé ÏÄÉÎ ÉÚ: "
+
+#: parted/parted.c:115
+#, fuzzy
+msgid "FLAG is one of: "
+msgstr "ôéð_æó ÏÄÉÎ ÉÚ: "
+
+#: parted/parted.c:116
+#, fuzzy
+msgid "UNIT is one of: "
+msgstr "ôéð_æó ÏÄÉÎ ÉÚ: "
+
+#: parted/parted.c:117
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "ôéð_òáúä ÏÄÉÎ ÉÚ: ÏÓÎÏ×ÎÏÊ, ÌÏÇÉÞÅÓËÉÊ, ÒÁÓÛÉÒÅÎÎÙÊ\n"
+
+#: parted/parted.c:119
+msgid "FS-TYPE is one of: "
+msgstr "ôéð_æó ÏÄÉÎ ÉÚ: "
+
+#: parted/parted.c:120
+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:123
+#, fuzzy
+msgid "STATE is one of: on, off\n"
+msgstr "ôéð_æó ÏÄÉÎ ÉÚ: "
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "õóôòïêóô÷ïí ÏÂÙÞÎÏ Ñ×ÌÑÅÔÓÑ /dev/hda ÉÌÉ /dev/sda\n"
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr ""
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr ""
+
+#: parted/parted.c:130
+#, 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) 1999-2000 Andrew Clausen, Lennert Buytenhek É Red Hat Inc.\n"
+"ðÅÒÅ×ÏÄÙ: Copyright (C) 1999-2000 Free Software Foundation, Inc\n"
+"üÔÏ Ó×ÏÂÏÄÎÁÑ ÐÒÏÇÒÁÍÍÁ, ÎÁ ÎÅÅ ÒÁÓÐÒÏÓÔÒÁÎÑÅÔÓÑ õÎÉ×ÅÒÓÁÌØÎÁÑ ïÂÝÅÓÔ×ÅÎÎÁÑ\n"
+"ìÉÃÅÎÚÉÑ GNU.\n"
+"\n"
+"üÔÁ ÐÒÏÇÒÁÍÍÁ ÒÁÓÐÒÏÓÔÒÁÎÑÅÔÓÑ × ÎÁÄÅÖÄÅ, ÞÔÏ ÏÎÁ ÂÕÄÅÔ ÐÏÌÅÚÎÏÊ, ÎÏ âåú\n"
+"ëáëéè-ìéâï çáòáîôéê; ÄÁÖÅ ÂÅÚ ÐÏÄÒÁÚÕÍÅ×ÁÅÍÙÈ ÇÁÒÁÎÔÉÊ ëïííåòþåóëïê ãåîîïóôé "
+"ÉÌÉ ðòéçïäîïóôé äìñ ëïîëòåôîïê ãåìé. äÌÑ ÐÏÌÕÞÅÎÉÑ ÂÏÌÅÅ ÐÏÄÒÏÂÎÏÊ "
+"ÉÎÆÏÒÍÁÃÉÉ ÓÍÏÔÒÉÔÅ õÎÉ×ÅÒÓÁÌØÎÕÀ ïÂÝÅÓÔ×ÅÎÎÕÀ ìÉÃÅÎÚÉÀ GNU.\n"
+
+#: parted/parted.c:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr ""
+
+#: parted/parted.c:195
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:211
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "òÁÚÄÅÌÙ ÎÁ %s ÉÓÐÏÌØÚÕÀÔÓÑ."
+
+#: parted/parted.c:223
+msgid ""
+"The existing file system will be destroyed and all data on the partition "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+#, fuzzy
+msgid "Partition number?"
+msgstr "òÁÚÄÅÌ ÉÓÐÏÌØÚÕÅÔÓÑ."
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr ""
+
+#: parted/parted.c:504
+#, fuzzy
+msgid "Source partition number?"
+msgstr "éÓÈÏÄÎÙÊ ÒÁÚÄÅÌ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ."
+
+#: parted/parted.c:509
+#, fuzzy
+msgid "Can't copy an extended partition."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÓËÏÐÉÒÏ×ÁÔØ ÒÁÓÛÉÒÅÎÎÙÊ ÒÁÚÄÅÌ."
+
+#: parted/parted.c:515
+#, fuzzy
+msgid "Destination partition number?"
+msgstr "òÁÚÄÅÌ ÎÁÚÎÁÞÅÎÉÑ ÉÓÐÏÌØÚÕÅÔÓÑ."
+
+#: parted/parted.c:615
+msgid "New disk label type?"
+msgstr ""
+
+#: parted/parted.c:656
+#, fuzzy
+msgid "File system?"
+msgstr "æÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÐÏÌÎÁ!"
+
+#: parted/parted.c:707 parted/parted.c:878
+#, fuzzy
+msgid "Partition type?"
+msgstr "òÁÚÄÅÌ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ."
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+#, fuzzy
+msgid "Partition name?"
+msgstr "òÁÚÄÅÌ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ."
+
+#: parted/parted.c:722 parted/parted.c:895
+#, fuzzy
+msgid "File system type?"
+msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ."
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr ""
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr ""
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+
+#: parted/parted.c:890
+msgid "An extended partition cannot hold a file system. Did you want mkpart?"
+msgstr ""
+
+#: parted/parted.c:1050
+#, fuzzy
+msgid "Can't move an extended partition."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÓËÏÐÉÒÏ×ÁÔØ ÒÁÓÛÉÒÅÎÎÙÊ ÒÁÚÄÅÌ."
+
+#: parted/parted.c:1079
+msgid "Can't move a partition onto itself. Try using resize, perhaps?"
+msgstr ""
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr ""
+
+#: parted/parted.c:1228
+#, c-format
+msgid "Flags: %s\n"
+msgstr ""
+
+#: parted/parted.c:1229
+#, fuzzy, c-format
+msgid "File System: %s\n"
+msgstr "æÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÐÏÌÎÁ!"
+
+#: parted/parted.c:1230
+msgid "Size: "
+msgstr ""
+
+#: parted/parted.c:1235
+msgid "Minimum size: "
+msgstr ""
+
+#: parted/parted.c:1238
+msgid "Maximum size: "
+msgstr ""
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:1364
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr ""
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:1383
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d. Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:1392
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "òÁÚÄÅÌ ÉÓÐÏÌØÚÕÅÔÓÑ."
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr ""
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Start"
+msgstr ""
+
+#: parted/parted.c:1407 parted/parted.c:1410
+msgid "End"
+msgstr ""
+
+#: parted/parted.c:1410
+#, fuzzy
+msgid "Size"
+msgstr "resize"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr ""
+
+#: parted/parted.c:1416
+#, fuzzy
+msgid "File system"
+msgstr "æÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÐÏÌÎÁ!"
+
+#: parted/parted.c:1419
+msgid "Name"
+msgstr ""
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr ""
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1624
+#, 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:1663
+msgid "searching for file systems"
+msgstr ""
+
+#: parted/parted.c:1877
+#, fuzzy
+msgid "New device?"
+msgstr "îÅ ÎÁÊÄÅÎÏ ÎÉ ÏÄÎÏÇÏ ÕÓÔÒÏÊÓÔ×Á"
+
+#: parted/parted.c:1902
+msgid "Flag to Invert?"
+msgstr ""
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr ""
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "check"
+
+#: parted/parted.c:2096
+#, fuzzy
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr ""
+"check MINOR ÐÒÏÉÚ×ÏÄÉÔ ÐÒÏÓÔÕÀ ÐÒÏ×ÅÒËÕ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ"
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "cp"
+
+#: parted/parted.c:2105
+#, fuzzy
+msgid ""
+"cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another "
+"partition"
+msgstr ""
+"cp MINOR [õóôòïêóô÷ï] MINOR ÓËÏÐÉÒÏ×ÁÔØ ÆÁÊÌÏ×ÕÀ ÓÉÓÔÅÍÕ ÎÁ ÄÒÕÇÏÊ ÒÁÚÄÅÌ"
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:2114
+#, fuzzy
+msgid ""
+"help [COMMAND] print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [ëïíáîäá] ÒÁÓÐÅÞÁÔÁÔØ ÏÂÝÕÀ ÓÐÒÁ×ËÕ, ÉÌÉ ÓÐÒÁ×ËÕ ÐÏ "
+"ëïíáîäå"
+
+#: parted/parted.c:2120
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:2120
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:2123
+#, fuzzy
+msgid ""
+"mklabel,mktable LABEL-TYPE create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel ôéð-íåôëé ÓÏÚÄÁÔØ ÎÏ×ÕÀ ÍÅÔËÕ ÄÉÓËÁ (ÔÁÂÌÉÃÕ ÒÁÚÄÅÌÁ)"
+
+#: parted/parted.c:2129
+msgid "mkfs"
+msgstr "mkfs"
+
+#: parted/parted.c:2132
+#, fuzzy
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+"mkfs MINOR ôéð-æó ÓÏÚÄÁÔØ ÆÁÊÌÏ×ÕÀ ÓÉÓÔÅÍÕ ôéð-æó ÎÁ ÒÁÚÄÅÌÅ "
+"MINOR"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:2141
+#, fuzzy
+msgid "mkpart PART-TYPE [FS-TYPE] START END make a partition"
+msgstr "mkpart ôéð-òáúä [ôéð-æó] îáþ ëïî ÓÏÚÄÁÔØ ÒÁÚÄÅÌ"
+
+#: parted/parted.c:2147
+#, 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:2152
+msgid "mkpartfs"
+msgstr "mkpartfs"
+
+#: parted/parted.c:2155
+#, fuzzy
+msgid ""
+"mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system"
+msgstr ""
+"mkpartfs ôéð-òáúä ôéð-æó îáþ ëïî ÓÏÚÄÁÔØ ÒÁÚÄÅÌ Ó ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÏÊ"
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr ""
+
+#: parted/parted.c:2164
+#, fuzzy
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "rm MINOR ÕÄÁÌÉÔØ ÒÁÚÄÅÌ MINOR"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr ""
+
+#: parted/parted.c:2172
+#, fuzzy
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr "rm MINOR ÕÄÁÌÉÔØ ÒÁÚÄÅÌ MINOR"
+
+#: parted/parted.c:2177
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr "print ×Ù×ÅÓÔÉ ÔÁÂÌÉÃÕ ÒÁÚÄÅÌÏ×"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:2199
+#, fuzzy
+msgid "quit exit program"
+msgstr "quit ×ÙÊÔÉ ÉÚ ÐÒÏÇÒÁÍÍÙ"
+
+#: parted/parted.c:2204
+#, fuzzy
+msgid "rescue"
+msgstr "resize"
+
+#: parted/parted.c:2207
+#, fuzzy
+msgid ""
+"rescue START END rescue a lost partition near START "
+"and END"
+msgstr "print ×Ù×ÅÓÔÉ ÔÁÂÌÉÃÕ ÒÁÚÄÅÌÏ×"
+
+#: parted/parted.c:2213
+msgid "resize"
+msgstr "resize"
+
+#: parted/parted.c:2216
+#, fuzzy
+msgid ""
+"resize NUMBER START END resize partition NUMBER and its "
+"file system"
+msgstr ""
+"resize MINOR îáþ ëïî ÉÚÍÅÎÉÔØ ÒÁÚÍÅÒ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ ÎÁ ÒÁÚÄÅÌÅ "
+"MINOR"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:2227
+#, fuzzy
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "rm MINOR ÕÄÁÌÉÔØ ÒÁÚÄÅÌ MINOR"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr ""
+
+#: parted/parted.c:2235
+#, fuzzy
+msgid "select DEVICE choose the device to edit"
+msgstr "print ×Ù×ÅÓÔÉ ÔÁÂÌÉÃÕ ÒÁÚÄÅÌÏ×"
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr ""
+
+#: parted/parted.c:2243
+#, fuzzy
+msgid ""
+"set NUMBER FLAG STATE change the FLAG on partition NUMBER"
+msgstr "rm MINOR ÕÄÁÌÉÔØ ÒÁÚÄÅÌ MINOR"
+
+#: parted/parted.c:2249
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:2252
+#, fuzzy
+msgid ""
+"toggle [NUMBER [FLAG]] toggle the state of FLAG on "
+"partition NUMBER"
+msgstr "boot MINOR ÕÓÔÁÎÁ×ÌÉ×ÁÅÔ ÚÁÇÒÕÚÏÞÎÙÊ ÒÁÚÄÅÌ × MINOR"
+
+#: parted/parted.c:2258
+#, fuzzy
+msgid "unit"
+msgstr "quit"
+
+#: parted/parted.c:2261
+#, fuzzy
+msgid "unit UNIT set the default unit to UNIT"
+msgstr "print ×Ù×ÅÓÔÉ ÔÁÂÌÉÃÕ ÒÁÚÄÅÌÏ×"
+
+#: parted/parted.c:2266
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:2269
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:2273
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "îÅ ÎÁÊÄÅÎÏ ÎÉ ÏÄÎÏÇÏ ÕÓÔÒÏÊÓÔ×Á"
+
+#: parted/parted.c:2412
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:2450
+msgid "You may need to update /etc/fstab.\n"
+msgstr ""
+
+#: parted/ui.c:160
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:163
+#, 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"
+"×ÙÐÏÌÎÑÅÔÓÑ × ÉÎÔÅÒÁËÔÉ×ÎÏÍ ÒÅÖÉÍÅ.\n"
+
+#: parted/ui.c:168
+#, 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:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:372
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:377
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:420
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:523
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:1024
+#, fuzzy
+msgid "Expecting a partition number."
+msgstr "òÁÚÄÅÌ ÎÁÚÎÁÞÅÎÉÑ ÉÓÐÏÌØÚÕÅÔÓÑ."
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "òÁÚÄÅÌ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ."
+
+#: parted/ui.c:1053
+#, fuzzy
+msgid "Expecting a file system type."
+msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ."
+
+#: parted/ui.c:1060
+#, fuzzy, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "îÅÉÚ×ÅÓÔÎÙÊ ÔÉÐ ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÙ."
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr ""
+
+#: parted/ui.c:1178
+#, fuzzy
+msgid "Can't create any more partitions."
+msgstr "îÅ×ÏÚÍÏÖÎÏ ÓËÏÐÉÒÏ×ÁÔØ ÒÁÓÛÉÒÅÎÎÙÊ ÒÁÚÄÅÌ."
+
+#: parted/ui.c:1188
+#, fuzzy
+msgid "Expecting a partition type."
+msgstr "òÁÚÄÅÌ ÎÁÚÎÁÞÅÎÉÑ ÎÅ ÓÕÝÅÓÔ×ÕÅÔ."
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr ""
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr ""
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "ëìàþé:"
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "ëïíáîäù:"
+
+#: parted/ui.c:1445
+#, fuzzy, c-format
+msgid "Using %s\n"
+msgstr ""
+"\n"
+"éÓÐÏÌØÚÕÅÔÓÑ %s\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "ËÏÇÄÁ ÎÅÏÂÈÏÄÉÍÏ, ÚÁÐÒÁÛÉ×ÁÅÔ ×ÍÅÛÁÔÅÌØÓÔ×Ï ÐÏÌØÚÏ×ÁÔÅÌÑ"
+
+#~ msgid "Device %s is neither a SCSI nor IDE drive."
+#~ msgstr "õÓÔÒÏÊÓÔ×Ï %s ÎÅ Ñ×ÌÑÅÔÓÑ ÎÉ SCSI, ÎÉ IDE ÄÉÓËÏÍ."
+
+#~ 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 ""
+#~ "óÅËÔÏÒÙ ÎÁ %s ÉÍÅÀÔ ÒÁÚÍÅÒ %d ÂÁÊÔ. óÞÉÔÁÅÔÓÑ, ÞÔÏ Parted ÒÁÂÏÔÁÅÔ "
+#~ "ÎÅÐÒÁ×ÉÌØÎÏ Ó ÕÓÔÒÏÊÓÔ×ÁÍÉ, ÒÁÚÍÅÒ ÓÅËÔÏÒÏ× ËÏÔÏÒÙÈ ÏÔÌÉÞÁÅÔÓÑ ÏÔ 512 ÂÁÊÔ"
+
+#~ msgid "Could not read geometry of %s - %s."
+#~ msgstr "îÅ ÕÄÁÅÔÓÑ ÐÒÏÞÉÔÁÔØ ÇÅÏÍÅÔÒÉÀ %s - %s."
+
+#~ msgid "Device %s has dodgey geometry."
+#~ msgstr "õÓÔÒÏÊÓÔ×Ï %s ÉÍÅÅÔ ÓÔÒÁÎÎÕÀ ÇÅÏÍÅÔÒÉÀ."
+
+#~ msgid "Unknown SCSI"
+#~ msgstr "îÅÉÚ×ÅÓÔÎÙÊ SCSI"
+
+#~ 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 "Creating new %s disklabels is not implemented yet."
+#~ msgstr "óÏÚÄÁÎÉÅ ÎÏ×ÙÈ %s ÍÅÔÏË ÄÉÓËÁ ÐÏËÁ ÎÅ ÒÅÁÌÉÚÏ×ÁÎÏ."
+
+#~ msgid "The code to write the partition table hasn't been written for %s yet"
+#~ msgstr "ðÒÏÇÒÁÍÍÁ ÄÌÑ ÚÁÐÉÓÉ ÔÁÂÌÉÃÙ ÒÁÚÄÅÌÏ× ÄÌÑ %s ÐÏËÁ ÎÅ ÎÁÐÉÓÁÎÁ"
+
+#~ msgid "Can't create a partition with the start after the end."
+#~ msgstr ""
+#~ "îÅ×ÏÚÍÏÖÎÏ ÓÏÚÄÁÔØ ÒÁÚÄÅÌ, Õ ËÏÔÏÒÏÇÏ ÎÁÞÁÌÏ ÒÁÓÐÏÌÏÖÅÎÏ ÐÏÓÌÅ ËÏÎÃÁ."
+
+#~ 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 "Can't grow partition onto used space, or outside the disk."
+#~ msgstr ""
+#~ "îÅ×ÏÚÍÏÖÎÏ Õ×ÅÌÉÞÉÔØ ÒÁÚÄÅÌ ÚÁ ÓÞÅÔ ÉÓÐÏÌØÚÕÅÍÏÇÏ ÐÒÏÓÔÒÁÎÓÔ×Á, ÉÌÉ ÚÁ "
+#~ "ÐÒÅÄÅÌÙ ÄÉÓËÁ."
+
+#~ msgid "Attempt to read sectors %ld-%ld outside of partition on %s"
+#~ msgstr "ðÏÐÙÔËÁ ÐÒÏÞÉÔÁÔØ ÓÅËÔÏÒÁ %ld-%ld ×ÎÅ ÒÁÚÄÅÌÁ ÎÁ %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 ""
+#~ "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 ÎÅ ÍÏÖÅÔ ÒÁÂÏÔÁÔØ Ó ÆÁÊÌÏ×ÏÊ ÓÉÓÔÅÍÏÊ, ÉÍÅÀÝÅÊ ÔÁËÉÅ ÒÁÚÍÅÒÙ. "
+#~ "þÉÓÌÏ ËÌÁÓÔÅÒÏ× %d (ÏÖÉÄÁÅÍÏÅ %d); ÒÁÚÍÅÒ FAT %d ÓÅËÔÏÒÏ× (ÏÖÉÄÁÅÍÙÊ %d)."
+
+#~ 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 "Filesystem has an invalid signature for a FAT filesystems."
+#~ msgstr "æÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ ÉÍÅÅÔ ÎÅ×ÅÒÎÕÀ ÄÌÑ FAT ÓÉÇÎÁÔÕÒÕ."
+
+#~ 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 "Linux-swap partitions can not be hidden."
+#~ msgstr "swap-ÒÁÚÄÅÌ Linux ÎÅ ÍÏÖÅÔ ÂÙÔØ ÓËÒÙÔ."
+
+#~ msgid "START and END are in cylinders\n"
+#~ msgstr "START É END ÎÁÈÏÄÑÔÓÑ × ÃÉÌÉÎÄÒÁÈ\n"
+
+#~ msgid "hide"
+#~ msgstr "hide"
+
+#~ msgid "Disk geometry: 1-%d, %dk cylinders\n"
+#~ msgstr "çÅÏÍÅÔÒÉÑ ÄÉÓËÁ: 1-%d, %dk ÃÉÌÉÎÄÒÏ×\n"
+
+#~ msgid "Minor Start End Type Filesystem Flags\n"
+#~ msgstr "îÏÍÅÒ îÁÞÁÌÏ ëÏÎÅà ôÉÐ æÁÊÌÏ×ÁÑ ÓÉÓÔÅÍÁ æÌÁÇÉ\n"
+
+#~ msgid "unhide"
+#~ msgstr "unhide"
+
+#~ msgid "hide MINOR hides partition MINOR"
+#~ msgstr "hide MINOR ÓËÒÙÔØ ÒÁÚÄÅÌ MINOR"
+
+#~ msgid "unhide MINOR unhides partition MINOR"
+#~ msgstr "unhide 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. ðÏÖÁÌÕÊÓÔÁ, ÐÏÛÌÉÔÅ ÏÔÞÅÔ Ï ÏÛÉÂËÅ\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."
diff --git a/parted-1.8.7/po/rw.gmo b/parted-1.8.7/po/rw.gmo
new file mode 100644
index 0000000..267bd2d
--- /dev/null
+++ b/parted-1.8.7/po/rw.gmo
Binary files differ
diff --git a/parted-1.8.7/po/rw.po b/parted-1.8.7/po/rw.po
new file mode 100644
index 0000000..6a23a0a
--- /dev/null
+++ b/parted-1.8.7/po/rw.po
@@ -0,0 +1,3354 @@
+# 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: 2007-05-09 17:02-0400\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"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "IDOSIYE Sisitemu Ubwoko"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, fuzzy, c-format
+msgid "Error opening %s: %s"
+msgstr "Hari ikibazo mu gufungura %s%S"
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, 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:411 libparted/arch/linux.c:1431
+#, fuzzy, c-format
+msgid "%s during seek for read on %s"
+msgstr "%skugirango Gusoma ku"
+
+#: libparted/arch/beos.c:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, fuzzy, c-format
+msgid "%s during read on %s"
+msgstr "%sGusoma ku"
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, fuzzy, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Kwandika Kuri ni Gusoma"
+
+#: libparted/arch/beos.c:496 libparted/arch/linux.c:1570
+#, fuzzy, c-format
+msgid "%s during seek for write on %s"
+msgstr "%skugirango Kwandika ku"
+
+#: libparted/arch/beos.c:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, fuzzy, c-format
+msgid "%s during write on %s"
+msgstr "%sKwandika ku"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "Amapaji"
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, fuzzy, c-format
+msgid "Unable to open %s."
+msgstr "Kuri Gufungura"
+
+#: libparted/arch/gnu.c:114
+#, fuzzy
+msgid "Unable to probe store."
+msgstr "Kuri"
+
+#: libparted/arch/gnu.c:352
+#, 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:369
+#, 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:380 parted/parted.c:2443
+#, 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:772
+#, fuzzy, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%sKuri Kuri"
+
+#: libparted/arch/linux.c:408
+#, fuzzy, c-format
+msgid "Could not stat device %s - %s."
+msgstr "OYA APAREYE"
+
+#: libparted/arch/linux.c:523
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:539
+#, c-format
+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 ""
+
+#: libparted/arch/linux.c:579
+#, fuzzy, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Kuri i Ingano Bya"
+
+#: libparted/arch/linux.c:668
+#, fuzzy, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "OYA Kubona Ikiranga Bya APAREYE"
+
+#: libparted/arch/linux.c:677
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:698
+#, 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:873
+#, fuzzy, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "APAREYE"
+
+#: libparted/arch/linux.c:928
+#, fuzzy, c-format
+msgid ""
+"The device %s has zero length, and can't 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:1032
+#, 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:1110
+msgid "DAC960 RAID controller"
+msgstr ""
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr ""
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr ""
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr ""
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr ""
+
+# filter/source\xsltdialog\xmlfilterdialogstrings.src:STR_UNKNOWN_APPLICATION.text
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "Kitazwi"
+
+#: libparted/arch/linux.c:1169
+#, fuzzy
+msgid "ped_device_new() Unsupported device type"
+msgstr "APAREYE Ubwoko"
+
+#: libparted/arch/linux.c:2083
+#, 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:2262
+#, 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/arch/linux.c:2368
+#, fuzzy, c-format
+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:"
+
+#: libparted/cs/geom.c:162
+#, fuzzy
+msgid "Can't have the end before the start!"
+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:366
+#, 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:406 libparted/fs/linux_swap/linux_swap.c:475
+#, fuzzy
+msgid "checking for bad blocks"
+msgstr "kugirango"
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, fuzzy, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "Kuri Gufungura Akarango"
+
+#: libparted/disk.c:471
+#, 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:598
+#, fuzzy, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "ni i IDOSIYE Sisitemu ni"
+
+#: libparted/disk.c:1075
+#, fuzzy, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "%sUturango... OYA Gushigikira Byongerewe..."
+
+#: libparted/disk.c:1634
+#, 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:1647
+#, fuzzy
+msgid "Too many primary partitions."
+msgstr "Amapaji"
+
+#: libparted/disk.c:1656
+#, 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:1680
+#, fuzzy, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Birenzeho Byongerewe... ku"
+
+#: libparted/disk.c:1690
+#, fuzzy
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Bijyanye n'inyurabwenge Hanze Bya i Byongerewe..."
+
+#: libparted/disk.c:1715
+#, 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:1725 libparted/disk.c:1779 libparted/disk.c:1945
+#, fuzzy
+msgid "Can't have overlapping partitions."
+msgstr "iyorosa"
+
+#: libparted/disk.c:1733
+#, fuzzy
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "a Mo Imbere Byongerewe..."
+
+#: libparted/disk.c:2140
+msgid "metadata"
+msgstr ""
+
+# svx/source\dialog\labdlg.src:RID_SVXPAGE_CAPTION.LB_WINKEL.1.text
+#: libparted/disk.c:2142
+#, fuzzy
+msgid "free"
+msgstr "Kigenga"
+
+# 2175
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+#, 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:2146 parted/ui.c:1173 parted/ui.c:1201
+#, fuzzy
+msgid "logical"
+msgstr "Bijyanye n'inyurabwenge"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr ""
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr ""
+
+# 5214
+#: libparted/disk.c:2166
+#, fuzzy
+msgid "root"
+msgstr "Imizi"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr ""
+
+# sc/source\ui\navipi\navipi.src:RID_SCDLG_NAVIGATOR.STR_HIDDEN.text
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "gihishwe"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr ""
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr ""
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr ""
+
+#: libparted/disk.c:2178
+#, fuzzy
+msgid "hp-service"
+msgstr "Serivisi"
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2190
+#, fuzzy, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Ibendera Ibendera"
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "Ibisobanuro"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "Iburira"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "Ikosa"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr ""
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr ""
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr ""
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr ""
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "Yego"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "Oya"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "OKE"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "Ongera ugerageze"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "Kureka"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "Kureka"
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org containing at least the version (%s) and the following "
+"message: "
+msgstr "A in imeli a Icyegeranyo Kuri org i Verisiyo Na i Ubutumwa"
+
+#: libparted/filesys.c:384
+#, fuzzy
+msgid "Could not detect file system."
+msgstr "OYA IDOSIYE Sisitemu"
+
+#: libparted/filesys.c:395
+#, fuzzy
+msgid "The file system is bigger than its volume!"
+msgstr "IDOSIYE Sisitemu ni Igice"
+
+#: libparted/filesys.c:403
+#, fuzzy, c-format
+msgid "Support for opening %s file systems is not implemented yet."
+msgstr "kugirango Gufungura %s%S IDOSIYE ni OYA"
+
+#: libparted/filesys.c:445
+#, fuzzy, c-format
+msgid "Support for creating %s file systems is not implemented yet."
+msgstr "kugirango IDOSIYE ni OYA"
+
+#: libparted/filesys.c:505
+#, fuzzy, c-format
+msgid "Support for checking %s file systems is not implemented yet."
+msgstr "kugirango IDOSIYE ni OYA"
+
+#: libparted/filesys.c:571
+#, fuzzy
+msgid "raw block copying"
+msgstr "Funga"
+
+#: libparted/filesys.c:582
+#, fuzzy
+msgid "growing file system"
+msgstr "IDOSIYE Sisitemu"
+
+#: libparted/filesys.c:622
+#, fuzzy
+msgid "Can't copy onto an overlapping partition."
+msgstr "Gukoporora iyorosa"
+
+#: libparted/filesys.c:644
+#, fuzzy, c-format
+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"
+
+#: libparted/filesys.c:658
+#, fuzzy, c-format
+msgid "Support for copying %s file systems is not implemented yet."
+msgstr "kugirango IDOSIYE ni OYA"
+
+#: libparted/filesys.c:696
+#, fuzzy, c-format
+msgid "Support for resizing %s file systems is not implemented yet."
+msgstr "kugirango IDOSIYE ni OYA"
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, fuzzy
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr "IDOSIYE Sisitemu ni Igice"
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "genzura"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, 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"
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, fuzzy
+msgid "Sorry, can't move the start of reiserfs partitions yet."
+msgstr "Kwimura i Gutangira Bya"
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+msgid "shrinking"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "Iburira"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, fuzzy, c-format
+msgid "Device is too small for %lu blocks."
+msgstr "Idosiye Sisitemu Gitoya kugirango"
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "kugirango IDOSIYE ni OYA"
+
+#: libparted/labels/aix.c:148
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "kugirango IDOSIYE ni OYA"
+
+#: libparted/labels/aix.c:161
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr "kugirango IDOSIYE ni OYA"
+
+#: libparted/labels/aix.c:171
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr "kugirango IDOSIYE ni OYA"
+
+#: libparted/labels/aix.c:189
+#, 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:199
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr "kugirango IDOSIYE ni OYA"
+
+#: libparted/labels/bsd.c:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+#, fuzzy
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Kuri Byose ku i"
+
+#: libparted/labels/bsd.c:526
+#, fuzzy
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Kuri a"
+
+#: libparted/labels/dasd.c:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "Kuri i Ingano Bya"
+
+#: libparted/labels/dasd.c:781
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Kuri a"
+
+#: libparted/labels/dos.c:827
+#, fuzzy, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "imbonerahamwe# ku Isinya"
+
+#: libparted/labels/dos.c:855
+#, fuzzy, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "imbonerahamwe# ku"
+
+#: libparted/labels/dos.c:1318
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr ""
+
+#: libparted/labels/dos.c:1958
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+#: libparted/labels/dvh.c:190
+#, fuzzy, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%sOya Byongerewe... Igice Umutwempangano Kwirengagiza Hanyuma Cyasibwe"
+
+#: libparted/labels/dvh.c:313
+#, fuzzy
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr "ni i imbonerahamwe# ni"
+
+#: libparted/labels/dvh.c:616
+#, fuzzy
+msgid "Only primary partitions can be root partitions."
+msgstr "Imizi"
+
+#: libparted/labels/dvh.c:630
+msgid "Only primary partitions can be swap partitions."
+msgstr ""
+
+#: libparted/labels/dvh.c:644
+#, fuzzy
+msgid "Only logical partitions can be a boot file."
+msgstr "Bijyanye n'inyurabwenge a IDOSIYE"
+
+#: libparted/labels/dvh.c:721
+#, fuzzy
+msgid "Only logical partitions (boot files) have a name."
+msgstr "Bijyanye n'inyurabwenge Idosiye a Izina:"
+
+#: libparted/labels/dvh.c:812
+msgid "Too many primary partitions"
+msgstr ""
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "%sKwandika ku"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+# desktop/source\app\ssodlg.src:DLG_SSOLOGIN.text
+#: libparted/labels/fdasd.c:130
+#, fuzzy, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr "%s%s%s"
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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:648
+#, fuzzy, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+msgstr "Imiterere Bya i imbonerahamwe# ni Verisiyo ni RW org"
+
+#: libparted/labels/gpt.c:698
+#, 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:827
+#, 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:862
+#, 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:870
+#, 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/mac.c:181
+#, fuzzy, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Isinya kugirango Uturango..."
+
+#: libparted/labels/mac.c:226
+#, fuzzy
+msgid "Partition map has no partition map entry!"
+msgstr "Oya Icyinjijwe"
+
+#: libparted/labels/mac.c:273
+#, fuzzy, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%sni Gitoya kugirango a Akarango"
+
+#: libparted/labels/mac.c:532
+#, fuzzy, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Sibyo Isinya"
+
+#: libparted/labels/mac.c:550
+#, fuzzy, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "Sibyo Uburebure Bya 0 Bayite"
+
+#: libparted/labels/mac.c:580
+#, 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:597
+#, 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:611
+#, fuzzy
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "i"
+
+#: libparted/labels/mac.c:622
+#, fuzzy
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "Ibyatanzwe i"
+
+#: libparted/labels/mac.c:675
+#, 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:688
+#, 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:736
+#, fuzzy
+msgid "No valid partition map found."
+msgstr "Byemewe Byabonetse"
+
+#: libparted/labels/mac.c:795
+#, 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:822
+#, fuzzy
+msgid "Weird! There are 2 partitions map entries!"
+msgstr "2. Ibyinjijwe"
+
+#: libparted/labels/mac.c:1347
+#, 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:1443
+#, fuzzy
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr "Kongeramo ni Gitoya"
+
+#: libparted/labels/pc98.c:354
+#, fuzzy, c-format
+msgid "Invalid partition table on %s."
+msgstr "imbonerahamwe# ku"
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, 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:791
+#, fuzzy
+msgid "Can't add another partition."
+msgstr "Kongeramo"
+
+#: libparted/labels/rdb.c:162
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:497
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:600
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:697
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:740
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:1069
+#, fuzzy
+msgid "Unable to allocate a partition number."
+msgstr "a Umubare"
+
+#: libparted/labels/sun.c:145
+#, fuzzy
+msgid "Corrupted Sun disk label detected."
+msgstr "Akarango"
+
+#: libparted/labels/sun.c:266
+#, 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:288
+#, fuzzy, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "Akarango a"
+
+#: libparted/labels/sun.c:442
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:737
+#, 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:752
+#, fuzzy
+msgid "Sun disk label is full."
+msgstr "Akarango ni"
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+#, fuzzy
+msgid "Out of memory."
+msgstr "Ububiko bwarenzwe"
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr ""
+
+#: libparted/unit.c:527
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "a Umubare"
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:72
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%sKwandika ku"
+
+#: libparted/fs/amiga/amiga.c:278
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:289
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:318
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr ""
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+#, fuzzy
+msgid "Inconsistent group descriptors!"
+msgstr "Itsinda"
+
+# officecfg/registry\schema\org\openoffice\Office\Common.xcs:....Save.URL.FileSystem.text
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+#, fuzzy
+msgid "File system full!"
+msgstr "Idosiye ya sisitemu"
+
+#: libparted/fs/ext2/ext2.c:686
+#, fuzzy
+msgid "Invalid superblock. Are you sure this is an ext2 file system?"
+msgstr "iyi ni"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+#, fuzzy
+msgid "File system has errors! You should run e2fsck."
+msgstr "Amakosa Gukoresha"
+
+#: libparted/fs/ext2/ext2.c:711
+#, fuzzy
+msgid ""
+"File system was not cleanly unmounted! You should run e2fsck. Modifying an "
+"unclean file system could cause severe corruption."
+msgstr "OYA"
+
+#: libparted/fs/ext2/ext2.c:731
+#, fuzzy
+msgid "File system has an incompatible feature enabled."
+msgstr "Bikora"
+
+#: libparted/fs/ext2/ext2.c:742
+#, fuzzy
+msgid "Error allocating buffer cache."
+msgstr "Ubwihisho"
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+#, fuzzy
+msgid ""
+"Found an inode with a incorrect link count. Better go run e2fsck first!"
+msgstr "Na: a Ihuza IBARA Gyayo Gukoresha Itangira"
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+#, fuzzy
+msgid "Not enough free inodes!"
+msgstr "Kigenga"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+#, fuzzy
+msgid "File system is too full to remove a group!"
+msgstr "ni Kuri Gukuraho... a Itsinda"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+#, fuzzy
+msgid "File system has too many allocated inodes to remove a group!"
+msgstr "Kuri Gukuraho... a Itsinda"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+#, fuzzy
+msgid "adding groups"
+msgstr "Wongera Amatsinda"
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, fuzzy, c-format
+msgid "Your file system is too full to resize it to %i blocks. Sorry."
+msgstr "ni Kuri Ihindurangero Kuri"
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, fuzzy, c-format
+msgid ""
+"Your file system has too many occupied inodes to resize it to %i blocks. "
+"Sorry."
+msgstr "Kuri Ihindurangero Kuri"
+
+#: libparted/fs/ext2/ext2_resize.c:666
+#, fuzzy
+msgid "File system was not cleanly unmounted! You should run e2fsck."
+msgstr "OYA"
+
+#: libparted/fs/ext2/ext2_resize.c:675
+#, 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"
+
+#: libparted/fs/ext2/ext2_resize.c:691
+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 ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+#, fuzzy
+msgid "Cross-linked blocks found! Better go run e2fsck first!"
+msgstr "Byabonetse Gyayo Gukoresha Itangira"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, fuzzy, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "Oya Indango"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, fuzzy, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "cy/ byagarajwe"
+
+#: libparted/fs/ext2/interface.c:186
+#, 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"
+
+#: libparted/fs/ext2/interface.c:203
+#, fuzzy
+msgid "Sorry, can't move the start of ext2 partitions yet!"
+msgstr "Kwimura i Gutangira Bya"
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+#, fuzzy
+msgid "Couldn't flush buffer cache!"
+msgstr "Ubwihisho"
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+#, fuzzy
+msgid "writing per-group metadata"
+msgstr "Itsinda"
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+#, fuzzy
+msgid "File system too small for ext2."
+msgstr "Idosiye Sisitemu Gitoya kugirango"
+
+#: libparted/fs/fat/calc.c:135
+#, fuzzy, c-format
+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"
+
+#: libparted/fs/fat/context.c:56
+#, fuzzy, c-format
+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"
+
+#: libparted/fs/fat/fat.c:308
+#, fuzzy, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr "Gitoya kugirango a IDOSIYE Sisitemu"
+
+#: libparted/fs/fat/fat.c:474
+#, 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"
+
+#: libparted/fs/fat/fat.c:514
+#, fuzzy
+msgid "There are no possible configurations for this FAT type."
+msgstr "Oya Amaboneza kugirango iyi Ubwoko"
+
+#: libparted/fs/fat/fat.c:526
+#, fuzzy, c-format
+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:"
+
+#: libparted/fs/fat/fat.c:549
+#, fuzzy, c-format
+msgid ""
+"File system is reporting the free space as %d clusters, not %d clusters."
+msgstr "Idosiye Sisitemu ni i Kigenga Umwanya Nka OYA"
+
+#: libparted/fs/fat/fat.c:874
+#, 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/resize.c:159
+#, 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"
+
+#: libparted/fs/fat/resize.c:300
+#, fuzzy
+msgid "Error writing to the root directory."
+msgstr "Kuri i Imizi bushyinguro"
+
+#: libparted/fs/fat/resize.c:489
+#, fuzzy
+msgid "If you leave your file system as FAT16, then you will have no problems."
+msgstr "IDOSIYE Sisitemu Nka Hanyuma Oya"
+
+#: libparted/fs/fat/resize.c:492
+#, 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"
+
+#: libparted/fs/fat/resize.c:500
+#, 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"
+
+#: libparted/fs/fat/resize.c:504
+#, 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
+#: libparted/fs/fat/resize.c:518
+#, fuzzy, c-format
+msgid "%s %s %s"
+msgstr "%s%s%s"
+
+#: libparted/fs/fat/resize.c:519
+#, fuzzy
+msgid "Would you like to use FAT32?"
+msgstr "nka Kuri Gukoresha"
+
+# #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-#
+# #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-#
+# #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-#
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, fuzzy, c-format
+msgid "%s %s"
+msgstr "%s%s"
+
+#: libparted/fs/fat/resize.c:551
+#, 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"
+
+#: libparted/fs/fat/resize.c:567
+#, 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"
+
+#: libparted/fs/fat/resize.c:580
+#, fuzzy
+msgid ""
+"GNU Parted cannot resize this partition to this size. We're working on it!"
+msgstr "OYA Ihindurangero iyi Kuri iyi Ingano ku"
+
+#: 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:139
+#, 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:164
+#, 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:213
+#, 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:219
+#, fuzzy
+msgid "FAT boot sector says there are no FAT tables. This is weird. "
+msgstr "Oya Imbonerahamwe ni"
+
+#: libparted/fs/fat/bootsector.c:225
+#, fuzzy
+msgid "FAT boot sector says clusters are 0 sectors. This is weird. "
+msgstr "0 ni"
+
+#: libparted/fs/fat/bootsector.c:235
+#, fuzzy
+msgid "File system is FAT12, which is unsupported."
+msgstr "ni ni"
+
+#: libparted/fs/fat/bootsector.c:411
+#, 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/fat/count.c:152
+#, fuzzy, c-format
+msgid "Bad directory entry for %s: first cluster is the end of file marker."
+msgstr "bushyinguro Icyinjijwe kugirango Itangira ni i Impera Bya IDOSIYE"
+
+#: libparted/fs/fat/count.c:165
+#, fuzzy, c-format
+msgid ""
+"Bad FAT: unterminated chain for %s. You should run dosfsck or scandisk."
+msgstr "kugirango Gukoresha Cyangwa"
+
+#: libparted/fs/fat/count.c:174
+#, fuzzy, c-format
+msgid ""
+"Bad FAT: cluster %d outside file system in chain for %s. You should run "
+"dosfsck or scandisk."
+msgstr "Hanze in kugirango Gukoresha Cyangwa"
+
+#: libparted/fs/fat/count.c:184
+#, fuzzy, c-format
+msgid ""
+"Bad FAT: cluster %d is cross-linked for %s. You should run dosfsck or "
+"scandisk."
+msgstr "ni Kwambukiranya kugirango Gukoresha Cyangwa"
+
+#: libparted/fs/fat/count.c:203
+#, fuzzy, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr "%sni"
+
+#: libparted/fs/fat/count.c:266
+#, fuzzy, c-format
+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"
+
+#: libparted/fs/fat/table.c:137
+#, fuzzy, c-format
+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"
+
+#: libparted/fs/fat/table.c:269
+#, fuzzy, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "Hanze"
+
+#: libparted/fs/fat/table.c:301
+#, fuzzy, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "Hanze"
+
+#: libparted/fs/fat/table.c:343
+#, fuzzy
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "Oya Kigenga"
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Isinya"
+
+#: libparted/fs/linux_swap/linux_swap.c:318
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Isinya"
+
+#: libparted/fs/linux_swap/linux_swap.c:358
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Isinya"
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+#, fuzzy
+msgid "Too many bad pages."
+msgstr "Amapaji"
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr ""
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr ""
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+msgid "Could not update the extent cache for HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+msgid "Trying to write HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+msgid "Could not update the extent cache for HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+msgid "Trying to write HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:320
+#, fuzzy
+msgid "writing HFS Master Directory Block"
+msgstr "Kuri i Imizi bushyinguro"
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:720
+#, fuzzy
+msgid "Error while writing the allocation file."
+msgstr "Kuri i Imizi bushyinguro"
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:904
+msgid ""
+"It seems there is an error in the HFS wrapper: the bad blocks file doesn't "
+"contain the embedded HFS+ volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:998
+msgid "shrinking HFS wrapper"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+msgid ""
+"This is not a real %s check. This is going to extract special low level "
+"files for debugging purposes."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+msgid ""
+"Invalid size of a transaction block while replaying the journal (%i bytes)."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:260
+msgid ""
+"Journal stored outside of the volume are not supported. Try to desactivate "
+"the journal and run Parted again."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:271
+#, fuzzy
+msgid "Journal offset or size is not multiple of the sector size."
+msgstr "Gutangira DELTA ni OYA a Igikubo Bya i Ingano"
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:302
+msgid "Journal size mismatch between journal info block and journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:314
+#, fuzzy
+msgid "Some header fields are not multiple of the sector size."
+msgstr "Gutangira DELTA ni OYA a Igikubo Bya i Ingano"
+
+#: libparted/fs/hfs/journal.c:323
+msgid ""
+"The sector size stored in the journal is not 512 bytes. Parted only "
+"supports 512 bytes length sectors."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:353
+msgid ""
+"The journal is not empty. Parted must replay the transactions before "
+"opening the file system. This will modify the file system."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:381
+msgid ""
+"The volume header or the master directory block has changed while replaying "
+"the journal. You should restart Parted."
+msgstr ""
+
+#: libparted/fs/hfs/probe.c:51
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to %"
+"d bytes."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+msgid ""
+"A reference to an extent comes from a place it should not. You should check "
+"the file system!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:475
+msgid "This HFS volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+msgid ""
+"The extents overflow file should not contain its own extents! You should "
+"check the file system."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+#, fuzzy
+msgid "Could not cache the file system in memory."
+msgstr "OYA IDOSIYE Sisitemu"
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:619
+msgid "This HFS+ volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: parted/parted.c:94
+#, fuzzy
+msgid "displays this help message"
+msgstr "iyi Ifashayobora Ubutumwa"
+
+#: parted/parted.c:95
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+#, fuzzy
+msgid "never prompts for user intervention"
+msgstr "Nta narimwe kugirango Ukoresha:"
+
+#: parted/parted.c:98
+#, fuzzy
+msgid "displays the version"
+msgstr "i Verisiyo"
+
+#: parted/parted.c:111
+#, 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:114
+#, fuzzy
+msgid "LABEL-TYPE is one of: "
+msgstr "ni Bya"
+
+#: parted/parted.c:115
+#, fuzzy
+msgid "FLAG is one of: "
+msgstr "ni Bya"
+
+#: parted/parted.c:116
+#, fuzzy
+msgid "UNIT is one of: "
+msgstr "ni Bya"
+
+#: parted/parted.c:117
+#, fuzzy
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "ni Bya Bijyanye n'inyurabwenge"
+
+#: parted/parted.c:119
+#, fuzzy
+msgid "FS-TYPE is one of: "
+msgstr "ni Bya"
+
+#: parted/parted.c:120
+#, 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:123
+#, fuzzy
+msgid "STATE is one of: on, off\n"
+msgstr "ni Bya ku"
+
+#: parted/parted.c:124
+#, fuzzy
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "ni Cyangwa"
+
+#: parted/parted.c:125
+#, fuzzy
+msgid "NAME is any word you want\n"
+msgstr "ni ijambo"
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr ""
+
+#: parted/parted.c:130
+#, 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:176
+#, 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:195
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:211
+#, fuzzy, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "S ku"
+
+#: parted/parted.c:223
+msgid ""
+"The existing file system will be destroyed and all data on the partition "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+#, fuzzy
+msgid "Partition number?"
+msgstr "Umubare"
+
+#: parted/parted.c:500
+#, fuzzy
+msgid "Source device?"
+msgstr "APAREYE"
+
+#: parted/parted.c:504
+#, fuzzy
+msgid "Source partition number?"
+msgstr "Umubare"
+
+#: parted/parted.c:509
+#, fuzzy
+msgid "Can't copy an extended partition."
+msgstr "Gukoporora Byongerewe..."
+
+#: parted/parted.c:515
+#, fuzzy
+msgid "Destination partition number?"
+msgstr "Umubare"
+
+#: parted/parted.c:615
+#, fuzzy
+msgid "New disk label type?"
+msgstr "Akarango Ubwoko"
+
+# officecfg/registry\schema\org\openoffice\Office\Common.xcs:....Save.URL.FileSystem.text
+#: parted/parted.c:656
+#, fuzzy
+msgid "File system?"
+msgstr "Idosiye ya sisitemu"
+
+#: parted/parted.c:707 parted/parted.c:878
+#, fuzzy
+msgid "Partition type?"
+msgstr "Ubwoko"
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+#, fuzzy
+msgid "Partition name?"
+msgstr "Izina:"
+
+#: parted/parted.c:722 parted/parted.c:895
+#, 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:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+#, fuzzy
+msgid "Start?"
+msgstr "Gutangira"
+
+# officecfg/registry\schema\org\openoffice\Office\DataAccess.xcs:....FormSearchOptions.SearchPosition..end-of-field.text
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+#, fuzzy
+msgid "End?"
+msgstr "Impera"
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+
+#: parted/parted.c:890
+#, fuzzy
+msgid "An extended partition cannot hold a file system. Did you want mkpart?"
+msgstr "IDOSIYE"
+
+#: parted/parted.c:1050
+#, fuzzy
+msgid "Can't move an extended partition."
+msgstr "Kwimura Byongerewe..."
+
+#: parted/parted.c:1079
+#, fuzzy
+msgid "Can't move a partition onto itself. Try using resize, perhaps?"
+msgstr "Kwimura a ikoresha Ihindurangero"
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr ""
+
+# svx/source\gallery2\galtheme.src:RID_GALLERYSTR_THEME_FLAGS.text
+#: parted/parted.c:1228
+#, fuzzy, c-format
+msgid "Flags: %s\n"
+msgstr "Amabendera"
+
+# officecfg/registry\schema\org\openoffice\Office\Common.xcs:....Save.URL.FileSystem.text
+#: parted/parted.c:1229
+#, fuzzy, c-format
+msgid "File System: %s\n"
+msgstr "Idosiye ya sisitemu"
+
+#: parted/parted.c:1230
+msgid "Size: "
+msgstr ""
+
+#: parted/parted.c:1235
+#, fuzzy
+msgid "Minimum size: "
+msgstr "Ingano"
+
+#: parted/parted.c:1238
+#, fuzzy
+msgid "Maximum size: "
+msgstr "Ingano"
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+# desktop/source\app\ssodlg.src:DLG_SSOLOGIN.text
+#: parted/parted.c:1364
+#, fuzzy, c-format
+msgid "Disk %s: %s\n"
+msgstr "%s%s%s"
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:1383
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d. Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:1392
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "Izina:"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+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:1406 parted/parted.c:1409
+#, fuzzy
+msgid "Start"
+msgstr "Gutangira"
+
+# officecfg/registry\schema\org\openoffice\Office\DataAccess.xcs:....FormSearchOptions.SearchPosition..end-of-field.text
+#: parted/parted.c:1407 parted/parted.c:1410
+#, fuzzy
+msgid "End"
+msgstr "Impera"
+
+# starmath/source\smres.src:RID_TOOLBOXWINDOW.6.RID_SIZEXY.text
+#: parted/parted.c:1410
+#, fuzzy
+msgid "Size"
+msgstr "Kuringaniza"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr ""
+
+# officecfg/registry\schema\org\openoffice\Office\Common.xcs:....Save.URL.FileSystem.text
+#: parted/parted.c:1416
+#, fuzzy
+msgid "File system"
+msgstr "Idosiye ya sisitemu"
+
+#: parted/parted.c:1419
+#, fuzzy
+msgid "Name"
+msgstr "izina"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr "Amabendera"
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1624
+#, 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:1663
+#, fuzzy
+msgid "searching for file systems"
+msgstr "Ishakisha kugirango IDOSIYE"
+
+#: parted/parted.c:1877
+#, fuzzy
+msgid "New device?"
+msgstr "APAREYE"
+
+#: parted/parted.c:1902
+#, fuzzy
+msgid "Flag to Invert?"
+msgstr "Kuri Guhindura>>"
+
+#: parted/parted.c:1907
+#, fuzzy
+msgid "New state?"
+msgstr "Leta"
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "genzura"
+
+#: parted/parted.c:2096
+#, fuzzy
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr "Kugenzura... a Byoroheje Kugenzura... ku i"
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr ""
+
+#: parted/parted.c:2105
+#, fuzzy
+msgid ""
+"cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another "
+"partition"
+msgstr "Gukoporora Kuri"
+
+#: parted/parted.c:2111
+#, fuzzy
+msgid "help"
+msgstr "Ifashayobora"
+
+#: parted/parted.c:2114
+#, fuzzy
+msgid ""
+"help [COMMAND] print general help, or help on "
+"COMMAND"
+msgstr "Ifashayobora Rusange Ifashayobora Cyangwa Ifashayobora ku"
+
+#: parted/parted.c:2120
+msgid "mklabel"
+msgstr ""
+
+#: parted/parted.c:2120
+msgid "mktable"
+msgstr ""
+
+#: parted/parted.c:2123
+#, fuzzy
+msgid ""
+"mklabel,mktable LABEL-TYPE create a new disklabel (partition "
+"table)"
+msgstr "Kurema a Gishya imbonerahamwe#"
+
+#: parted/parted.c:2129
+msgid "mkfs"
+msgstr ""
+
+#: parted/parted.c:2132
+#, fuzzy
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr "Ubwoko a ku"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr ""
+
+#: parted/parted.c:2141
+#, fuzzy
+msgid "mkpart PART-TYPE [FS-TYPE] START END make a partition"
+msgstr "Ubwoko a"
+
+#: parted/parted.c:2147
+#, 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:2152
+msgid "mkpartfs"
+msgstr ""
+
+#: parted/parted.c:2155
+#, 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
+#: parted/parted.c:2161
+#, fuzzy
+msgid "move"
+msgstr "Kwimura"
+
+#: parted/parted.c:2164
+#, fuzzy
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "Kwimura Kwimura"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "izina"
+
+#: parted/parted.c:2172
+#, fuzzy
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr "Izina: Izina:"
+
+# #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-#
+# #-#-#-#-# dbaccess.pot (PACKAGE VERSION) #-#-#-#-#
+#: parted/parted.c:2177
+#, fuzzy
+msgid "print"
+msgstr "Gucapa"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr "Gucapa Kugaragaza i imbonerahamwe# Cyangwa a"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+#, fuzzy
+msgid "quit"
+msgstr "Kuvamo"
+
+#: parted/parted.c:2199
+#, fuzzy
+msgid "quit exit program"
+msgstr "Kuvamo Gusohoka Porogaramu"
+
+#: parted/parted.c:2204
+msgid "rescue"
+msgstr ""
+
+#: parted/parted.c:2207
+#, fuzzy
+msgid ""
+"rescue START END rescue a lost partition near START "
+"and END"
+msgstr "a Na"
+
+# starmath/source\smres.src:RID_TOOLBOXWINDOW.6.RID_SIZEXY.text
+#: parted/parted.c:2213
+#, fuzzy
+msgid "resize"
+msgstr "Kuringaniza"
+
+#: parted/parted.c:2216
+#, fuzzy
+msgid ""
+"resize NUMBER START END resize partition NUMBER and its "
+"file system"
+msgstr "a Na"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr ""
+
+#: parted/parted.c:2227
+#, fuzzy
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "Gusiba"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "guhitamo"
+
+#: parted/parted.c:2235
+#, fuzzy
+msgid "select DEVICE choose the device to edit"
+msgstr "Guhitamo Guhitamo i APAREYE Kuri Guhindura"
+
+#: parted/parted.c:2240
+#, fuzzy
+msgid "set"
+msgstr "Gushyiraho"
+
+#: parted/parted.c:2243
+#, fuzzy
+msgid ""
+"set NUMBER FLAG STATE change the FLAG on partition NUMBER"
+msgstr "Gushyiraho Guhindura>> a Ibendera ku"
+
+#: parted/parted.c:2249
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:2252
+msgid ""
+"toggle [NUMBER [FLAG]] toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:2258
+#, fuzzy
+msgid "unit"
+msgstr "Kuvamo"
+
+#: parted/parted.c:2261
+#, fuzzy
+msgid "unit UNIT set the default unit to UNIT"
+msgstr "Kuvamo Gusohoka Porogaramu"
+
+#: parted/parted.c:2266
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:2269
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:2273
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+#, fuzzy
+msgid "No device found"
+msgstr "APAREYE Byabonetse"
+
+#: parted/parted.c:2412
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:2450
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Kuri Kuvugurura NIBA"
+
+#: parted/ui.c:160
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:163
+#, 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:168
+#, 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:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:372
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:377
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:420
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:523
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:1024
+#, fuzzy
+msgid "Expecting a partition number."
+msgstr "a Umubare"
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr ""
+
+#: parted/ui.c:1053
+#, fuzzy
+msgid "Expecting a file system type."
+msgstr "a IDOSIYE Sisitemu Ubwoko"
+
+#: parted/ui.c:1060
+#, fuzzy, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "IDOSIYE Sisitemu Ubwoko"
+
+#: parted/ui.c:1080
+#, fuzzy
+msgid "Expecting a disk label type."
+msgstr "a Akarango Ubwoko"
+
+#: parted/ui.c:1178
+#, fuzzy
+msgid "Can't create any more partitions."
+msgstr "Kurema Birenzeho"
+
+#: parted/ui.c:1188
+#, fuzzy
+msgid "Expecting a partition type."
+msgstr "a Ubwoko"
+
+#: parted/ui.c:1315
+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:1316
+msgid "off"
+msgstr "bidakora"
+
+# crashrep/source\all\crashrep.lng:%OPTIONS_BUTTON%.text
+#: parted/ui.c:1431
+#, fuzzy
+msgid "OPTIONs:"
+msgstr "Amahitamo..."
+
+# sfx2/source\doc\docvor.src:DLG_ORGANIZE.BTN_EDIT.text
+#: parted/ui.c:1436
+#, fuzzy
+msgid "COMMANDs:"
+msgstr "Amabwiriza"
+
+#: parted/ui.c:1445
+#, fuzzy, c-format
+msgid "Using %s\n"
+msgstr "ikoresha"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#, fuzzy
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "kugirango Ukoresha:"
+
+#, 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 ""
+#~ "ingingo Gucapa i imbonerahamwe# Umubare ni Hanyuma Birenzeho Ibisobanuro "
+#~ "ni"
+
+#, 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 "Could not read geometry of %s - %s."
+#~ msgstr "OYA Gusoma Iyigamashusho Bya"
+
+#, 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 "File system has an invalid signature for a FAT file systems."
+#~ msgstr "Idosiye Sisitemu Sibyo Isinya kugirango a IDOSIYE"
+
+#, 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 create a partition at %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr "Kuri Kurema a ku kuyobora ni"
+
+#, 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 "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/parted-1.8.7/po/stamp-po b/parted-1.8.7/po/stamp-po
new file mode 100644
index 0000000..9788f70
--- /dev/null
+++ b/parted-1.8.7/po/stamp-po
@@ -0,0 +1 @@
+timestamp
diff --git a/parted-1.8.7/po/sv.gmo b/parted-1.8.7/po/sv.gmo
new file mode 100644
index 0000000..b9ce1a3
--- /dev/null
+++ b/parted-1.8.7/po/sv.gmo
Binary files differ
diff --git a/parted-1.8.7/po/sv.po b/parted-1.8.7/po/sv.po
new file mode 100644
index 0000000..2f55684
--- /dev/null
+++ b/parted-1.8.7/po/sv.po
@@ -0,0 +1,3378 @@
+# Swedish messages for parted
+# Copyright © 2001 Jörgen Tegnér.
+# Jörgen Tegnér <jorgen.tegner@telia.com>, 2001.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 1.4.18\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2007-05-09 17:02-0400\n"
+"PO-Revision-Date: 2001-08-26 23:09+0200\n"
+"Last-Translator: Jörgen Tegnér <jorgen.tegner@telia.com>\n"
+"Language-Team: Swedish <sv@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Okänd filsystemstyp."
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Ett fel uppstod när %s öppnades: %s"
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, 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:411 libparted/arch/linux.c:1431
+#, 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:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s under läsning på %s"
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Kan inte skriva till %s eftersom den endast är öppnad i läsläge."
+
+#: libparted/arch/beos.c:496 libparted/arch/linux.c:1570
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s under positionering för att skriva på %s"
+
+#: libparted/arch/beos.c:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s under skrivning på %s"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "För många dåliga sidor."
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr ""
+
+#: libparted/arch/gnu.c:114
+#, fuzzy
+msgid "Unable to probe store."
+msgstr "Kunde inte placera partitionen på jämn cylindergräns."
+
+#: libparted/arch/gnu.c:352
+#, 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 ""
+"Kärnan kunde inte läsa om partitionstabellen, så du måste starta om datorn "
+"innan du kan montera någon ändrad partition. Du måste också installera om "
+"startprogrammet 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 startprogrammet från den. Läs kapitel fyra "
+"i Parteds användarmanual för mer information."
+
+#: libparted/arch/gnu.c:369
+#, 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 ""
+"Kärnan kunde inte läsa om partitionstabellen på %s (%s). Det betyder att "
+"Linux 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:380 parted/parted.c:2443
+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 sektion fyra i "
+"Parteds användarmanual för mer information."
+
+#: libparted/arch/gnu.c:772
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr ""
+
+#: libparted/arch/linux.c:408
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Kunde inte ta status på enheten %s - %s."
+
+#: libparted/arch/linux.c:523
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:539
+#, c-format
+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 ""
+
+#: libparted/arch/linux.c:579
+#, fuzzy, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Kunde inte avgöra storleken på %s (%s)"
+
+#: libparted/arch/linux.c:668
+#, 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:677
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:698
+#, 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:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Ett fel uppstod vid initiering av SCSI-enheten %s - %s"
+
+#: libparted/arch/linux.c:928
+#, c-format
+msgid ""
+"The device %s has zero length, and can't possibly store a file system or "
+"partition table. Perhaps you selected the wrong device?"
+msgstr ""
+
+#: libparted/arch/linux.c:1032
+#, 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 ""
+"Kunde inte avgöra geometrin på filen/enheten. Du bör inte använda Parted om "
+"du inte är RIKTIGT säker på vad du gör!"
+
+#: libparted/arch/linux.c:1110
+msgid "DAC960 RAID controller"
+msgstr "Styrkort för DAC960 RAID"
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr "Styrkort för ATARAID"
+
+#: libparted/arch/linux.c:1140
+#, fuzzy
+msgid "I2O Controller"
+msgstr "Styrkort för ATARAID"
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr ""
+
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "Okänd"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "ped_device_new() Stöd saknas för den här enhetstypen"
+
+#: libparted/arch/linux.c:2083
+#, 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:2262
+#, 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 ""
+"Kärnan kunde inte läsa om partitionstabellen på %s (%s). Det betyder att "
+"Linux 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/linux.c:2368
+#, fuzzy, c-format
+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 ""
+"Kärnan kunde inte läsa om partitionstabellen på %s (%s). Det betyder att "
+"Linux inte vet nånting om de ändringar du gjort. Du bör starta om datorn "
+"innan du gör nånting med %s."
+
+#: libparted/cs/geom.c:162
+msgid "Can't have the end before the start!"
+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:366
+#, fuzzy, 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:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr ""
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "Kan inte öppna %s - okänd filallokeringstabell."
+
+#: libparted/disk.c:471
+#, fuzzy, c-format
+msgid ""
+"This libparted doesn't have write support for %s. Perhaps it was compiled "
+"read-only."
+msgstr "Kan inte skriva till %s eftersom den endast är öppnad i läsläge."
+
+#: libparted/disk.c:598
+#, fuzzy, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "Partitionen för liten för att hålla ett filsystem av typen FAT"
+
+#: libparted/disk.c:1075
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "Filallokeringstabeller för %s stödjer inte utökade partitioner."
+
+#: libparted/disk.c:1634
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr ""
+"Filallokeringstalbeller för %s stödjer inte logiska eller utökade "
+"partitioner."
+
+#: libparted/disk.c:1647
+#, fuzzy
+msgid "Too many primary partitions."
+msgstr "För många dåliga sidor."
+
+#: libparted/disk.c:1656
+#, 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:1680
+#, fuzzy, 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:1690
+#, fuzzy
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr ""
+"Kan inte låta en logisk partition växa ut utanför den utökade partitionen."
+
+#: libparted/disk.c:1715
+#, fuzzy, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr ""
+"Kan inte lägga till en logisk partition utanför en utökad partition på %s."
+
+#: libparted/disk.c:1725 libparted/disk.c:1779 libparted/disk.c:1945
+#, fuzzy
+msgid "Can't have overlapping partitions."
+msgstr "Kan inte kopiera till en överlappande partition."
+
+#: libparted/disk.c:1733
+#, fuzzy
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Kan inte lägga till en primär partition inuti en utökad."
+
+#: libparted/disk.c:2140
+msgid "metadata"
+msgstr "metadata"
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "ledigt"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "utökat"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "logiskt"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "primär"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "start"
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr "rot"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr "växlingsutrymme"
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "dold"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr ""
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2190
+#, fuzzy, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Okänd partitionsflagga, %d."
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "Information"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "Varning"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "Fel"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "Ödesdiger"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "Programfel"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr "Inte implementerat"
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr "Reparera"
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "Ja"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "Nej"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "OK"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "Försök igen"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "Ignorera"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "Avbryt"
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org containing at least the version (%s) and the following "
+"message: "
+msgstr ""
+"Skicka en felrapport med e-post till bug-parted@gnu.org, där du tar med "
+"versionsnumret (%s) och följande meddelande:"
+
+#: libparted/filesys.c:384
+msgid "Could not detect file system."
+msgstr "Kunde inte hitta något filsystem."
+
+#: libparted/filesys.c:395
+msgid "The file system is bigger than its volume!"
+msgstr ""
+
+#: libparted/filesys.c:403
+#, c-format
+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."
+
+#: libparted/filesys.c:445
+#, c-format
+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."
+
+#: libparted/filesys.c:505
+#, c-format
+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."
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr ""
+
+#: libparted/filesys.c:582
+#, fuzzy
+msgid "growing file system"
+msgstr "Okänd filsystemstyp."
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr "Kan inte kopiera till en överlappande partition."
+
+#: libparted/filesys.c:644
+#, fuzzy, c-format
+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 av typen %s är inte implementerat än. "
+"Stöd för att ändra storlek finns dock. 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."
+
+#: libparted/filesys.c:658
+#, c-format
+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."
+
+#: libparted/filesys.c:696
+#, c-format
+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."
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, fuzzy
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr "Filsystemet har en ogiltig signatur för filsystem av typen FAT."
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "testa"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, fuzzy
+msgid ""
+"The reiserfs file system passed a basic check. For a more comprehensive "
+"check, run reiserfsck --check."
+msgstr ""
+"Filsystemet (e2fs) klarade ett grundläggande test. För ett mer genomgående "
+"test, använd programmet e2fsck."
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, fuzzy
+msgid "Sorry, can't move the start of reiserfs partitions yet."
+msgstr "Kan inte flytta en ext2-partitions början ännu!"
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+#, fuzzy
+msgid "shrinking"
+msgstr "Varning"
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "Varning"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, c-format
+msgid "Device is too small for %lu blocks."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "Stöd för att skapa filsystem av typ %s är inte implementerat än."
+
+#: libparted/labels/aix.c:148
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "Stöd för att skapa filsystem av typ %s är inte implementerat än."
+
+#: libparted/labels/aix.c:161
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr "Stöd för att skapa filsystem av typ %s är inte implementerat än."
+
+#: libparted/labels/aix.c:171
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr "Stöd för att skapa filsystem av typ %s är inte implementerat än."
+
+#: libparted/labels/aix.c:189
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr "Stöd för att skapa filsystem av typ %s är inte implementerat än."
+
+#: libparted/labels/aix.c:199
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr "Stöd för att skapa filsystem av typ %s är inte implementerat än."
+
+#: libparted/labels/bsd.c:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+#, fuzzy
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Kunde inte placera partitionen på jämn cylindergräns."
+
+#: libparted/labels/bsd.c:526
+#, fuzzy
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Kan inte öppna %s - okänd filallokeringstabell."
+
+#: libparted/labels/dasd.c:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "Kunde inte avgöra storleken på %s (%s)"
+
+#: libparted/labels/dasd.c:781
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Kan inte öppna %s - okänd filallokeringstabell."
+
+#: libparted/labels/dos.c:827
+#, fuzzy, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Ogiltig partitionstabell på %s - felaktig signatur %x"
+
+#: libparted/labels/dos.c:855
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Ogiltig partitionstabell - rekursiv partition på %s."
+
+#: libparted/labels/dos.c:1318
+#, fuzzy
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "Ext2-partitioner kan inte gömmas i filsystem av typen msdos."
+
+#: libparted/labels/dos.c:1958
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+#: libparted/labels/dvh.c:190
+#, fuzzy, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr ""
+"Kan inte ändra storlek på en utökad partition för att exkludera en logisk "
+"partition."
+
+#: libparted/labels/dvh.c:313
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+
+#: libparted/labels/dvh.c:616
+#, fuzzy
+msgid "Only primary partitions can be root partitions."
+msgstr "Kan inte lägga till en primär partition inuti en utökad."
+
+#: libparted/labels/dvh.c:630
+#, fuzzy
+msgid "Only primary partitions can be swap partitions."
+msgstr "Kan inte lägga till en primär partition inuti en utökad."
+
+#: libparted/labels/dvh.c:644
+msgid "Only logical partitions can be a boot file."
+msgstr ""
+
+#: libparted/labels/dvh.c:721
+msgid "Only logical partitions (boot files) have a name."
+msgstr ""
+
+#: libparted/labels/dvh.c:812
+#, fuzzy
+msgid "Too many primary partitions"
+msgstr "För många dåliga sidor."
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "%s under skrivning på %s"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, fuzzy, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr "%s %s %s"
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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:648
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+msgstr ""
+
+#: libparted/labels/gpt.c:698
+#, 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:827
+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:862
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+
+#: libparted/labels/gpt.c:870
+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/mac.c:181
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Ogiltig signatur %x för en filallokeringstabell för Mac."
+
+#: libparted/labels/mac.c:226
+msgid "Partition map has no partition map entry!"
+msgstr "Partitionstabellen saknar uppgift om sig själv!"
+
+#: libparted/labels/mac.c:273
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s är för liten för en filallokeringstabell för Mac!"
+
+#: libparted/labels/mac.c:532
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Partition %d har en ogiltig signatur %x."
+
+#: libparted/labels/mac.c:550
+#, 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:580
+#, fuzzy
+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:597
+#, fuzzy
+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:611
+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:622
+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:675
+#, 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:688
+#, 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:736
+msgid "No valid partition map found."
+msgstr "Ingen giltig partitionstabell kunde hittas."
+
+#: libparted/labels/mac.c:795
+#, 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:822
+#, fuzzy
+msgid "Weird! There are 2 partitions map entries!"
+msgstr "Konstigt - två poster i partitionstabellen!"
+
+#: libparted/labels/mac.c:1347
+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:1443
+#, fuzzy
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr ""
+"Kan inte lägga till en till primär partition - partitionstabellen är för "
+"liten."
+
+#: libparted/labels/pc98.c:354
+#, fuzzy, c-format
+msgid "Invalid partition table on %s."
+msgstr "Ogiltig partitionstabell på %s"
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, fuzzy, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries. This is still "
+"unsupported."
+msgstr ""
+"Partitionen %d ligger inte på jämna cylindergränser. Måste lägga till stöd "
+"för detta."
+
+#: libparted/labels/pc98.c:791
+msgid "Can't add another partition."
+msgstr "Kan inte lägga till ännu en partition."
+
+#: libparted/labels/rdb.c:162
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:497
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:600
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:697
+#, fuzzy, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "Kunde inte placera partitionen på jämn cylindergräns."
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:740
+#, fuzzy, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Kan inte avgöra om partitionen är monterad."
+
+#: libparted/labels/rdb.c:1069
+#, fuzzy
+msgid "Unable to allocate a partition number."
+msgstr "Kunde inte placera partitionen på jämn cylindergräns."
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr ""
+
+#: libparted/labels/sun.c:266
+#, 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:288
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr ""
+
+#: libparted/labels/sun.c:442
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:737
+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:752
+msgid "Sun disk label is full."
+msgstr ""
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr "Slut på minne."
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, fuzzy, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "Kan inte skapa en partition utanför enheten."
+
+#: libparted/unit.c:527
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "Kunde inte placera partitionen på jämn cylindergräns."
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, fuzzy, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "Kunde inte placera partitionen på jämn cylindergräns."
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:72
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s under skrivning på %s"
+
+#: libparted/fs/amiga/amiga.c:278
+#, fuzzy, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "Kunde inte placera partitionen på jämn cylindergräns."
+
+#: libparted/fs/amiga/amiga.c:289
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:318
+#, fuzzy, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "Kunde inte placera partitionen på jämn cylindergräns."
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr "Inkonsistenta grupphandtag!"
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+#, fuzzy
+msgid "File system full!"
+msgstr "Filsystemet är fullt!"
+
+#: libparted/fs/ext2/ext2.c:686
+#, fuzzy
+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?"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+#, fuzzy
+msgid "File system has errors! You should run e2fsck."
+msgstr "Filsystemet innehåller fel! Kör e2fsck först."
+
+#: libparted/fs/ext2/ext2.c:711
+#, fuzzy
+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! Använd e2fsck."
+
+#: libparted/fs/ext2/ext2.c:731
+#, fuzzy
+msgid "File system has an incompatible feature enabled."
+msgstr "Filsystemet har en inkompatibel finess aktiverad"
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr "Kunde inte reservera buffercache"
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+#, fuzzy
+msgid ""
+"Found an inode with a incorrect link count. Better go run e2fsck first!"
+msgstr "Hittade en inode med felaktiga antal länkar. Kör e2fsck först."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr "Det finns inte tillräckligt många fria inoder!"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+#, fuzzy
+msgid "File system is too full to remove a group!"
+msgstr "Filsystemet är för upptaget för att ta bort en grupp!"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+#, fuzzy
+msgid "File system has too many allocated inodes to remove a group!"
+msgstr "Filsystemet har för många reserverade inoder för att ta bort en grupp!"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, fuzzy, c-format
+msgid "Your file system is too full to resize it to %i blocks. Sorry."
+msgstr "Filsystemet är för upptaget för att ändra dess storlek till %i block."
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, fuzzy, c-format
+msgid ""
+"Your file system has too many occupied inodes to resize it to %i blocks. "
+"Sorry."
+msgstr ""
+"Filsystemet har för många upptagna inoder för att ändra dess storlek till %i "
+"block."
+
+#: libparted/fs/ext2/ext2_resize.c:666
+#, fuzzy
+msgid "File system was not cleanly unmounted! You should run e2fsck."
+msgstr "Filsystemet har inte avmonterats på rätt sätt! Använd e2fsck."
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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 ""
+
+#: libparted/fs/ext2/ext2_resize.c:691
+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 ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+#, fuzzy
+msgid "Cross-linked blocks found! Better go run e2fsck first!"
+msgstr "Korslänkade block hittades! Kör e2fsck först!"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, fuzzy, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "Block %i har ingen referens? Konstigt"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, fuzzy, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "Block %i borde ha markerats!"
+
+#: libparted/fs/ext2/interface.c:186
+#, fuzzy
+msgid ""
+"The ext2 file system passed a basic check. For a more comprehensive check, "
+"use the e2fsck program."
+msgstr ""
+"Filsystemet (e2fs) klarade ett grundläggande test. För ett mer genomgående "
+"test, använd programmet e2fsck."
+
+#: libparted/fs/ext2/interface.c:203
+msgid "Sorry, can't move the start of ext2 partitions yet!"
+msgstr "Kan inte flytta en ext2-partitions början ännu!"
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr "Kunde inte rensa buffercachen!"
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr ""
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr ""
+
+#: libparted/fs/fat/calc.c:135
+#, fuzzy, c-format
+msgid ""
+"You need %s of free disk space to shrink this partition to this size. "
+"Currently, only %s is free."
+msgstr ""
+"Du behöver %dM ledigt utrymme för att minska storleken på den här "
+"partitionen till angiven storlek. (det finns endast %dM ledigt)"
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+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"
+
+#: libparted/fs/fat/fat.c:308
+#, fuzzy, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr "Partitionen för liten för att hålla ett filsystem av typen FAT"
+
+#: libparted/fs/fat/fat.c:474
+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."
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr "Det finns inga möjliga kombinationer för den här sortens FAT."
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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)."
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:874
+#, fuzzy
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes. FAT "
+"support will be disabled."
+msgstr ""
+"GNU Parted kompilerades felaktigt: FAT's startsektor skall vara 512 byte. "
+"Stödet för FAT kommer att blockeras."
+
+#: libparted/fs/fat/resize.c:159
+#, 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 ""
+"Det finns inte tillräckligt med utrymme för alla filer i rotkatalogen. Välj "
+"antingen att avbryta, eller ignorera och förlora filerna."
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr "Ett fel uppstod vid skrivning till rotkatalogen."
+
+#: libparted/fs/fat/resize.c:489
+#, fuzzy
+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 kommer du inte att få några "
+"bekymmer."
+
+#: libparted/fs/fat/resize.c:492
+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 startprogram. Om du gör det "
+"bör du studera Parteds manual (eller din distributions manual)."
+
+#: libparted/fs/fat/resize.c:500
+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."
+
+#: libparted/fs/fat/resize.c:504
+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 startprogram. 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."
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr "Vill du använda FAT32?"
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: libparted/fs/fat/resize.c:551
+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."
+
+#: libparted/fs/fat/resize.c:567
+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."
+
+#: libparted/fs/fat/resize.c:580
+#, fuzzy
+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!"
+
+#: 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
+#, fuzzy
+msgid "File system has an invalid cluster size for a FAT file system."
+msgstr ""
+"Filsystemet har en ogiltig sektorstorlek för ett filsystem av typen FAT."
+
+#: 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 ett ogiltigt antal reserverade sektorer för ett filsystem av "
+"typen FAT."
+
+#: libparted/fs/fat/bootsector.c:85
+#, fuzzy
+msgid "File system has an invalid number of FATs."
+msgstr "Filsystemet har ett felaktigt antal filallokeringstabeller."
+
+#: libparted/fs/fat/bootsector.c:139
+#, 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:164
+#, 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:213
+msgid "FAT boot sector says logical sector size is 0. This is weird. "
+msgstr ""
+"FAT:s startsektor menar att den logiska sektorstorleken är 0. Märkligt."
+
+#: libparted/fs/fat/bootsector.c:219
+msgid "FAT boot sector says there are no FAT tables. This is weird. "
+msgstr "FAT:s startsektor menar att det saknas FAT-tabeller. Märkligt."
+
+#: libparted/fs/fat/bootsector.c:225
+msgid "FAT boot sector says clusters are 0 sectors. This is weird. "
+msgstr ""
+"FAT:s startsektor menar att ett kluster består av 0 sektorer. Märkligt."
+
+#: libparted/fs/fat/bootsector.c:235
+#, fuzzy
+msgid "File system is FAT12, which is unsupported."
+msgstr "Filsystemet är FAT12, som inte stöds."
+
+#: libparted/fs/fat/bootsector.c:411
+#, 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/fat/count.c:152
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:174
+#, fuzzy, c-format
+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 för %s. "
+"Du bör köra dosfsck eller scandisk."
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:203
+#, fuzzy, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr "%s är %dk, men den har %d kluster (%dk)."
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+msgid ""
+"The file %s is marked as a system file. This means moving it could cause "
+"some programs to stop working."
+msgstr ""
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:269
+#, fuzzy, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "fat_table_set: kluster %ld ligger utanför filsystemet"
+
+#: libparted/fs/fat/table.c:301
+#, fuzzy, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "fat_table_get: kluster %ld ligger utanför filsystemet"
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "fat_table_alloc_cluster: inga lediga kluster"
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, 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:318
+#, 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:358
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Okänd signatur för Linux växlingsutrymme \\\"%10s\\\"."
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr "För många dåliga sidor."
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr ""
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr ""
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+msgid "Could not update the extent cache for HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+msgid "Trying to write HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+msgid "Could not update the extent cache for HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+msgid "Trying to write HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:320
+#, fuzzy
+msgid "writing HFS Master Directory Block"
+msgstr "Ett fel uppstod vid skrivning till rotkatalogen."
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:720
+#, fuzzy
+msgid "Error while writing the allocation file."
+msgstr "Ett fel uppstod vid skrivning till rotkatalogen."
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:904
+msgid ""
+"It seems there is an error in the HFS wrapper: the bad blocks file doesn't "
+"contain the embedded HFS+ volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:998
+msgid "shrinking HFS wrapper"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+msgid ""
+"This is not a real %s check. This is going to extract special low level "
+"files for debugging purposes."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+msgid ""
+"Invalid size of a transaction block while replaying the journal (%i bytes)."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:260
+msgid ""
+"Journal stored outside of the volume are not supported. Try to desactivate "
+"the journal and run Parted again."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:271
+#, 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"
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:302
+msgid "Journal size mismatch between journal info block and journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:314
+#, 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"
+
+#: libparted/fs/hfs/journal.c:323
+msgid ""
+"The sector size stored in the journal is not 512 bytes. Parted only "
+"supports 512 bytes length sectors."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:353
+msgid ""
+"The journal is not empty. Parted must replay the transactions before "
+"opening the file system. This will modify the file system."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:381
+msgid ""
+"The volume header or the master directory block has changed while replaying "
+"the journal. You should restart Parted."
+msgstr ""
+
+#: libparted/fs/hfs/probe.c:51
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to %"
+"d bytes."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+msgid ""
+"A reference to an extent comes from a place it should not. You should check "
+"the file system!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:475
+msgid "This HFS volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+msgid ""
+"The extents overflow file should not contain its own extents! You should "
+"check the file system."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+#, fuzzy
+msgid "Could not cache the file system in memory."
+msgstr "Kunde inte hitta något filsystem."
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:619
+msgid "This HFS+ volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr "visa den här hjälptexten"
+
+#: parted/parted.c:95
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr "frågar aldrig användaren om alternativ"
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr "visar versionen"
+
+#: parted/parted.c:111
+#, 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 ""
+"UNDRE är partitionsnumret som Linux använder. På filsystem av typ MSDOS är "
+"de primära partitionerna numrerade från ett till fyra, och de logiska "
+"partitionerna från fem och uppåt.\n"
+
+#: parted/parted.c:114
+msgid "LABEL-TYPE is one of: "
+msgstr "PART-TYP är en av:"
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr "FLAGGA är en av: "
+
+#: parted/parted.c:116
+#, fuzzy
+msgid "UNIT is one of: "
+msgstr "FLAGGA är en av: "
+
+#: parted/parted.c:117
+#, fuzzy
+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:119
+msgid "FS-TYPE is one of: "
+msgstr "FS-TYP är en av: "
+
+#: parted/parted.c:120
+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:123
+msgid "STATE is one of: on, off\n"
+msgstr "TILLSTÅND är ett av: på, av\n"
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "ENHET är vanligen /dev/hda eller /dev/sda\n"
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr "NAMN är vilket ord du vill\n"
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr ""
+
+#: parted/parted.c:130
+#, 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 ""
+"Upphovsrätt © 1998, 1999, 2000, 2001 Free Software Foundation, Inc.\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 är fri programvara. Du kan distribuera det och/eller "
+"modifiera\n"
+"det under villkoren i GNU General Public License, publicerad av Free "
+"Software\n"
+"Foundation, antingen version 2 eller (om du så vill) någon senare version.\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"
+"Du bör ha fått en kopia av GNU General Public License tillsammans med detta\n"
+"program. Om inte, skriv till \n"
+"Free Software Foundation, Inc., 59 Temple Place- Suite 330,\n"
+"Boston, MA 02111-1307, USA.\n"
+
+#: parted/parted.c:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr ""
+
+#: parted/parted.c:195
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:211
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Partitionen på %s är i bruk."
+
+#: parted/parted.c:223
+msgid ""
+"The existing file system will be destroyed and all data on the partition "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+#, fuzzy
+msgid "Partition number?"
+msgstr "Partitionen är i bruk."
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr ""
+
+#: parted/parted.c:504
+#, fuzzy
+msgid "Source partition number?"
+msgstr "Källpartitionen finns inte."
+
+#: parted/parted.c:509
+#, fuzzy
+msgid "Can't copy an extended partition."
+msgstr "Kan inte kopiera utökade partitioner."
+
+#: parted/parted.c:515
+#, fuzzy
+msgid "Destination partition number?"
+msgstr "Målpartitionen är i bruk."
+
+#: parted/parted.c:615
+#, fuzzy
+msgid "New disk label type?"
+msgstr "Typ av filsystem: %s\n"
+
+#: parted/parted.c:656
+#, fuzzy
+msgid "File system?"
+msgstr "Filsystem "
+
+#: parted/parted.c:707 parted/parted.c:878
+#, fuzzy
+msgid "Partition type?"
+msgstr "Partitionen finns inte."
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+#, fuzzy
+msgid "Partition name?"
+msgstr "Partitionen finns inte."
+
+#: parted/parted.c:722 parted/parted.c:895
+#, fuzzy
+msgid "File system type?"
+msgstr "Filsystem "
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr ""
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr ""
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+
+#: parted/parted.c:890
+msgid "An extended partition cannot hold a file system. Did you want mkpart?"
+msgstr ""
+
+#: parted/parted.c:1050
+#, fuzzy
+msgid "Can't move an extended partition."
+msgstr "Kan inte flytta utökade partitioner."
+
+#: parted/parted.c:1079
+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."
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr ""
+
+#: parted/parted.c:1228
+#, fuzzy, c-format
+msgid "Flags: %s\n"
+msgstr "Flaggor"
+
+#: parted/parted.c:1229
+#, fuzzy, c-format
+msgid "File System: %s\n"
+msgstr "Filsystem "
+
+#: parted/parted.c:1230
+msgid "Size: "
+msgstr ""
+
+#: parted/parted.c:1235
+msgid "Minimum size: "
+msgstr ""
+
+#: parted/parted.c:1238
+msgid "Maximum size: "
+msgstr ""
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:1364
+#, fuzzy, c-format
+msgid "Disk %s: %s\n"
+msgstr "%s %s %s"
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:1383
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d. Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:1392
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "Ogiltig partitionstabell på %s"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr ""
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Start"
+msgstr ""
+
+#: parted/parted.c:1407 parted/parted.c:1410
+msgid "End"
+msgstr ""
+
+#: parted/parted.c:1410
+#, fuzzy
+msgid "Size"
+msgstr "ändra_storlek"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr ""
+
+#: parted/parted.c:1416
+#, fuzzy
+msgid "File system"
+msgstr "Filsystem "
+
+#: parted/parted.c:1419
+#, fuzzy
+msgid "Name"
+msgstr "namn"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr "Flaggor"
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1624
+#, 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:1663
+msgid "searching for file systems"
+msgstr ""
+
+#: parted/parted.c:1877
+#, fuzzy
+msgid "New device?"
+msgstr "Ingen enhet hittades"
+
+#: parted/parted.c:1902
+msgid "Flag to Invert?"
+msgstr ""
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr ""
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "testa"
+
+#: parted/parted.c:2096
+#, fuzzy
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr "testa UNDRE gör en enkel test av filsystemet"
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "kopiera"
+
+#: parted/parted.c:2105
+#, fuzzy
+msgid ""
+"cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another "
+"partition"
+msgstr ""
+"kopiera [FRÅN ENHET] FRÅN-UNDRE TILL-UNDRE kopiera ett filsystem till "
+"ett annat"
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "hjälp"
+
+#: parted/parted.c:2114
+#, fuzzy
+msgid ""
+"help [COMMAND] print general help, or help on "
+"COMMAND"
+msgstr ""
+"hjälp [KOMMANDO] skriver generell hjälp, eller speciell hjälp "
+"för KOMMANDO"
+
+#: parted/parted.c:2120
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:2120
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:2123
+#, fuzzy
+msgid ""
+"mklabel,mktable LABEL-TYPE create a new disklabel (partition "
+"table)"
+msgstr "mklabel PART-TYP skapa en ny partitionstabell"
+
+#: parted/parted.c:2129
+msgid "mkfs"
+msgstr "mkfs"
+
+#: parted/parted.c:2132
+#, fuzzy
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+"mkfs UNDRE TYP skapa ett filsystem av typen TYP på partition UNDRE"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:2141
+#, fuzzy
+msgid "mkpart PART-TYPE [FS-TYPE] START END make a partition"
+msgstr "mkpart PARTITIONSTYP [TYP] BÖRJAN SLUT skapa en partition"
+
+#: parted/parted.c:2147
+#, 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 skapar en partition utan att skapa ett nytt filsystem på den. TYP "
+"måste vara angiven för datapartitioner (till skillnad mot utökade "
+"partitioner). Det här kommandot är användbart om du tar bort en partition av "
+"misstag.\n"
+
+#: parted/parted.c:2152
+msgid "mkpartfs"
+msgstr "mkpartfs"
+
+#: parted/parted.c:2155
+#, fuzzy
+msgid ""
+"mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system"
+msgstr ""
+"mkpartfs PARTITIONSTYP FILSYSTEMSTYP BÖRJAN SLUT gör en partition med ett "
+"filsystem"
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr "flytta"
+
+#: parted/parted.c:2164
+#, fuzzy
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "flytta UNDRE START [SLUT] flytta partition UNDRE"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "namn"
+
+#: parted/parted.c:2172
+#, fuzzy
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr "namn UNDRE NAMN benämn partition UNDRE NAMN"
+
+#: parted/parted.c:2177
+msgid "print"
+msgstr "skriv"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr "skriv visa partitionstabellen"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "avsluta"
+
+#: parted/parted.c:2199
+#, fuzzy
+msgid "quit exit program"
+msgstr "avsluta avsluta programmet"
+
+#: parted/parted.c:2204
+#, fuzzy
+msgid "rescue"
+msgstr "ändra_storlek"
+
+#: parted/parted.c:2207
+#, fuzzy
+msgid ""
+"rescue START END rescue a lost partition near START "
+"and END"
+msgstr "skriv visa partitionstabellen"
+
+#: parted/parted.c:2213
+msgid "resize"
+msgstr "ändra_storlek"
+
+#: parted/parted.c:2216
+#, fuzzy
+msgid ""
+"resize NUMBER START END resize partition NUMBER and its "
+"file system"
+msgstr ""
+"ändra_storlek UNDRE START SLUT ändra storlek på filsystemet på partition "
+"UNDRE"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "ta_bort"
+
+#: parted/parted.c:2227
+#, fuzzy
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "ta_bort UNDRE ta bort partition UNDRE"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "välj"
+
+#: parted/parted.c:2235
+#, fuzzy
+msgid "select DEVICE choose the device to edit"
+msgstr "välj ENHET välj enhet att förändra"
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr "sätt"
+
+#: parted/parted.c:2243
+#, fuzzy
+msgid ""
+"set NUMBER FLAG STATE change the FLAG on partition NUMBER"
+msgstr "sätt UNDRE FLAGGA TILLSTÅND ändra en flagga på partition UNDRE"
+
+#: parted/parted.c:2249
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:2252
+msgid ""
+"toggle [NUMBER [FLAG]] toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:2258
+#, fuzzy
+msgid "unit"
+msgstr "avsluta"
+
+#: parted/parted.c:2261
+#, fuzzy
+msgid "unit UNIT set the default unit to UNIT"
+msgstr "skriv visa partitionstabellen"
+
+#: parted/parted.c:2266
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:2269
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:2273
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "Ingen enhet hittades"
+
+#: parted/parted.c:2412
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:2450
+msgid "You may need to update /etc/fstab.\n"
+msgstr ""
+
+#: parted/ui.c:160
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:163
+#, 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 ""
+"Användning: parted [FLAGGA]... [ENHET [KOMMANDO [PARAMETRAR]...]...]\n"
+"Kör KOMMANDO med PARAMETRARNA på ENHET. Om inga KOMMANDON anges körs\n"
+"programmet i interaktivt läge.\n"
+
+#: parted/ui.c:168
+#, 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:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:372
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:377
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:420
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:523
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:1024
+#, fuzzy
+msgid "Expecting a partition number."
+msgstr "Målpartitionen är i bruk."
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "Partitionen finns inte."
+
+#: parted/ui.c:1053
+#, fuzzy
+msgid "Expecting a file system type."
+msgstr "Okänd filsystemstyp."
+
+#: parted/ui.c:1060
+#, fuzzy, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Okänd filsystemstyp."
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr ""
+
+#: parted/ui.c:1178
+#, fuzzy
+msgid "Can't create any more partitions."
+msgstr "Kan inte lägga till ännu en partition."
+
+#: parted/ui.c:1188
+#, fuzzy
+msgid "Expecting a partition type."
+msgstr "Målpartitionen finns inte."
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr "på"
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr ""
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "FLAGGOR:"
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "KOMMANDON:"
+
+#: parted/ui.c:1445
+#, fuzzy, c-format
+msgid "Using %s\n"
+msgstr ""
+"\n"
+"Använder %s\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "där så är nödvändigt, frågar användaren om alternativ"
+
+#~ 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 "Could not read geometry of %s - %s."
+#~ msgstr "Kunde inte läsa geometrin på %s - %s."
+
+#~ msgid "Device %s has dodgey geometry."
+#~ msgstr "Enheten %s har märklig geometri."
+
+#~ msgid "unknown"
+#~ msgstr "okänd"
+
+# ??
+#~ msgid "Unknown SCSI"
+#~ msgstr "Okänd SCSI"
+
+#~ msgid "Device %s is neither a SCSI nor IDE drive."
+#~ msgstr "Enheten %s är varken en SCSI- eller IDE-enhet."
+
+#~ 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 ""
+#~ "Partitionstabellen på %s är inte konsistent. Det kan finns många skäl "
+#~ "till detta. Det mest troliga skälet är att Linux läste fel "
+#~ "geometriinformation för %s i BIOS. GNU Parted misstänker att den riktiga "
+#~ "geometrin bör vara %d/%d/%d (inte %d/%d/%d). Du bör först kontrollera "
+#~ "ditt BIOS eftersom det kan vara fel. Du kan informera Linux genom att "
+#~ "lägga till parametern %s=%d,%d,%d på kommandoraden. Mer information finns "
+#~ "i manualerna för LILO eller GRUB. Om du tror att Parteds föreslagna "
+#~ "geometri är riktig kan du välja Ignorera för att fortsätta (och ordna "
+#~ "till Linux senare). Annars, välj Avbryt (och ordna till Linux och/eller "
+#~ "BIOS nu)."
+
+#~ 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."
+#~ msgstr ""
+#~ "Partitionstabellen på %s är inte konsistent. Det kan finnas flera "
+#~ "anledningar till det. Ofta är anledningen att Linux har läst "
+#~ "geometriinformationen i BIOS felaktigt. Det verkar dock inte vara "
+#~ "problemet här. Du kan ignorera felet, men det kan uppstå problem (som kan "
+#~ "åtgärdas) med vissa startprogram."
+
+#~ 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 ""
+#~ "Kunde inte lägga partitionen på jämn cylindergräns. Det betyder ofta att "
+#~ "ett annat partitionsverktyg skrev en ogiltig partitionstabell, beroende "
+#~ "på felaktig geomtriinformation från ditt BIOS. Du kan ignorera felet, men "
+#~ "det kan uppstå problem (som kan åtgärdas) med vissa startprogram."
+
+#~ msgid "Can't set non-Linux partitions as a root device."
+#~ msgstr "Kan inte sätta andra partitioner än Linux egna som rotenhet."
+
+#~ msgid "Can't set non-Linux partitions as a swap device."
+#~ msgstr ""
+#~ "Kan inte sätta partition som inte finns för Linux som växlingsenhet."
+
+#~ msgid "No get_resize_constraint for %s!"
+#~ msgstr "get_resize_constraint saknas för %s!"
+
+#~ msgid "The %s file system code doesn't support %s disk labels."
+#~ msgstr "Koden för filsystemet %s stöder inte filallokeringstabeller för %s."
+
+#~ msgid "Creating new %s disklabels is not implemented yet."
+#~ msgstr ""
+#~ "Stöd för att skapa nya partitionstabeller av typen %s är inte "
+#~ "implementerat än."
+
+#~ msgid "The code to write the partition table hasn't been written for %s yet"
+#~ msgstr ""
+#~ "Stöd för att skriva partitionstabell för %s är inte implementerat än."
+
+#~ msgid "Error reading %s (%s) to determine if partition is mounted."
+#~ msgstr ""
+#~ "Ett fel uppstod när %s (%s) skulle läsas för att avgöra om partitionen är "
+#~ "monterad."
+
+#~ msgid "The new partition overlaps with another partition."
+#~ msgstr "Den nya partitionen överlappar med en annan."
+
+#~ msgid "Can't grow a partition onto used space."
+#~ msgstr "Kan inte låta en partition växa ut på använt utrymme."
+
+#~ msgid "Attempt to read sectors %ld-%ld outside of partition on %s"
+#~ msgstr "Försökte läsa sektorerna %ld-%ld utanför partitionen på %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 ""
+#~ "Det här filsystemet (ext2) har en ganska konstig uppläggning! Använd "
+#~ "dumpe2fs på filsystemet och skicka resultatet till <buytenh@gnu.org>. "
+#~ "Storleken kommer inte att ändras."
+
+#~ msgid "Insane! %d clusters!"
+#~ msgstr "Konstigt! %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 ""
+#~ "Filsystem kommer att lbi för stort för FAT16, så FAT32 kommer att "
+#~ "användas. Det är inte kompatibelt med MS-DOS, tidiga versioner av MS-"
+#~ "Windows 95 eller Windows NT. Om du använder dessa operativsystem, välj "
+#~ "avbryt och skapa en mindre partition. Om du endast använder Linux, BSD, "
+#~ "MS Windows 98 och/eller MS Windows 95 B, välj OK."
+
+#~ msgid "Weird: fat_calc_sizes() failed for FAT32!"
+#~ msgstr "Konstigt: fat_calc_sizes() misslyckades för 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 ""
+#~ "Vill du använda FAT32 som filsystem? Det är mycket mer effektivt med "
+#~ "skivutrymmet, men det är inte kompatibelt med tidiga versioner av Windows "
+#~ "95 eller Windows NT. Välj bara JA om du endast använder Linux, BSD, MS "
+#~ "Windows 98 och/eller 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 ""
+#~ "Filsystemet har inte en storlek som Windows gillar. Antalet kluster är %d "
+#~ "(%d förväntas); storleken på FAT:arna är %d sektorer (%d förväntas)."
+
+#~ msgid "File system has an invalid signature for a FAT file systems."
+#~ msgstr "Filsystemet har en ogiltig signatur för filsystem av typen FAT."
+
+#~ msgid ""
+#~ "Partition size (%ld sectors) and filesystem size (%ld sectors) do not "
+#~ "match."
+#~ msgstr ""
+#~ "Partitionens storlek (%ld sektorer) och filsystemets storlek (%ld "
+#~ "sektorer) stämmer inte överens."
+
+#~ 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 ""
+#~ "Filallokeringstabellerna är inte stora nog för att beskriva alla kluster! "
+#~ "Varje tabell är %d sektorer. Det finns %d kluster, vilket innebär att "
+#~ "varje tabell borde vara %d sektorer. Detta är RIKTIGT konstigt. Skriv ett "
+#~ "brev till oss: 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 ""
+#~ "Den här växlingspartitionen är inte kompatibel med Linux version 2.1.117 "
+#~ "och tidigare. Använd en mindre partition (maximal storlek 128 MB) om du "
+#~ "använder äldre versioner av Linux."
+
+#~ msgid "Linux-swap partitions can not be hidden on msdos disk labels."
+#~ msgstr ""
+#~ "Linux växlingsenhet kan inte döljas på ett filsystem av typen msdos."
+
+#~ msgid "Linux-swap partitions can not be bootable on pc98 disk labels."
+#~ msgstr "Linux växlingsenhet är inte startbar på pc98."
+
+#~ msgid "HFS partitions can't be hidden on msdos disk labels."
+#~ msgstr "Partitioner av typ HFS kan inte gömmas på filsystem av typen msdos."
+
+#~ msgid "START and END are in megabytes\n"
+#~ msgstr "BÖRJAN och SLUT anges i megabyte\n"
+
+#~ msgid "Disk geometry for %s: 0.000-%.3f megabytes\n"
+#~ msgstr "Geometri på %s: 0.000-%.3f megabyte\n"
+
+#~ msgid "Minor Start End "
+#~ msgstr "Minor Start Slut "
+
+#~ msgid "Type "
+#~ msgstr "Typ "
+
+#~ msgid "Name "
+#~ msgstr "Namn "
+
+#~ 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 hittat ett fel i GNU Parted. Skicka en felrapport till bug-"
+#~ "parted@gnu.org innehållande versionsnummer (%s) och följande meddelande:\n"
+
+#~ msgid ""
+#~ "The operating system thinks the geometry on %s is %d/%d/%d. Therefore, "
+#~ "cylinder 1024 ends at %.3fM. You should check that this matches the BIOS "
+#~ "geometry before using this program."
+#~ msgstr ""
+#~ "Operativsystemet tror att %s geometri är %d/%d/%d. Därför slutar cylinder "
+#~ "1024 på %.3fM. Du bör kontrollera att detta stämmer överens med "
+#~ "informationen i BIOS innan du använder programmet."
+
+#~ 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 ""
+#~ "Operativsystemet tror att %s geomtri är %d/%d/%d. Du bör kontrollera att "
+#~ "detta stämmer överens med informationen i BIOS innan du använder "
+#~ "programmet."
diff --git a/parted-1.8.7/po/tr.gmo b/parted-1.8.7/po/tr.gmo
new file mode 100644
index 0000000..b6d9e78
--- /dev/null
+++ b/parted-1.8.7/po/tr.gmo
Binary files differ
diff --git a/parted-1.8.7/po/tr.po b/parted-1.8.7/po/tr.po
new file mode 100644
index 0000000..b298d9c
--- /dev/null
+++ b/parted-1.8.7/po/tr.po
@@ -0,0 +1,3256 @@
+# translation of parted-1.8.1.po to Turkish
+# Eyüp Hakan Duran <hakan_duran@hotmail.com>, 2002, 2006.
+# parted-1.8.1.po'nun Türkçe çevirisi
+# Copyright (C) 2002, 2006 Free Software Foundation, Inc.
+msgid ""
+msgstr ""
+"Project-Id-Version: parted-1.8.1\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2007-05-09 17:02-0400\n"
+"PO-Revision-Date: 2006-12-12 20:38-0500\n"
+"Last-Translator: Eyüp Hakan Duran <hakan_duran@hotmail.com>\n"
+"Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-9\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: lib/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Bilinmeyen dosya sistemi türü \"%s\"."
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+#, fuzzy
+msgid "Invalid range end"
+msgstr "Geçersiz numara."
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "%1$s açarken hata: %2$s"
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, 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:411 libparted/arch/linux.c:1431
+#, 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:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "%2$s'i okuma sýrasýnda %1$s"
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, 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:496 libparted/arch/linux.c:1570
+#, 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:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "%2$s'e yazma sýrasýnda %1$s"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "Çok sayýda bozuk sayfa."
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr "%s açýlamadý."
+
+#: libparted/arch/gnu.c:114
+msgid "Unable to probe store."
+msgstr "Depo sondalanamadý."
+
+#: libparted/arch/gnu.c:352
+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:369
+#, 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:380 parted/parted.c:2443
+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:772
+#, 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:408
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Dosya durum bilgisi alýnamayan aygýt %s - %s."
+
+#: libparted/arch/linux.c:523
+#, 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:539
+#, c-format
+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"
+
+#: libparted/arch/linux.c:579
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "%1$s (%2$s)'in boyutu belirlenemedi"
+
+#: libparted/arch/linux.c:668
+#, 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:677
+msgid "Generic IDE"
+msgstr "Genel IDE"
+
+#: libparted/arch/linux.c:698
+#, 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:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "%s - %s SCSI aygýtýný ilklendirmede hata"
+
+#: libparted/arch/linux.c:928
+#, c-format
+msgid ""
+"The device %s has zero length, and can't possibly store a file system or "
+"partition table. Perhaps you selected the wrong device?"
+msgstr ""
+"%s aygýtý sýfýr-uzunlukta ve muhtemelen bir dosya sistemi ya da bölümleme "
+"tablosu depolayamýyor. Yanlýþ aygýtý seçmiþ olmayasýnýz?"
+
+#: libparted/arch/linux.c:1032
+#, 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:1110
+msgid "DAC960 RAID controller"
+msgstr "DAC960 RAID denetleyici"
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr "Promise SX8 SATA Aygýtý"
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr "IBM S390 DASD sürücüsü"
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr "IBM iSeries Virtual DASD"
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr "Compaq Akýllý Dizi"
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr "ATARAID Denetleyici"
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr "I20 Denetleyici"
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr "Kullanýcý Kipi Linux UBD"
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr "Linux aygýt-eþlemleyicisi"
+
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "Bilinmeyen"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "ped_device_new() Desteklenmeyen aygýt türü"
+
+#: libparted/arch/linux.c:2083
+#, 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 ""
+"%1$s - %2$s disk bölümündeki deðiþiklikler hakkýnda kerneli bilgilendirmede "
+"hata. Bu, siz (bilgisayarý) yeniden açana dek %3$s'e yaptýðýnýz "
+"deðiþiklikleri Linux'un bilmemesi demek - dolayýsýyla yeniden açmadan "
+"herhangi bir þekilde baðlamamalý ya da kullanmamalýsýnýz."
+
+#: libparted/arch/linux.c:2262
+#, 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/arch/linux.c:2368
+#, c-format
+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, %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... %3$s ile ilgili herhangi bir þey yapmadan "
+"bilgisayarýnýzý yeniden açmalýsýnýz."
+
+#: libparted/cs/geom.c:162
+msgid "Can't have the end before the start!"
+msgstr "Baþlangýçtan önce son gelemez!"
+
+#: 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:366
+#, 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:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr "hatalý blok aranýyor"
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "%s açýlamýyor - tanýnmayan disk etiketi."
+
+#: libparted/disk.c:471
+#, 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:598
+#, 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:1075
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "%s disk etiketleri ek disk bölümlerini desteklemiyor."
+
+#: libparted/disk.c:1634
+#, 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:1647
+msgid "Too many primary partitions."
+msgstr "Çok fazla birincil disk bölümü"
+
+#: libparted/disk.c:1656
+#, 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:1680
+#, 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:1690
+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:1715
+#, 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:1725 libparted/disk.c:1779 libparted/disk.c:1945
+msgid "Can't have overlapping partitions."
+msgstr "Örtüþen disk bölümleri olamaz"
+
+#: libparted/disk.c:1733
+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:2140
+msgid "metadata"
+msgstr "metaverisi"
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "kullanýlmamýþ"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "ek"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "mantýksal"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "birincil"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "önyükleme"
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr "kök"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr "takas"
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "gizli"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr "hp-servisi"
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2190
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Bilinmeyen.disk bölümü bayraðý, %d."
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "Bilgi"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "Uyarý"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "Hata"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "Ölümcül"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "Yazýlým hatasý"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr "Uyarlama yok"
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr "Onar"
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "Evet"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "Hayýr"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "Tamam"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "Yeniden dene"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "Yoksay"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "Vazgeç"
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org 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 bug-parted@gnu.org'a sürüm (%s) ve "
+"aþaðýdaki mesajý içeren bir yazýlým hatasý raporu gönderin: "
+
+#: libparted/filesys.c:384
+msgid "Could not detect file system."
+msgstr "Dosya sistemi saptanamýyor."
+
+#: libparted/filesys.c:395
+msgid "The file system is bigger than its volume!"
+msgstr "Dosya sistemi oylumundan daha büyük!"
+
+#: libparted/filesys.c:403
+#, c-format
+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."
+
+#: libparted/filesys.c:445
+#, c-format
+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."
+
+#: libparted/filesys.c:505
+#, c-format
+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."
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr "ham blok kopyalama"
+
+#: libparted/filesys.c:582
+msgid "growing file system"
+msgstr "büyüyen dosya sistemi"
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr "Çakýþan disk bölümlerinin üzerine kopyalanamýyor."
+
+#: libparted/filesys.c:644
+#, c-format
+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."
+
+#: libparted/filesys.c:658
+#, c-format
+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."
+
+#: libparted/filesys.c:696
+#, c-format
+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."
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, fuzzy
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr "Dosya sistemi oylumundan daha büyük!"
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "check"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, fuzzy
+msgid ""
+"The reiserfs file system passed a basic check. For a more comprehensive "
+"check, run reiserfsck --check."
+msgstr ""
+"ext2 dosya sistemi temel bir kontrolü geçti. Daha kapsamlý bir kontrol için "
+"e2fsck programýný kullanýnýz."
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, fuzzy
+msgid "Sorry, can't move the start of reiserfs partitions yet."
+msgstr "Üzgünüm, henüz ext2 disk bölümlerinin baþlangýcý taþýnamýyor!"
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+msgid "shrinking"
+msgstr "küçültülüyor"
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "Uyarý"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, fuzzy, c-format
+msgid "Device is too small for %lu blocks."
+msgstr "ext2 için dosya sistemi çok küçük."
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "%s dosya sistemlerini oluþturmak için destek henüz saðlanmamýþtýr."
+
+#: libparted/labels/aix.c:148
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "%s dosya sistemlerini oluþturmak için destek henüz saðlanmamýþtýr."
+
+#: libparted/labels/aix.c:161
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr "%s dosya sistemlerini oluþturmak için destek henüz saðlanmamýþtýr."
+
+#: libparted/labels/aix.c:171
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr "%s dosya sistemlerini oluþturmak için destek henüz saðlanmamýþtýr."
+
+#: libparted/labels/aix.c:189
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr "%s dosya sistemlerini oluþturmak için destek henüz saðlanmamýþtýr."
+
+#: libparted/labels/aix.c:199
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr "%s dosya sistemlerini oluþturmak için destek henüz saðlanmamýþtýr."
+
+#: libparted/labels/bsd.c:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+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:526
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Bir bsd disk etiketi yuvasý tahsis edilemedi"
+
+#: libparted/labels/dasd.c:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "%1$s (%2$s)'in boyutu belirlenemedi"
+
+#: libparted/labels/dasd.c:781
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Bir bsd disk etiketi yuvasý tahsis edilemedi"
+
+#: libparted/labels/dos.c:827
+#, 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:855
+#, 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:1318
+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:1958
+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:190
+#, 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:313
+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:616
+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:630
+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:644
+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:721
+msgid "Only logical partitions (boot files) have a name."
+msgstr ""
+"Yalnýzca mantýksal disk bölümlerinin (önyükleme dosyalarý) bir adý olabilir."
+
+#: libparted/labels/dvh.c:812
+msgid "Too many primary partitions"
+msgstr "Çok fazla birincil disk bölümü"
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "%2$s'e yazma sýrasýnda %1$s"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, fuzzy, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr "Disk %1$s: %2$s\n"
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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:648
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+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! bug-parted@gnu.org"
+
+#: libparted/labels/gpt.c:698
+#, 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:827
+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:862
+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:870
+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/mac.c:181
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Mac disk etiketleri için geçersiz imza %x."
+
+#: libparted/labels/mac.c:226
+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:273
+#, 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:532
+#, 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:550
+#, 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:580
+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:597
+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:611
+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:622
+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:675
+#, 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:688
+#, 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:736
+msgid "No valid partition map found."
+msgstr "Geçerli disk bölümü eþlemi bulunamadý."
+
+#: libparted/labels/mac.c:795
+#, 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:822
+msgid "Weird! There are 2 partitions map entries!"
+msgstr "Tuhaf!- 2 disk bölümü eþlem girdisi mevcut!"
+
+#: libparted/labels/mac.c:1347
+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:1443
+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:354
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "%s üzerinde geçersiz disk bölümleme tablosu."
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, 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:791
+msgid "Can't add another partition."
+msgstr "Bir baþka disk bölümü eklenemiyor."
+
+#: libparted/labels/rdb.c:162
+#, 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:497
+#, 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:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%1$s : Blok %2$d'de döngü saptandý."
+
+#: libparted/labels/rdb.c:600
+#, 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:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s : Hatalý bloklarý listeleme baþarýsýz."
+
+#: libparted/labels/rdb.c:697
+#, 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:705
+#, 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:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s : Önyükleme bloklarýný listeleme baþarýsýz."
+
+#: libparted/labels/rdb.c:740
+#, 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:1069
+msgid "Unable to allocate a partition number."
+msgstr "Bir disk bölümü numarasý atanamadý."
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr "Bozuk Sun disk etiketi saptandý."
+
+#: libparted/labels/sun.c:266
+#, 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:288
+#, 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:442
+#, 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:737
+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:752
+msgid "Sun disk label is full."
+msgstr "Sun disk etiketi doldu."
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr "Yetersiz bellek"
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr "Özel birim 'COMPACT' için birim boyutu alýnamýyor."
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "\"%s\" yerleþimler için geçersiz yazýma sahip."
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "Maksimum kafa deðeri %d."
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "Maksimum sektör deðeri %d."
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, 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:527
+msgid "Invalid number."
+msgstr "Geçersiz numara."
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s : Bölümleme bloklarýný listeleme baþarýsýz."
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, fuzzy, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s : Önyükleme bloklarýný listeleme baþarýsýz."
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, fuzzy, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%1$s : Blok %2$d'de döngü saptandý."
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, fuzzy, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%1$s : Blok %2$d'de döngü saptandý."
+
+#: libparted/fs/amiga/amiga.c:72
+#, fuzzy, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s : Hatalý bloklarý listeleme baþarýsýz."
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, fuzzy, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%1$s : %3$s türündeki %2$llu bloðunda bozuk saðlama toplamý"
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%1$s : Blok %2$d'de döngü saptandý."
+
+#: libparted/fs/amiga/amiga.c:278
+#, fuzzy, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s : Hatalý bloklarý listeleme baþarýsýz."
+
+#: libparted/fs/amiga/amiga.c:289
+#, fuzzy, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s : rdb bloðu bulunamadý, asla olmamalý(ydý)."
+
+#: libparted/fs/amiga/amiga.c:318
+#, fuzzy, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s : Bölümleme bloklarýný listeleme baþarýsýz."
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr "Tutarsýz grup tanýmlayýcýlarý!"
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+msgid "File system full!"
+msgstr "Dosya sistemi dolu!"
+
+#: libparted/fs/ext2/ext2.c:686
+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?"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+msgid "File system has errors! You should run e2fsck."
+msgstr "Dosya sisteminde hatalar var! e2fsck'yi yürütün."
+
+#: libparted/fs/ext2/ext2.c:711
+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."
+
+#: libparted/fs/ext2/ext2.c:731
+msgid "File system has an incompatible feature enabled."
+msgstr "Dosya sisteminin uyumsuz bir niteliði etkinleþtirilmiþ"
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr "Tampon önbellek atamada hata."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+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."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr "Yeterli serbest dosya indeksi yok!"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+msgid "File system is too full to remove a group!"
+msgstr "Dosya sistemi bir grubu silmek için çok dolu!"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+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!"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr "gruplar ekleniyor"
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, c-format
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, c-format
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:666
+msgid "File system was not cleanly unmounted! You should run e2fsck."
+msgstr "Dosya sistemi temizce ayrýlmadý! e2fsck çalýþtýrmalýsýnýz."
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:691
+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 ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+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!"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "%i bloðunun baþvurusu yok? Tuhaf"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "%i bloðu iþaretlenmemiþ olmalýydý (%d, %d)!"
+
+#: libparted/fs/ext2/interface.c:186
+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."
+
+#: libparted/fs/ext2/interface.c:203
+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!"
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr "Tampon önbellek boþaltýlamadý!"
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr "grup bazýnda metaverisi yazýlýyor"
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr "ext2 için dosya sistemi çok küçük."
+
+#: libparted/fs/fat/calc.c:135
+#, c-format
+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þ."
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:308
+#, c-format
+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"
+
+#: libparted/fs/fat/fat.c:474
+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."
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr "Bu FAT türü için olasý yapýlandýrma yok."
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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)."
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+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."
+
+#: libparted/fs/fat/fat.c:874
+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/resize.c:159
+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."
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr "Kök dizinine yazmada hata."
+
+#: libparted/fs/fat/resize.c:489
+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."
+
+#: libparted/fs/fat/resize.c:492
+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."
+
+#: libparted/fs/fat/resize.c:500
+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."
+
+#: libparted/fs/fat/resize.c:504
+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."
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr "FAT32 kullanmak ister misiniz?"
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: libparted/fs/fat/resize.c:551
+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."
+
+#: libparted/fs/fat/resize.c:567
+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."
+
+#: libparted/fs/fat/resize.c:580
+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!"
+
+#: 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:139
+#, 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:164
+#, 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:213
+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:219
+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:225
+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:235
+msgid "File system is FAT12, which is unsupported."
+msgstr "Dosya sistemi FAT12, ki desteklenmiyor."
+
+#: libparted/fs/fat/bootsector.c:411
+#, 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/fat/count.c:152
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:174
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:203
+#, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr "%s %dkdýr, fakat %d kümeye (%dk) sahip."
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:269
+#, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "fat_table_set: %ld kümesi dosya sisteminin dýþýnda"
+
+#: libparted/fs/fat/table.c:301
+#, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "fat_table_get: %ld kümesi dosya sisteminin dýþýnda"
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "fat_table_alloc_cluster: boþ küme yok"
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Tanýnmayan linux takas imzasý '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:318
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Tanýnmayan linux takas imzasý '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:358
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Tanýnmayan linux takas imzasý '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr "Çok sayýda bozuk sayfa."
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr "Dosya sistemi hatalar içeriyor."
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr "Hatalý bloklar okunamýyor."
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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!"
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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ý!"
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+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."
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr "EOF arkasýnda CNID %X'li HFS dosyasý okunmaya çalýþýlýyor."
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+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ý."
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+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."
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+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."
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr "EOF arkasýnda CNID %X'li HFS+ dosyasý okunmaya çalýþýlýyor."
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+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ý."
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+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."
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr "Üzgünüm, HFS henüz o þekilde yeniden boyutlandýrýlamýyor."
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr "Veri yeniden konumlandýrýlmasý baþarýsýz."
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr "Veri yeniden konumladýrýlmasý oylumun sonunda bazý verileri býraktý."
+
+#: libparted/fs/hfs/hfs.c:320
+msgid "writing HFS Master Directory Block"
+msgstr "HFS Ana Dizin Bloðu yazýlýyor"
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr "Açarken, geçerli HFS[+X] imzasý bulunamadý."
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr "HFS+'in %d sürümü desteklenmiyor."
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr "HFSX'in %d sürümü desteklenmiyor."
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr "Veri yeniden konumladýrýlmasý oylumun sonunda bazý verileri býraktý."
+
+#: libparted/fs/hfs/hfs.c:720
+msgid "Error while writing the allocation file."
+msgstr "Atama dosyasýna yazmada hata."
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr "Atama dosyasýnýn uyumluluk bölümüne yazmada hata."
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr "HFS+ Oylum Baþlýðý yazýlýyor"
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr "Zorunlu hatalý bloklar dosyasý aranýrken bir hata oluþtu."
+
+#: libparted/fs/hfs/hfs.c:904
+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."
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr "Üzgünüm, HFS+ henüz o þekilde yeniden boyutlandýrýlamýyor."
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr "gömülü HFS+ oylumu küçültülüyor"
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr "HFS+ oylumunun yeniden boyutlandýrýlmasý baþarýsýz."
+
+#: libparted/fs/hfs/hfs.c:998
+msgid "shrinking HFS wrapper"
+msgstr "HFS sarmalayýcýsý küçültülüyor"
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr "HFS sarmalayýcýsýnýn göncellenmesi baþarýsýz."
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+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."
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr "Hatalý blok liste baþlýðý saðlama toplamý"
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+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)."
+
+#: libparted/fs/hfs/journal.c:260
+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."
+
+#: libparted/fs/hfs/journal.c:271
+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."
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr "Günlük baþlýðýnda geçersiz sihirli deðerler."
+
+#: libparted/fs/hfs/journal.c:302
+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."
+
+#: libparted/fs/hfs/journal.c:314
+msgid "Some header fields are not multiple of the sector size."
+msgstr "Bazý baþlýk alanlarý sektör boyutunun katý deðil."
+
+#: libparted/fs/hfs/journal.c:323
+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."
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr "Bozuk günlük saðlama toplamý."
+
+#: libparted/fs/hfs/journal.c:353
+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."
+
+#: libparted/fs/hfs/journal.c:381
+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."
+
+#: libparted/fs/hfs/probe.c:51
+#, 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."
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr "Bir aralýk yeniden konumlanmadý."
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+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!"
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr "Bu HFS oylumunun katalog dosyasý yok. Bu çok sýradýþý!"
+
+#: libparted/fs/hfs/reloc.c:475
+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ýþý!"
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+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."
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+msgid "Could not cache the file system in memory."
+msgstr "Dosya sistemi önbelleðe alýnamýyor."
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr "Hatalý blok listesi yüklenemedi."
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr "Aralýk yeniden konumlandýrýlmasý sýrasýnda bir hata oluþtu."
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr "Bu HFS+ oylumunun katalog dosyasý yok. Bu çok sýradýþý!"
+
+#: libparted/fs/hfs/reloc_plus.c:619
+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ýþý!"
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr "bu yardým mesajýný görüntüler"
+
+#: parted/parted.c:95
+#, fuzzy
+msgid "lists partition layout on all block devices"
+msgstr "algýlanan tüm aygýtlarýn bçlümleme tablolarýnýn listeler"
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr "kullanýcý müdahalesi için asla istemde bulunmaz"
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr "sürümü görüntüler"
+
+#: parted/parted.c:111
+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:114
+msgid "LABEL-TYPE is one of: "
+msgstr "LABEL-TYPE þunlardan biridir: "
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr "FLAG þunlardan biridir: "
+
+#: parted/parted.c:116
+msgid "UNIT is one of: "
+msgstr "UNIT þunlardan biridir: "
+
+#: parted/parted.c:117
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "PART-TYPE þunlardan biridir: birincil, mantýksal, ek\n"
+
+#: parted/parted.c:119
+msgid "FS-TYPE is one of: "
+msgstr "FS-TYPE þunlardan biridir: "
+
+#: parted/parted.c:120
+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:123
+msgid "STATE is one of: on, off\n"
+msgstr "STATE þunlardan biridir: açýk, kapalý\n"
+
+#: parted/parted.c:124
+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:125
+msgid "NAME is any word you want\n"
+msgstr "NAME istediðiniz herhangi bir sözcüktür\n"
+
+#: parted/parted.c:126
+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: "
+
+#: parted/parted.c:130
+#, 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 ""
+"Telifhakký (C) 1998 - 2005 Özgür Yazýlým Kuruluþu, A.Þ.\n"
+"Bu program, GNU Genel Kamu Lisansý'nca kapsanan bedava yazýlýmdýr.\n"
+"\n"
+"Bu program, yararlý olacaðý ümidiyle daðýtýlmýþ olup, SATILABÝLÝRLÝK ya da "
+"BELLÝ BÝR AMACA UYGUNLUK garantileri de dahil olmak üzere HERHANGÝ BÝR "
+"GARANTÝ içermez. Daha fazla ayrýntý için GNU Genel Kamu Lisansý'na "
+"bakýnýz.\n"
+"\n"
+
+#: parted/parted.c:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(kalan süre %.2d:%.2d)"
+
+#: parted/parted.c:195
+#, 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:211
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "%s üzerindeki disk bölümü(leri) kullanýlýyor."
+
+#: parted/parted.c:223
+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?"
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+msgid "Partition number?"
+msgstr "Disk bölümü numarasý?"
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr "Kaynak aygýtý?"
+
+#: parted/parted.c:504
+msgid "Source partition number?"
+msgstr "Kaynak disk bölümü numarasý?"
+
+#: parted/parted.c:509
+msgid "Can't copy an extended partition."
+msgstr "Ek disk bölümleri kopyalanamýyor."
+
+#: parted/parted.c:515
+msgid "Destination partition number?"
+msgstr "Hedef disk bölümü numarasý?"
+
+#: parted/parted.c:615
+msgid "New disk label type?"
+msgstr "Yeni disk etiketi türü?"
+
+#: parted/parted.c:656
+msgid "File system?"
+msgstr "Dosya sistemi?"
+
+#: parted/parted.c:707 parted/parted.c:878
+msgid "Partition type?"
+msgstr "Disk bölümü türü?"
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+msgid "Partition name?"
+msgstr "Disk bölümü adý?"
+
+#: parted/parted.c:722 parted/parted.c:895
+msgid "File system type?"
+msgstr "Dosya sistemi türü?"
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr "Baþlangýç?"
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr "Bitiþ?"
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+"%1$s'den %2$s'e bir bölüm istediniz.\n"
+"Becerebildiðimiz buna en yakýn konum %3$s-%4$s. Bu sizin için hala kabul "
+"edilebilir mi?"
+
+#: parted/parted.c:890
+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?"
+
+#: parted/parted.c:1050
+msgid "Can't move an extended partition."
+msgstr "Bir ek disk bölümü taþýnamaz."
+
+#: parted/parted.c:1079
+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?"
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr "Minor: %d\n"
+
+#: parted/parted.c:1228
+#, c-format
+msgid "Flags: %s\n"
+msgstr "Bayraklar: %s\n"
+
+#: parted/parted.c:1229
+#, c-format
+msgid "File System: %s\n"
+msgstr "Dosya Sistemi: %s\n"
+
+#: parted/parted.c:1230
+msgid "Size: "
+msgstr "Boyut: "
+
+#: parted/parted.c:1235
+msgid "Minimum size: "
+msgstr "Minimum boyut: "
+
+#: parted/parted.c:1238
+msgid "Maximum size: "
+msgstr "Maksimum boyut: "
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr "Model: %s (%s)\n"
+
+#: parted/parted.c:1364
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "Disk %1$s: %2$s\n"
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "Sektör boyutu (mantýksal/fiziksel): %lldB/%lldB\n"
+
+#: parted/parted.c:1383
+#, 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:1392
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "Disk bölümü Tablosu: %s\n"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr "Numara"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Start"
+msgstr "Baþlangýç"
+
+#: parted/parted.c:1407 parted/parted.c:1410
+msgid "End"
+msgstr "Son"
+
+#: parted/parted.c:1410
+msgid "Size"
+msgstr "Boyut"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr "Tür"
+
+#: parted/parted.c:1416
+msgid "File system"
+msgstr "Dosya sistemi"
+
+#: parted/parted.c:1419
+msgid "Name"
+msgstr "Ýsim"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr "Bayraklar"
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr "Boþ Alan"
+
+#: parted/parted.c:1624
+#, 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:1663
+msgid "searching for file systems"
+msgstr "dosya"
+
+#: parted/parted.c:1877
+msgid "New device?"
+msgstr "Yeni aygýt?"
+
+#: parted/parted.c:1902
+msgid "Flag to Invert?"
+msgstr "Tersine çevirmek üzere bayrakla?"
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr "Yeni durum?"
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr "Birim?"
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "check"
+
+#: parted/parted.c:2096
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr ""
+"check NUMBER dosya sistemi üzerinde basit bir kontrol yap"
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "cp"
+
+#: parted/parted.c:2105
+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"
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:2114
+#, fuzzy
+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:2120
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:2120
+msgid "mktable"
+msgstr "mktable"
+
+#: parted/parted.c:2123
+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:2129
+msgid "mkfs"
+msgstr "mkfs"
+
+#: parted/parted.c:2132
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+"mkfs NUMBER FS-TYPE NUMBER disk bölümü üzerinde FS-TYPE dosya "
+"sistemini yap"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:2141
+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:2147
+#, 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, 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ü numarasý atamak için "
+"belirtilebilir.\n"
+"\n"
+
+#: parted/parted.c:2152
+msgid "mkpartfs"
+msgstr "mkpartfs"
+
+#: parted/parted.c:2155
+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"
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr "move"
+
+#: parted/parted.c:2164
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "move NUMBER START END NUMBER. disk bölümünü taþý"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:2172
+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:2177
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr "algýlanan tüm aygýtlarýn bçlümleme tablolarýnýn listeler"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:2199
+msgid "quit exit program"
+msgstr "quit programdan çýk"
+
+#: parted/parted.c:2204
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:2207
+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:2213
+msgid "resize"
+msgstr "resize"
+
+#: parted/parted.c:2216
+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"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:2227
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "rm NUMBER NUMBER. disk bölümünü sil"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:2235
+msgid "select DEVICE choose the device to edit"
+msgstr "select DEVICE düzenlenecek aygýtý seç"
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:2243
+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:2249
+msgid "toggle"
+msgstr "seçmece / deðiþtir"
+
+#: parted/parted.c:2252
+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:2258
+msgid "unit"
+msgstr "birim"
+
+#: parted/parted.c:2261
+msgid "unit UNIT set the default unit to UNIT"
+msgstr "birim UNIT öntanýmlý birimi UNIT'e ayarla"
+
+#: parted/parted.c:2266
+msgid "version"
+msgstr "sürüm"
+
+#: parted/parted.c:2269
+#, fuzzy
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"version GNU Parted'in güncel sürümünü ve telif "
+"hakký bilgisini görüntüler"
+
+#: parted/parted.c:2273
+#, fuzzy
+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:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "Aygýt bulunamadý"
+
+#: parted/parted.c:2412
+#, fuzzy
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr "UYARI: Süper kullanýcý deðilsiniz. Ýzinlere dikkat edin.\n"
+
+#: parted/parted.c:2450
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Zorunluysa, /etc/fstab'i güncellemeyi unutmayýn.\n"
+
+#: parted/ui.c:160
+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:163
+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:168
+#, 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'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 kurulumunuz hakkýnda önemli olduðunu düþündüðünüz ek "
+"bilgileri\n"
+"içermelidir.\n"
+
+#: parted/ui.c:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+#, fuzzy
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"Hata: SEGV_MAPERR (Adres nesneye eþlenmedi)"
+
+#: parted/ui.c:372
+#, fuzzy
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"Hata: SEGV_ACCERR (Eþlenmiþ nesne için geçersiz izinler)"
+
+#: parted/ui.c:377
+#, fuzzy
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"Hata: Genel bir SIGSEGV sinyaliyle karþýlaþýldý."
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"Hata: FPE_INTDIV (Tamsayý: sýfýrla bölünme)"
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"Hata: FPE_INTOVF (Tamsayý: taþma)"
+
+#: parted/ui.c:420
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"Hata: FPE_FLTDIV (Kayan: sýfýrla bölünme)"
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"Hata: FPE_FLTOVF (Kayan: taþma)"
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"Hata: FPE_FLTUND (Kayan: boþalma)"
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"Hata: FPE_FLTRES (Kayan: kesin olmayan sonuç)"
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"Hata: FPE_FLTINV (Kayan: geçersiz iþlem)"
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"Hata: FPE_FLTSUB (Kayan: altsimge erim dýþý)"
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"Hata: Genel bir SIGFPE sinyaliyle karþýlaþýldý."
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"Hata: ILL_ILLOPC (Kuraldýþý Opcode)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"Hata: ILL_ILLOPN (Kuraldýþý Ýþlenen)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"Hata: ILL_ILLADR (Kuraldýþý adresleme kipi)"
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"Hata: ILL_ILLTRP (Kuraldýþý Tuzak)"
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"Hata: ILL_PRVOPC (Ayrýcalýklý Opcode)"
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"Hata: ILL_PRVREG (Ayrýcalýklý Yazmaç)"
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"Hata: ILL_COPROC (Eþiþlemci Hatasý)"
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"Hata: ILL_BADSTK (Dahili Yýðýn Hatasý)"
+
+#: parted/ui.c:523
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"Hata: Genel bir SIGILL sinyaliyle karþýlaþýldý."
+
+#: parted/ui.c:1024
+msgid "Expecting a partition number."
+msgstr "Bir disk bölümü numarasý bekleniyor."
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "Disk bölümü yok."
+
+#: parted/ui.c:1053
+msgid "Expecting a file system type."
+msgstr "Bir dosya sistemi türü bekleniyor."
+
+#: parted/ui.c:1060
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Bilinmeyen dosya sistemi türü \"%s\"."
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr "Bir disk etiketi türü bekleniyor."
+
+#: parted/ui.c:1178
+msgid "Can't create any more partitions."
+msgstr "Baþka disk bölümü oluþturulamýyor."
+
+#: parted/ui.c:1188
+msgid "Expecting a partition type."
+msgstr "Bir disk bölümü türü bekleniyor."
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr "açýk"
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr "kapalý"
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "SEÇENEKler:"
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "KOMUTlar:"
+
+#: parted/ui.c:1445
+#, c-format
+msgid "Using %s\n"
+msgstr "%s kullanýlýyor\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#~ msgid "GNU Parted cannot resize this file system, please useresize2fs."
+#~ msgstr ""
+#~ "GNU Parted bu dosya sistemini yeniden boyutlandýramýyor, lütfen resize2fs "
+#~ "kullanýn."
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "zorunlu olduðunda, kullanýcý müdahalesi için istemde bulunur"
+
+#~ msgid "GNU Parted Version information:\n"
+#~ msgstr "GNU Parted Sürüm bilgisi:\n"
+
+#~ msgid ""
+#~ "print [free|NUMBER|all] display the partition table, a "
+#~ "partition, or all devices"
+#~ msgstr ""
+#~ "print [free|NUMBER|all] bir disk bölümü, tablosu ya da "
+#~ "tüm aygýtlarý görüntüle"
+
+#~ 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 ""
+#~ "Argümansýz kullanýldýðýnda yazdýr, tüm disk bölümü tablosunu görüntüler. "
+#~ "'free' argümanýyla\n"
+#~ "boþ alan hakkýndaki bilgi görüntülenir, ya da eðer\n"
+#~ "bir disk bölümü numarasý verilirse, o disk bölümü hakkýnda daha ayrýntýlý "
+#~ "bilgi görüntülenir.\n"
+#~ "Eðer 'all' argümaný kullanýlýrsa tüm aygýtlarýn bölümleme bilgisi "
+#~ "görüntülenecektir.\n"
diff --git a/parted-1.8.7/po/uk.gmo b/parted-1.8.7/po/uk.gmo
new file mode 100644
index 0000000..76eb9ef
--- /dev/null
+++ b/parted-1.8.7/po/uk.gmo
Binary files differ
diff --git a/parted-1.8.7/po/uk.po b/parted-1.8.7/po/uk.po
new file mode 100644
index 0000000..789fbad
--- /dev/null
+++ b/parted-1.8.7/po/uk.po
@@ -0,0 +1,3249 @@
+# Ukrainian translation to parted.
+# Copyright (C) 2004 Free Software Foundation, Inc.
+# Maxim V. Dziumanenko <dziumanenko@gmail.com>, 2004-2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 1.8.1\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2007-05-09 17:02-0400\n"
+"PO-Revision-Date: 2006-12-27 10:07+0200\n"
+"Last-Translator: Maxim V. Dziumanenko <dziumanenko@gmail.com>\n"
+"Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Невідомий тип файлової системи \"%s\"."
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+#, fuzzy
+msgid "Invalid range end"
+msgstr "Неправильне число."
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Помилка відкривання %s: %s"
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, c-format
+msgid "Unable to open %s read-write (%s). %s has been opened read-only."
+msgstr ""
+"Не вдається відкрити %s для читання-запису (%s). %s відкрито у режимі лише-"
+"читання."
+
+#: libparted/arch/beos.c:411 libparted/arch/linux.c:1431
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s при встановленні позиції для читання на %s"
+
+#: libparted/arch/beos.c:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s при читанні з %s"
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Не вдається записати на %s, тому що він відкритий лише для читання."
+
+#: libparted/arch/beos.c:496 libparted/arch/linux.c:1570
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s при встановленні позиції для запису на %s"
+
+#: libparted/arch/beos.c:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s при записі на %s"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "Надто багато пошкоджених сторінок."
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr "Не вдається відкрити %s."
+
+#: libparted/arch/gnu.c:114
+msgid "Unable to probe store."
+msgstr "Не вдається визначити сховище."
+
+#: libparted/arch/gnu.c:352
+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:369
+#, 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:380 parted/parted.c:2443
+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:772
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s при спробі синхронізації %s на диск"
+
+#: libparted/arch/linux.c:408
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Не вдається отримати статус пристрою %s - %s."
+
+#: libparted/arch/linux.c:523
+#, 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:539
+#, c-format
+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"
+
+#: libparted/arch/linux.c:579
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Не вдається визначити розмір %s (%s)."
+
+#: libparted/arch/linux.c:668
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Не вдається отримати ідентифікатор пристрою %s - %s"
+
+#: libparted/arch/linux.c:677
+msgid "Generic IDE"
+msgstr "Загальний IDE"
+
+#: libparted/arch/linux.c:698
+#, 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:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Помилка ініціалізації SCSI пристрою %s - %s"
+
+#: libparted/arch/linux.c:928
+#, c-format
+msgid ""
+"The device %s has zero length, and can't possibly store a file system or "
+"partition table. Perhaps you selected the wrong device?"
+msgstr ""
+"Пристрій %s має нульову довжину, та непридатний для розміщення файлової "
+"системи чи таблиці розділів. Можливо ви вибрали неправильний пристрій?"
+
+#: libparted/arch/linux.c:1032
+#, 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:1110
+msgid "DAC960 RAID controller"
+msgstr "DAC960 RAID контролер"
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr "Пристрій Promise SX8 SATA"
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr "Пристрій IBM S390 DASD"
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr "IBM iSeries Virtual DASD"
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr "Compaq Smart Array"
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr "ATARAID контролер"
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr "I2O контролер"
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr "User-Mode Linux UBD"
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr "Linux device-mapper"
+
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "Невідомий"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "ped_device_new() тип пристрою не підтримується"
+
+#: libparted/arch/linux.c:2083
+#, 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:2262
+#, 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/arch/linux.c:2368
+#, c-format
+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."
+
+#: libparted/cs/geom.c:162
+msgid "Can't have the end before the start!"
+msgstr "Неприпустимо, щоб кінець розділу був перед початком!"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "Неприпустимо, щоб розділ виходив за межі диску!"
+
+#: libparted/cs/geom.c:366
+#, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr "Спроба записати сектори %ld-%ld за межами розділу на %s."
+
+#: libparted/cs/geom.c:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr "пошук пошкоджених блоків"
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "Не вдається відкрити %s - нерозпізнана етикетка диска."
+
+#: libparted/disk.c:471
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s. Perhaps it was compiled "
+"read-only."
+msgstr ""
+"Ця версія libparted не підтримує запис на %s. Можливо програму зібрано з "
+"підтримкою лише для читання."
+
+#: libparted/disk.c:598
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "Розмір %d %s, але файлова система %s."
+
+#: libparted/disk.c:1075
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "%s етикетки дисків для розширених розділів не підтримуються."
+
+#: libparted/disk.c:1634
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr ""
+"%s етикетки дисків для логічних або розширених розділів не підтримуються."
+
+#: libparted/disk.c:1647
+msgid "Too many primary partitions."
+msgstr "Занадто багато основних розділів."
+
+#: libparted/disk.c:1656
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr ""
+"Не вдається додати логічний розділ до %s, тому що немає розширеного розділу."
+
+#: libparted/disk.c:1680
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Не можна мати більше одного розширеного розділу на %s."
+
+#: libparted/disk.c:1690
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Не вдається розширити логічний розділ за межі розширеного розділу."
+
+#: libparted/disk.c:1715
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr ""
+"Не вдається розширити логічний розділ за межі розширеного розділу на %s."
+
+#: libparted/disk.c:1725 libparted/disk.c:1779 libparted/disk.c:1945
+msgid "Can't have overlapping partitions."
+msgstr "Не можна мати розділи, які перекриваються."
+
+#: libparted/disk.c:1733
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Не можна додавати основний розділ у розширений розділ."
+
+#: libparted/disk.c:2140
+msgid "metadata"
+msgstr "метадані"
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "вільно"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "розширений"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "логічний"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "основний"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "boot"
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr "кореневий"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "схований"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr "hp-сервіс"
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2190
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Невідома ознака розділу, %d."
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "Інформація"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "Попередження"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "Помилка"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "Критична помилка"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "Помилка"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr "Не реалізовано"
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr "Виправити"
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "Так"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "Ні"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "Гаразд"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "Повторити"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "Ігнорувати"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "Скасувати"
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org 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/filesys.c:384
+msgid "Could not detect file system."
+msgstr "Не вдається виявити файлову систему."
+
+#: libparted/filesys.c:395
+msgid "The file system is bigger than its volume!"
+msgstr "Файлова система більша ніж том!"
+
+#: libparted/filesys.c:403
+#, c-format
+msgid "Support for opening %s file systems is not implemented yet."
+msgstr "Підтримка відкривання %s файлових систем ще не реалізована."
+
+#: libparted/filesys.c:445
+#, c-format
+msgid "Support for creating %s file systems is not implemented yet."
+msgstr "Підтримка створення %s файлових систем ще не реалізована."
+
+#: libparted/filesys.c:505
+#, c-format
+msgid "Support for checking %s file systems is not implemented yet."
+msgstr "Підтримка перевірки %s файлових систем ще не реалізована."
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr "копіювання блоків"
+
+#: libparted/filesys.c:582
+msgid "growing file system"
+msgstr "розширення файлової системи"
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr "Не можна копіювати на розділи, що перекриваються."
+
+#: libparted/filesys.c:644
+#, c-format
+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. Але, "
+"реалізована підтримка зміни розміру. Таким чином файлову систему можна "
+"скопіювати на новий розділ більшого розміру ніж існуючий. Тому або зменшіть "
+"розділ, який ви намагаєтесь скопіювати, або копіюйте на більший розділ."
+
+#: libparted/filesys.c:658
+#, c-format
+msgid "Support for copying %s file systems is not implemented yet."
+msgstr "Підтримка копіювання файлових систем типу %s ще не підтримується."
+
+#: libparted/filesys.c:696
+#, c-format
+msgid "Support for resizing %s file systems is not implemented yet."
+msgstr "Підтримка зміни розміру файлових систем типу %s ще не підтримується."
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, fuzzy
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr "Файлова система більша ніж том!"
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "check"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, fuzzy
+msgid ""
+"The reiserfs file system passed a basic check. For a more comprehensive "
+"check, run reiserfsck --check."
+msgstr ""
+"Файлова система ext2 пройшла загальну перевірку. Для більш докладної "
+"перевірки користуйтесь програмою e2fsck."
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, fuzzy
+msgid "Sorry, can't move the start of reiserfs partitions yet."
+msgstr "Нажаль, переміщення початку розділів типу ext2 ще не підтримується!"
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+msgid "shrinking"
+msgstr "скорочення"
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "Попередження"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, fuzzy, c-format
+msgid "Device is too small for %lu blocks."
+msgstr "Файлова система занадто маленька для ext2."
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "Підтримка створення %s файлових систем ще не реалізована."
+
+#: libparted/labels/aix.c:148
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "Підтримка створення %s файлових систем ще не реалізована."
+
+#: libparted/labels/aix.c:161
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr "Підтримка створення %s файлових систем ще не реалізована."
+
+#: libparted/labels/aix.c:171
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr "Підтримка створення %s файлових систем ще не реалізована."
+
+#: libparted/labels/aix.c:189
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr "Підтримка створення %s файлових систем ще не реалізована."
+
+#: libparted/labels/aix.c:199
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr "Підтримка створення %s файлових систем ще не реалізована."
+
+#: libparted/labels/bsd.c:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Не вдається задовольнити всі обмеження на розділ."
+
+#: libparted/labels/bsd.c:526
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Не вдається розподілити слот bsd етикетки диску."
+
+#: libparted/labels/dasd.c:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "Не вдається визначити розмір %s (%s)."
+
+#: libparted/labels/dasd.c:781
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Не вдається розподілити слот bsd етикетки диску."
+
+#: libparted/labels/dos.c:827
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Неправильна таблиця розділів на %s - неправильна сигнатура %x."
+
+#: libparted/labels/dos.c:855
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Неправильна таблиця розділів - рекурсивні розділи на %s."
+
+#: libparted/labels/dos.c:1318
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "Розширені розділи не можуть бути на дискових етикетках msdos."
+
+#: libparted/labels/dos.c:1958
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr "Parted не може змінювати розділи, які створені Windows Dynamic Disk."
+
+#: libparted/labels/dvh.c:190
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%s не містить розширеного розділу (розділу заголовків томів)."
+
+#: libparted/labels/dvh.c:313
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr ""
+"Неправильна контрольна сума, це означає, що таблиця розділів пошкоджена."
+
+#: libparted/labels/dvh.c:616
+msgid "Only primary partitions can be root partitions."
+msgstr "Лише основні розділи можуть бути завантажувальними."
+
+#: libparted/labels/dvh.c:630
+msgid "Only primary partitions can be swap partitions."
+msgstr "Лише основні розділи можуть бути розділами підкачки."
+
+#: libparted/labels/dvh.c:644
+msgid "Only logical partitions can be a boot file."
+msgstr "Лише логічні розділи можуть бути завантажувальним файлом."
+
+#: libparted/labels/dvh.c:721
+msgid "Only logical partitions (boot files) have a name."
+msgstr "Лише логічні розділи (завантажувальні файли) мають назву."
+
+#: libparted/labels/dvh.c:812
+msgid "Too many primary partitions"
+msgstr "Занадто багато основних розділів"
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "%s при записі на %s"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, fuzzy, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr "Диск %s: %s\n"
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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:648
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+msgstr ""
+"Знайдено GPT таблицю розділів версії %x, ця версія старша ніж версія, що "
+"підтримується програмою Parted. Будь ласка, повідомте нам! bug-parted@gnu.org"
+
+#: libparted/labels/gpt.c:698
+#, 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:827
+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:862
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr ""
+"Основна GPT таблиця пошкоджена, але резервна виглядає правильною, тому буде "
+"використовуватись саме вона."
+
+#: libparted/labels/gpt.c:870
+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/mac.c:181
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Неправильна сигнатура %x для Macintosh етикетки диску."
+
+#: libparted/labels/mac.c:226
+msgid "Partition map has no partition map entry!"
+msgstr "Карта розділів не містить елементу карти розділів!"
+
+#: libparted/labels/mac.c:273
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s занадто мале для Macintosh етикетки диску!"
+
+#: libparted/labels/mac.c:532
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "Розділ %d має неправильну сигнатуру %x."
+
+#: libparted/labels/mac.c:550
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "Розділ %d має неправильну довжину 0 байт!"
+
+#: libparted/labels/mac.c:580
+msgid "The data region doesn't start at the start of the partition."
+msgstr "Область даних не починається з початку розділу."
+
+#: libparted/labels/mac.c:597
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "Область завантаження не починається з початку розділу."
+
+#: libparted/labels/mac.c:611
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "Область завантаження розділу не займає весь розділ."
+
+#: libparted/labels/mac.c:622
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "Область даних розділу не займає весь розділ."
+
+#: libparted/labels/mac.c:675
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr ""
+"Дивний розмір блоку у дескрипторі пристрою: %d байт не ділиться на 512."
+
+#: libparted/labels/mac.c:688
+#, 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:736
+msgid "No valid partition map found."
+msgstr "Не знайдено правильної карти розділів."
+
+#: libparted/labels/mac.c:795
+#, 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:822
+msgid "Weird! There are 2 partitions map entries!"
+msgstr "Фатально! Дивна помилка - 2 елементи карти розділів!"
+
+#: libparted/labels/mac.c:1347
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr ""
+"Зміна назви кореневого розділу чи розділу підкачки заважатиме Linux "
+"розпізнати їх."
+
+#: libparted/labels/mac.c:1443
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr "Не вдається додати інший розділ - карта розділів надто маленька!"
+
+#: libparted/labels/pc98.c:354
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "Неправильна таблиця розділів у %s."
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries. This is still "
+"unsupported."
+msgstr ""
+"Розділ %d не вирівняний на межі циліндру. Необхідно додати підтримку для "
+"цього випадку."
+
+#: libparted/labels/pc98.c:791
+msgid "Can't add another partition."
+msgstr "Не вдається додати інший розділ."
+
+#: libparted/labels/rdb.c:162
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr "%s : Неправильна контрольна сума на блоці %llu типу %s."
+
+#: libparted/labels/rdb.c:497
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr "%s : Не вдається знайти блок rdb, цього не повинно було статися."
+
+#: libparted/labels/rdb.c:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s : виявлено цикл у блоці %d."
+
+#: libparted/labels/rdb.c:600
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr "%s : Список %s має пошкоджений блок %s."
+
+#: libparted/labels/rdb.c:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s : не вдається отримати список пошкоджених блоків."
+
+#: libparted/labels/rdb.c:697
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s : не вдається отримати список блоків розділу."
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s : не вдається отримати список блоків файлової системи."
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s : не вдається отримати список завантажувальних блоків."
+
+#: libparted/labels/rdb.c:740
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "Не вдається записати блок розділу у %d."
+
+#: libparted/labels/rdb.c:1069
+msgid "Unable to allocate a partition number."
+msgstr "Очікується номер розділу."
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr "Знайдено пошкоджену Sun етикетку диску."
+
+#: libparted/labels/sun.c:266
+#, 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:288
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "Етикетка диску описує диск більшого розміру ніж %s."
+
+#: libparted/labels/sun.c:442
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr "Диск має %d циліндрів, що більше ніж максимальне значення 65536."
+
+#: libparted/labels/sun.c:737
+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:752
+msgid "Sun disk label is full."
+msgstr "Sun етикетка диску заповнена."
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr "Недостатньо пам'яті."
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr "Не вдається отримати одиницю розміру для спеціального блоку 'COMPACT'."
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "\"%s\" має неправильний синтаксис адрес."
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "Максимальний номер головки - %d."
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "Максимальний номер сектора - %d."
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "Адреса %s поза межами пристрою %s."
+
+#: libparted/unit.c:527
+msgid "Invalid number."
+msgstr "Неправильне число."
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s : не вдається отримати список блоків розділу."
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, fuzzy, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s : не вдається отримати список завантажувальних блоків."
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, fuzzy, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s : виявлено цикл у блоці %d."
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, fuzzy, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s : виявлено цикл у блоці %d."
+
+#: libparted/fs/amiga/amiga.c:72
+#, fuzzy, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s : не вдається отримати список пошкоджених блоків."
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, fuzzy, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s : Неправильна контрольна сума на блоці %llu типу %s."
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s : виявлено цикл у блоці %d."
+
+#: libparted/fs/amiga/amiga.c:278
+#, fuzzy, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s : не вдається отримати список пошкоджених блоків."
+
+#: libparted/fs/amiga/amiga.c:289
+#, fuzzy, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s : Не вдається знайти блок rdb, цього не повинно було статися."
+
+#: libparted/fs/amiga/amiga.c:318
+#, fuzzy, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s : не вдається отримати список блоків розділу."
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr "Суперечлива група дескрипторів!"
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+msgid "File system full!"
+msgstr "Файлова система повна!"
+
+#: libparted/fs/ext2/ext2.c:686
+msgid "Invalid superblock. Are you sure this is an ext2 file system?"
+msgstr "Неправильний суперблок. Ви впевнені, що це файлова система типу ext2?"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+msgid "File system has errors! You should run e2fsck."
+msgstr "Файлова система містить помилки! Необхідно запустити e2fsck."
+
+#: libparted/fs/ext2/ext2.c:711
+msgid ""
+"File system was not cleanly unmounted! You should run e2fsck. Modifying an "
+"unclean file system could cause severe corruption."
+msgstr ""
+"Файлова система не була правильно відключена! Необхідно запустити e2fsck. "
+"Зміни до нецілісної файлової системи можуть призвести до серйозних "
+"пошкоджень."
+
+#: libparted/fs/ext2/ext2.c:731
+msgid "File system has an incompatible feature enabled."
+msgstr "У файловій системі ввімкнено несумісну властивість."
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr "Помилка розподілу буфера кеша."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+msgid ""
+"Found an inode with a incorrect link count. Better go run e2fsck first!"
+msgstr ""
+"Знайдено вузол (inode) з неправильною кількістю посилань. Рекомендується "
+"спочатку запустити e2fsck."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr "Недостатньо вільних вузлів (inode)!"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+msgid "File system is too full to remove a group!"
+msgstr "Файлова система надто заповнена, щоб видалити групу!"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+msgid "File system has too many allocated inodes to remove a group!"
+msgstr ""
+"У файловій системі виділено надто багато вузлів (inode), щоб видалити групу!"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr "додавання груп"
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, c-format
+msgid "Your file system is too full to resize it to %i blocks. Sorry."
+msgstr "Файлова система надто заповнена щоб змінити її розмір до %i блоків."
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, c-format
+msgid ""
+"Your file system has too many occupied inodes to resize it to %i blocks. "
+"Sorry."
+msgstr ""
+"У файловій системі надто багато зайнятих i-вузлів, щоб змінити її розмір до %"
+"i блоків."
+
+#: libparted/fs/ext2/ext2_resize.c:666
+msgid "File system was not cleanly unmounted! You should run e2fsck."
+msgstr ""
+"Файлова система була неправильно відключена! Необхідно запустити e2fsck."
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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'."
+
+#: libparted/fs/ext2/ext2_resize.c:691
+#, 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' після завершення зміни розміру."
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+msgid "Cross-linked blocks found! Better go run e2fsck first!"
+msgstr ""
+"Виявлено блоки з перехресними посиланнями! Краще спочатку запустити e2fsck!"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "Блок %i не має посилання? Дивно"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "Блок %i не повинен бути відміченим (%d, %d)!"
+
+#: libparted/fs/ext2/interface.c:186
+msgid ""
+"The ext2 file system passed a basic check. For a more comprehensive check, "
+"use the e2fsck program."
+msgstr ""
+"Файлова система ext2 пройшла загальну перевірку. Для більш докладної "
+"перевірки користуйтесь програмою e2fsck."
+
+#: libparted/fs/ext2/interface.c:203
+msgid "Sorry, can't move the start of ext2 partitions yet!"
+msgstr "Нажаль, переміщення початку розділів типу ext2 ще не підтримується!"
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr "Не вдається очистити буфер кешу!"
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr "записування метаданих груп"
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr "Файлова система занадто маленька для ext2."
+
+#: libparted/fs/fat/calc.c:135
+#, c-format
+msgid ""
+"You need %s of free disk space to shrink this partition to this size. "
+"Currently, only %s is free."
+msgstr ""
+"Необхідно %s вільного простору, щоб зменшити розділ до такого розміру (зараз "
+"у вас вільно лише %s)."
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+msgid ""
+"Cluster start delta = %d, which is not a multiple of the cluster size %d."
+msgstr ""
+"Кластер починається зі зсувом %d, що не є цілим числом кластерів розміру %d."
+
+#: libparted/fs/fat/fat.c:308
+#, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr "Розділ надто великий/малий для файлової системи типу %s."
+
+#: libparted/fs/fat/fat.c:474
+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 для файлової системи, а потім повторіть цю "
+"команду."
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr "Для цього типу FAT немає допустимих конфігурацій."
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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)."
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+msgid ""
+"File system is reporting the free space as %d clusters, not %d clusters."
+msgstr ""
+"Файлова система повідомляє про вільний простір %d кластерів, а не %d "
+"кластерів."
+
+#: libparted/fs/fat/fat.c:874
+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/resize.c:159
+msgid ""
+"There's not enough room in the root directory for all of the files. Either "
+"cancel, or ignore to lose the files."
+msgstr ""
+"Не вистачає простору для всіх файлів в кореневому каталозі. Виберіть "
+"\"Скасувати\", якщо проігноруєте, це призведе до втрати файлів."
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr "Помилка записування у кореневий каталог."
+
+#: libparted/fs/fat/resize.c:489
+msgid "If you leave your file system as FAT16, then you will have no problems."
+msgstr ""
+"Якщо залишити файлову систему як FAT16, тоді у вас не виникатиме проблем."
+
+#: libparted/fs/fat/resize.c:492
+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 (або посібник з вашого дистрибутиву)."
+
+#: libparted/fs/fat/resize.c:500
+msgid ""
+"If you leave your file system as FAT32, then you will not introduce any new "
+"problems."
+msgstr ""
+"Якщо ви залишаєте файлову систему як FAT32, тоді не виникне ніяких нових "
+"проблем."
+
+#: libparted/fs/fat/resize.c:504
+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."
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr "Бажаєте використовувати FAT32?"
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: libparted/fs/fat/resize.c:551
+msgid ""
+"The file system can only be resized to this size by converting to FAT16."
+msgstr ""
+"Змінити розмір файлової системи на вказаний розмір можна лише при "
+"перетворенні на FAT16."
+
+#: libparted/fs/fat/resize.c:567
+msgid ""
+"The file system can only be resized to this size by converting to FAT32."
+msgstr ""
+"Змінити розмір файлової системи на вказаний розмір можна лише при "
+"перетворенні на FAT32."
+
+#: libparted/fs/fat/resize.c:580
+msgid ""
+"GNU Parted cannot resize this partition to this size. We're working on it!"
+msgstr ""
+"GNU Parted нездатен змінити розмір розділу на вказане значення. Ми над цим "
+"працюємо!"
+
+#: 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:139
+#, 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:164
+#, 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:213
+msgid "FAT boot sector says logical sector size is 0. This is weird. "
+msgstr ""
+"Завантажувальний сектор FAT містить розмір логічного сектора, що дорівнює 0. "
+"Це дивно."
+
+#: libparted/fs/fat/bootsector.c:219
+msgid "FAT boot sector says there are no FAT tables. This is weird. "
+msgstr ""
+"У завантажувальному секторі FAT не міститься інформація про таблиці FAT. Це "
+"дивно."
+
+#: libparted/fs/fat/bootsector.c:225
+msgid "FAT boot sector says clusters are 0 sectors. This is weird. "
+msgstr ""
+"У відповідності до завантажувального сектора FAT, кластер містить 0 "
+"секторів. Це дивно."
+
+#: libparted/fs/fat/bootsector.c:235
+msgid "File system is FAT12, which is unsupported."
+msgstr "Файлові системи типу FAT12 не підтримуються."
+
+#: libparted/fs/fat/bootsector.c:411
+#, 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/fat/count.c:152
+#, c-format
+msgid "Bad directory entry for %s: first cluster is the end of file marker."
+msgstr ""
+"Неправильний елемент каталогу %s: перший кластер є кінцем маркера файла."
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+msgid ""
+"Bad FAT: unterminated chain for %s. You should run dosfsck or scandisk."
+msgstr ""
+"Помилка у FAT: незавершений ланцюг для %s. Потрібно запустити dosfsck або "
+"scandisk."
+
+#: libparted/fs/fat/count.c:174
+#, c-format
+msgid ""
+"Bad FAT: cluster %d outside file system in chain for %s. You should run "
+"dosfsck or scandisk."
+msgstr ""
+"Помилка у FAT: кластер %d знаходиться поза межами файлової системи у ланцюгу "
+"для %s. Потрібно запустити dosfsck або scandisk."
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+msgid ""
+"Bad FAT: cluster %d is cross-linked for %s. You should run dosfsck or "
+"scandisk."
+msgstr ""
+"Помилка у FAT: перехресне посилання у кластері %d для %s. Потрібно запустити "
+"dosfsck або scandisk."
+
+#: libparted/fs/fat/count.c:203
+#, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr "%s дорівнює %dk, але має %d кластерів (%dk)."
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+msgid ""
+"The file %s is marked as a system file. This means moving it could cause "
+"some programs to stop working."
+msgstr ""
+"Файл %s позначений як системний файл. Це означає, що його переміщення може "
+"призвести до припинення роботи деяких програм."
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:269
+#, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "fat_table_set: кластер %ld знаходиться поза межами файлової системи"
+
+#: libparted/fs/fat/table.c:301
+#, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "fat_table_get: кластер %ld знаходиться поза межами файлової системи"
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "fat_table_alloc_cluster: немає вільних кластерів"
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Невідома сигнатура '%10s' розділу підкачки linux."
+
+#: libparted/fs/linux_swap/linux_swap.c:318
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Невідома сигнатура '%10s' розділу підкачки linux."
+
+#: libparted/fs/linux_swap/linux_swap.c:358
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Невідома сигнатура '%10s' розділу підкачки linux."
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr "Надто багато пошкоджених сторінок."
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr "Файлова система містить помилки."
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr "Пошкоджені блоки не вдається прочитати."
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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, але в цій позиції "
+"вже існує інший. Слід перевірити файлову систему!"
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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, але в цій позиції вже "
+"існує інший. Цього не повинно бути!"
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+msgid "Could not update the extent cache for HFS file with CNID %X."
+msgstr "Не вдається оновити кеш екстенту для файлу HFS з CNID %X."
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr "Спроба прочитати файл HFS з CNID %X перед EOF."
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr "Не вдається знайти сектор %lli з файлу HFS з CNID %X."
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+msgid "Trying to write HFS file with CNID %X behind EOF."
+msgstr "Спроба записати файл HFS з CNID %X перед EOF."
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+msgid "Could not update the extent cache for HFS+ file with CNID %X."
+msgstr "Не вдається оновити кеш екстенту для файлу HFS+ з CNID %X."
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr "Спроба прочитати файл HFS+ з CNID %X перед EOF."
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr "Не вдається знайти сектор %lli з файлу HFS+ з CNID %X."
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+msgid "Trying to write HFS+ file with CNID %X behind EOF."
+msgstr "Спроба записати файл HFS+ з CNID %X перед EOF."
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr "Розмір HFS не можна змінювати таким способом."
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr "Помилка переносу даних."
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr "При переносі даних частина даних залишилась наприкінці тому."
+
+#: libparted/fs/hfs/hfs.c:320
+msgid "writing HFS Master Directory Block"
+msgstr "записується головний блок каталогу"
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr "При відкриванні не виявлено правильну сигнатуру HFS[+X]."
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr "Версія %d системи HFS+ не підтримується."
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr "Версія %d системи HFSX не підтримується."
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr "При переносі даних наприкінці розділу залишились деякі дані."
+
+#: libparted/fs/hfs/hfs.c:720
+msgid "Error while writing the allocation file."
+msgstr "Помилка запису виділеного файлу."
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr "Помилка запису частини сумісності виділеного файлу."
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr "запис заголовку тому HFS+"
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr "Помилка пошуку файлу відомих пошкоджених блоків."
+
+#: libparted/fs/hfs/hfs.c:904
+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+."
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr "Розмір HFS+ не можна змінювати таким способом."
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr "зменшення вбудованого тому HFS+"
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr "Помилка зміни розміру тому HFS+."
+
+#: libparted/fs/hfs/hfs.c:998
+msgid "shrinking HFS wrapper"
+msgstr "оболонка скорочення HFS"
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr "оновлення помилка оболонки HFS."
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+msgid ""
+"This is not a real %s check. This is going to extract special low level "
+"files for debugging purposes."
+msgstr ""
+"Це не справжня перевірка %s. Відбувається лише отримання спеціальних "
+"ньзькорівневих файлів для налагодження."
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr "Неправильна контрольна сума заголовка списку блоків."
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+msgid ""
+"Invalid size of a transaction block while replaying the journal (%i bytes)."
+msgstr ""
+"Неправильний розмір блоку транзакції при повторному накладанні журналу (%i "
+"байтів)."
+
+#: libparted/fs/hfs/journal.c:260
+msgid ""
+"Journal stored outside of the volume are not supported. Try to desactivate "
+"the journal and run Parted again."
+msgstr ""
+"Журнал розміщено поза межами тому не підтримується. Слід вимкнути журнал та "
+"перезапустити Parted."
+
+#: libparted/fs/hfs/journal.c:271
+msgid "Journal offset or size is not multiple of the sector size."
+msgstr "Початок чи розмір журналу не є цілим числом секторів."
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr "Неправильні сигнатури у заголовку журналу."
+
+#: libparted/fs/hfs/journal.c:302
+msgid "Journal size mismatch between journal info block and journal header."
+msgstr ""
+"Розмір журналу не відповідає значенню у інформаційному блоці журналу та "
+"заголовку журналу."
+
+#: libparted/fs/hfs/journal.c:314
+msgid "Some header fields are not multiple of the sector size."
+msgstr "Розмір деяких полів заголовку не складає ціле число секторів."
+
+#: libparted/fs/hfs/journal.c:323
+msgid ""
+"The sector size stored in the journal is not 512 bytes. Parted only "
+"supports 512 bytes length sectors."
+msgstr ""
+"Розмір сектора, що зберігається у журналі, не дорівнює 512 байтам. Parted "
+"підтримує лише сектори розміром 512 байтів."
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr "Неправильна контрольна сума журналу."
+
+#: libparted/fs/hfs/journal.c:353
+msgid ""
+"The journal is not empty. Parted must replay the transactions before "
+"opening the file system. This will modify the file system."
+msgstr ""
+"Журнал не порожній. Parted маж накласти транзакції перед відкривання "
+"файлової системи. Це призведе до зміни файлової системи."
+
+#: libparted/fs/hfs/journal.c:381
+msgid ""
+"The volume header or the master directory block has changed while replaying "
+"the journal. You should restart Parted."
+msgstr ""
+"При накладанні журналу змінився заголовок тому чи блок головного каталогу. "
+"Слід перезапустити Parted."
+
+#: libparted/fs/hfs/probe.c:51
+#, 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 байтів."
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr "Екстент не був переміщений."
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+msgid ""
+"A reference to an extent comes from a place it should not. You should check "
+"the file system!"
+msgstr ""
+"Посилання на екстент з місця, з якого не має бути посилання. Слід перевірити "
+"файлову систему!"
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr "Цей том HFS не містить файл каталогу. Досить дивно!"
+
+#: libparted/fs/hfs/reloc.c:475
+msgid "This HFS volume has no extents overflow file. This is quite unusual!"
+msgstr "Цей том HFS не містить файлу перекривання екстентів. Досить дивно!"
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+msgid ""
+"The extents overflow file should not contain its own extents! You should "
+"check the file system."
+msgstr ""
+"Файл перекривання екстентів не має містить власних екстентів! Слід "
+"перевірити файлову систему."
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+msgid "Could not cache the file system in memory."
+msgstr "Не вдається занести у кеш файлову систему у пам'яті."
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr "Список неправильних блоків не було завантажено."
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr "Помилка при переміщенні екстенту."
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr "Цей том HFS+ не містить файлу каталогу. Досить дивно!"
+
+#: libparted/fs/hfs/reloc_plus.c:619
+msgid "This HFS+ volume has no extents overflow file. This is quite unusual!"
+msgstr "Цей том HFS+ не містить файлу перекривання екстентів. Досить дивно!"
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr "відображає це повідомлення"
+
+#: parted/parted.c:95
+#, fuzzy
+msgid "lists partition layout on all block devices"
+msgstr "вивести список таблиць розділів на усіх пристроях"
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr "ніколи не запитувати втручання користувача"
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr "відображає версію"
+
+#: parted/parted.c:111
+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:114
+msgid "LABEL-TYPE is one of: "
+msgstr "ТИП-ЕТИКЕТКИ один з: "
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr "ОЗНАКА одне з: "
+
+#: parted/parted.c:116
+msgid "UNIT is one of: "
+msgstr "БЛОК одне з: "
+
+#: parted/parted.c:117
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "ТИП-РОЗДІЛУ один з: основний, логічний, розширений\n"
+
+#: parted/parted.c:119
+msgid "FS-TYPE is one of: "
+msgstr "ТИП-ФС один з: "
+
+#: parted/parted.c:120
+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:123
+msgid "STATE is one of: on, off\n"
+msgstr "СТАН один з: on, off\n"
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "ПРИСТРІЙ - зазвичай /dev/hda чи /dev/sda\n"
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr "НАЗВА - будь-яке слово на ваш вибір\n"
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr "Розділ повинен мати один з наступних типів FS-TYPE: "
+
+#: parted/parted.c:130
+#, 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 - 2006 Free Software Foundation, Inc.\n"
+"Ця програма є вільним програмним забезпеченням, на неї поширюється "
+"Універсальна Публічна Ліцензія GNU.\n"
+"\n"
+"Ця програма розповсюджується зі сподіванням,що вона буде корисною, але БЕЗ "
+"БУДЬ-ЯКИХ ГАРАНТІЙ; навіть без неявної гарантії КОМЕРЦІЙНОЇ ЦІННОСТІ чи "
+"ПРИДАТНОСТІ ДЛЯ ПЕВНОЇ МЕТИ. Докладнішу інформацію про це дивіться у "
+"Універсальній Публічній Ліцензії GNU.\n"
+
+#: parted/parted.c:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(залишилось часу %.2d:%.2d)"
+
+#: parted/parted.c:195
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+"Розділ %s наразі зайнятий. Слід відключити його, перш ніж змінювати його "
+"програмою Parted."
+
+#: parted/parted.c:211
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "Розділи на %s наразі зайняті."
+
+#: parted/parted.c:223
+msgid ""
+"The existing file system will be destroyed and all data on the partition "
+"will be lost. Do you want to continue?"
+msgstr ""
+"Існуюча файлова система буде знищена разом з усіма даними на ній. Продовжити?"
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+msgid "Partition number?"
+msgstr "Номер розділу?"
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr "Пристрій-джерело?"
+
+#: parted/parted.c:504
+msgid "Source partition number?"
+msgstr "Номер вихідного розділу?"
+
+#: parted/parted.c:509
+msgid "Can't copy an extended partition."
+msgstr "Не можна копіювати розширені розділи."
+
+#: parted/parted.c:515
+msgid "Destination partition number?"
+msgstr "Номер цільового розділу?"
+
+#: parted/parted.c:615
+msgid "New disk label type?"
+msgstr "Нова етикетка диску?"
+
+#: parted/parted.c:656
+msgid "File system?"
+msgstr "Файлова система?"
+
+#: parted/parted.c:707 parted/parted.c:878
+msgid "Partition type?"
+msgstr "Тип розділу?"
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+msgid "Partition name?"
+msgstr "Назва розділу?"
+
+#: parted/parted.c:722 parted/parted.c:895
+msgid "File system type?"
+msgstr "Тип файлової системи?"
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr "Початок?"
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr "Кінець?"
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+"Ви вказали розділ у межах %s - %s.\n"
+"Найближчий до нього діапазон %s - %s. Ви згодні з таким діапазоном?"
+
+#: parted/parted.c:890
+msgid "An extended partition cannot hold a file system. Did you want mkpart?"
+msgstr "Розширений розділ не може мати файлову систему. Виконати mkpart?"
+
+#: parted/parted.c:1050
+msgid "Can't move an extended partition."
+msgstr "Переміщення розширених розділів не підтримується."
+
+#: parted/parted.c:1079
+msgid "Can't move a partition onto itself. Try using resize, perhaps?"
+msgstr "Не можна переміщувати розділ сам у себе. Може спробувати resize?"
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr "Номер: %d\n"
+
+#: parted/parted.c:1228
+#, c-format
+msgid "Flags: %s\n"
+msgstr "Ознаки: %s\n"
+
+#: parted/parted.c:1229
+#, c-format
+msgid "File System: %s\n"
+msgstr "Файлова система: %s\n"
+
+#: parted/parted.c:1230
+msgid "Size: "
+msgstr "Розмір: "
+
+#: parted/parted.c:1235
+msgid "Minimum size: "
+msgstr "Мінімальний розмір: "
+
+#: parted/parted.c:1238
+msgid "Maximum size: "
+msgstr "Максимальний розмір: "
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr "Модель: %s (%s)\n"
+
+#: parted/parted.c:1364
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "Диск %s: %s\n"
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "Розмір сектора (логічний/фізичний): %lldБ/%lldБ\n"
+
+#: parted/parted.c:1383
+#, 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:1392
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "таблиця розділів: %s\n"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr "Номер"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Start"
+msgstr "Початок"
+
+#: parted/parted.c:1407 parted/parted.c:1410
+msgid "End"
+msgstr "Кінець"
+
+#: parted/parted.c:1410
+msgid "Size"
+msgstr "Розмір"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr "Тип"
+
+#: parted/parted.c:1416
+msgid "File system"
+msgstr "Файлова система"
+
+#: parted/parted.c:1419
+msgid "Name"
+msgstr "Назва"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr "Ознаки"
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr "Вільний простір"
+
+#: parted/parted.c:1624
+#, 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:1663
+msgid "searching for file systems"
+msgstr "пошук файлових систем"
+
+#: parted/parted.c:1877
+msgid "New device?"
+msgstr "Новий пристрій?"
+
+#: parted/parted.c:1902
+msgid "Flag to Invert?"
+msgstr "Ознака, яку інвертувати?"
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr "Нове значення?"
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr "Блок?"
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "check"
+
+#: parted/parted.c:2096
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr ""
+"check НОМЕР виконати просту перевірку файлової системи"
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "cp"
+
+#: parted/parted.c:2105
+msgid ""
+"cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another "
+"partition"
+msgstr ""
+"cp [З-ПРИСТРОЮ] З-НОМЕР У-НОМЕР копіювати файлову систему у інший розділ"
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:2114
+#, fuzzy
+msgid ""
+"help [COMMAND] print general help, or help on "
+"COMMAND"
+msgstr "help [КОМАНДА] вивести довідку, або довідку про КОМАНДА"
+
+#: parted/parted.c:2120
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:2120
+msgid "mktable"
+msgstr "mktable"
+
+#: parted/parted.c:2123
+msgid ""
+"mklabel,mktable LABEL-TYPE create a new disklabel (partition "
+"table)"
+msgstr ""
+"mklabel,mktable ТИП_ЕТИКЕТКИ створити нову позначку диску (таблицю розділів)"
+
+#: parted/parted.c:2129
+msgid "mkfs"
+msgstr "mkfs"
+
+#: parted/parted.c:2132
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+"mkfs НОМЕР ТИП-ФС створити файлову систему ТИП-ФС у розділі НОМЕР"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:2141
+msgid "mkpart PART-TYPE [FS-TYPE] START END make a partition"
+msgstr "mkpart ТИП-РОЗДІЛУ [ТИП-ФС] ПОЧАТОК КІНЕЦЬ створити розділ"
+
+#: parted/parted.c:2147
+#, 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:2152
+msgid "mkpartfs"
+msgstr "mkpartfs"
+
+#: parted/parted.c:2155
+msgid ""
+"mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system"
+msgstr ""
+"mkpartfs ТИП-РОЗДІЛУ ТИП-ФС ПОЧАТОК КІНЕЦЬ створити розділ з файловою "
+"системою"
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr "move"
+
+#: parted/parted.c:2164
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "move НОМЕР ПОЧАТОК КІНЕЦЬ перемістити розділ з номером НОМЕР"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:2172
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr "name НОМЕР НАЗВА призначити назву НАЗВА розділу НОМЕР"
+
+#: parted/parted.c:2177
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr "вивести список таблиць розділів на усіх пристроях"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:2199
+msgid "quit exit program"
+msgstr "quit вихід з програми"
+
+#: parted/parted.c:2204
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:2207
+msgid ""
+"rescue START END rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue ПОЧАТОК КІНЕЦЬ знайти втрачені розділи між ПОЧАТОК та КІНЕЦЬ"
+
+#: parted/parted.c:2213
+msgid "resize"
+msgstr "resize"
+
+#: parted/parted.c:2216
+msgid ""
+"resize NUMBER START END resize partition NUMBER and its "
+"file system"
+msgstr "resize НОМЕР ПОЧАТОК КІНЕЦЬ змінити розмір розділу НОМЕР"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:2227
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "rm НОМЕР видалити розділ з номером НОМЕР"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:2235
+msgid "select DEVICE choose the device to edit"
+msgstr "select ПРИСТРІЙ вибирати пристрій для роботи"
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:2243
+msgid ""
+"set NUMBER FLAG STATE change the FLAG on partition NUMBER"
+msgstr "set НОМЕР ОЗНАКА СТАН змінити ознаку розділу з номером НОМЕР"
+
+#: parted/parted.c:2249
+msgid "toggle"
+msgstr "toggle"
+
+#: parted/parted.c:2252
+msgid ""
+"toggle [NUMBER [FLAG]] toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+"toggle [НОМЕР [ОЗНАКА]] перемикнути ознаку ОЗНАКА розділу з номером "
+"НОМЕР"
+
+#: parted/parted.c:2258
+msgid "unit"
+msgstr "unit"
+
+#: parted/parted.c:2261
+msgid "unit UNIT set the default unit to UNIT"
+msgstr ""
+"unit БЛОК встановити для типового блоку значення БЛОК"
+
+#: parted/parted.c:2266
+msgid "version"
+msgstr "версія"
+
+#: parted/parted.c:2269
+#, fuzzy
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"версія вивести поточну версію GNU Parted та "
+"інформацію про авторське право"
+
+#: parted/parted.c:2273
+#, fuzzy
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+"команда version виводить інформацію про версію цієї програми GNU Parted\n"
+
+#: parted/parted.c:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "Пристрій не знайдено"
+
+#: parted/parted.c:2412
+#, fuzzy
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr ""
+"ПОПЕРЕДЖЕННЯ: Ви не маєте привілей адміністратора. Отримайте повноваження.\n"
+
+#: parted/parted.c:2450
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Не забудьте оновити /etc/fstab, якщо це необхідно.\n"
+
+#: parted/ui.c:160
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+"Ласкаво просимо до GNU Parted! Перелік команд виводиться командою 'help'.\n"
+
+#: parted/ui.c:163
+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:168
+#, 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"
+"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"
+
+#: parted/ui.c:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+#, fuzzy
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"Помилка: SEGV_MAPERR (Адреса не прив'язана до об'єкту)"
+
+#: parted/ui.c:372
+#, fuzzy
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"Помилка: SEGV_ACCERR (Неправильні права доступу для прив'язаного об'єкту)"
+
+#: parted/ui.c:377
+#, fuzzy
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"Помилка: Виявлено загальний сигнал SIGSEGV."
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"Помилка: FPE_INTDIV (Ціле: ділення на нуль)"
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"Помилка: FPE_INTOVF (Ціле число: переповнення)"
+
+#: parted/ui.c:420
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"Помилка: FPE_INTDIV (Число з рухомою комою: ділення на нуль)"
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"Помилка: FPE_FLTOVF (Число з рухомою комою: переповнення)"
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"Помилка: FPE_FLTUND (Число з рухомою комою: дуже мале значення)"
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"Помилка: FPE_FLTRES (Число з рухомою комою: неточний результат)"
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"Помилка: FPE_FLTINV (Число з рухомою комою: неправильна операція)"
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"Помилка: FPE_FLTSUB (Число з рухомою комою: підпис поза межами)"
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"Помилка: Виявлено загальний сигнал SIGFPE."
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"Помилка: ILL_ILLOPC (Недопустимий код операцій)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"Помилка: ILL_ILLOPN (Неправильний операнд)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"Помилка: ILL_ILLADR (Неправильний режим адресації)"
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"Помилка: ILL_ILLTRP (Неправильна пастка)"
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"Помилка: ILL_PRVOPC (Код привілейованої операції)"
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"Помилка: ILL_PRVREG (Привілейований регістр)"
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"Помилка: ILL_COPROC (Помилка співпроцесора)"
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"Помилка: ILL_BADSTK (Внутрішня помилка стеку)"
+
+#: parted/ui.c:523
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"Помилка: Виявлено загальний сигнал SIGILL."
+
+#: parted/ui.c:1024
+msgid "Expecting a partition number."
+msgstr "Очікується номер розділу."
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "Розділ не існує."
+
+#: parted/ui.c:1053
+msgid "Expecting a file system type."
+msgstr "Очікується тип файлова система."
+
+#: parted/ui.c:1060
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Невідомий тип файлової системи \"%s\"."
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr "Очікується тип дискової етикетки."
+
+#: parted/ui.c:1178
+msgid "Can't create any more partitions."
+msgstr "Не вдається додатково створити розділи."
+
+#: parted/ui.c:1188
+msgid "Expecting a partition type."
+msgstr "Очікується тип розділу."
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr "on"
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr "off"
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "КЛЮЧІ:"
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "КОМАНДИ:"
+
+#: parted/ui.c:1445
+#, c-format
+msgid "Using %s\n"
+msgstr "Використовується %s\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#~ msgid "GNU Parted cannot resize this file system, please useresize2fs."
+#~ msgstr ""
+#~ "GNU Parted не може змінювати цю файлову систему, користуйтесь "
+#~ "useresize2fs."
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "коли необхідно, запитувати втручання користувача"
+
+#~ msgid "GNU Parted Version information:\n"
+#~ msgstr "Версія GNU Parted:\n"
+
+#~ msgid ""
+#~ "print [free|NUMBER|all] display the partition table, a "
+#~ "partition, or all devices"
+#~ msgstr ""
+#~ "print [free|НОМЕР|all] вивести таблицю розділів, розділ або усі "
+#~ "пристрої"
+
+#~ 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 ""
+#~ "Без аргументів, виводить таблицю розділів. Якщо вказано 'free',\n"
+#~ "відображається інформація про вільний простір, якщо вказано номер\n"
+#~ "розділу, виводиться докладніша інформація про розділ. \n"
+#~ "Якщо вказано 'all', відображається інформація про усі пристрої.\n"
+
+#~ msgid "Attempt to read sectors %ld-%ld outside of partition on %s."
+#~ msgstr "Спроба прочитати сектори %ld-%ld за межами розділу на %s."
diff --git a/parted-1.8.7/po/vi.gmo b/parted-1.8.7/po/vi.gmo
new file mode 100644
index 0000000..664e00b
--- /dev/null
+++ b/parted-1.8.7/po/vi.gmo
Binary files differ
diff --git a/parted-1.8.7/po/vi.po b/parted-1.8.7/po/vi.po
new file mode 100644
index 0000000..b58d937
--- /dev/null
+++ b/parted-1.8.7/po/vi.po
@@ -0,0 +1,3321 @@
+# translation of parted-1.6.6.po to Vietnamese
+# Copyright (C) 2005 Free Software Foundation, Inc.
+# Tran Thi Hoang Quyen <banhdauxanhhaiduong@gmail.com>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: parted 1.6.6\n"
+"Report-Msgid-Bugs-To: bug-parted@gnu.org\n"
+"POT-Creation-Date: 2007-05-09 17:02-0400\n"
+"PO-Revision-Date: 2005-07-03 21:04+0400\n"
+"Last-Translator: Tran Thi Hoang Quyen <banhdauxanhhaiduong@gmail.com>\n"
+"Language-Team: Vietnamese <gnomevi-list@lists.sourceforge.net>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.9.1\n"
+
+#: lib/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "Dạng hệ thống tập tin không rõ \"%s\"."
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "Lỗi mở %s: %s"
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, 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). Mở %s chỉ đọc."
+
+#: libparted/arch/beos.c:411 libparted/arch/linux.c:1431
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "%s khi tìm để đọc trên %s"
+
+#: libparted/arch/beos.c:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "%s khi đọc trên %s"
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "Không ghi được tới %s, vì mở nó chỉ đọc."
+
+#: libparted/arch/beos.c:496 libparted/arch/linux.c:1570
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "%s khi tìm để ghi trên %s"
+
+#: libparted/arch/beos.c:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "%s khi ghi trên %s"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "Quá nhiều trang xấu."
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr "Không mở được %s."
+
+#: libparted/arch/gnu.c:114
+msgid "Unable to probe store."
+msgstr "Không thăm dò được kho chứa."
+
+#: libparted/arch/gnu.c:352
+#, 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 ""
+"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 mềm 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 Người dùng Parted để biết thêm chi tiết."
+
+#: libparted/arch/gnu.c:369
+#, 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 ""
+"Bảng phân vùng trên %s (%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:380 parted/parted.c:2443
+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 Người dùng Parted để biết thêm chi tiết."
+
+#: libparted/arch/gnu.c:772
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s đang cố đồng bộ sync %s lên đĩa"
+
+#: libparted/arch/linux.c:408
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "Không stat được thiết bị %s - %s."
+
+#: libparted/arch/linux.c:523
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:539
+#, c-format
+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 ""
+
+#: libparted/arch/linux.c:579
+#, fuzzy, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "Không nhận ra kích thước của %s (%s)"
+
+#: libparted/arch/linux.c:668
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "Không lấy được tên của thiết bị %s - %s"
+
+#: libparted/arch/linux.c:677
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:698
+#, 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:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "Lỗi chạy thiết bị SCSI %s - %s"
+
+#: libparted/arch/linux.c:928
+#, fuzzy, c-format
+msgid ""
+"The device %s has zero length, and can't possibly store a file system or "
+"partition table. Perhaps you selected the wrong device?"
+msgstr ""
+"Thiết bị %s có chiều dài bằng không, và không thể chứa một hệ thống tập tin "
+"hay một bảng phân vùng. Có thể đã chọn sai thiết bị?"
+
+#: libparted/arch/linux.c:1032
+#, 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 ""
+"Không nhận ra cấu trúc hình học của tập tin/thiết bị. Không được sử dụng "
+"Parted trừ khi THỰC SỰ biết mình đang làm gì!"
+
+#: libparted/arch/linux.c:1110
+msgid "DAC960 RAID controller"
+msgstr "Điều khiển DAC960 RAID controller"
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr "Dãy Thông minh của Compaq"
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr "Điều khiển ATARAID Controller"
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr "Điều khiển I2O Controller"
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr ""
+
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "Không rõ"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "ped_device_new() Dạng thiết bị không hỗ trợ"
+
+#: libparted/arch/linux.c:2083
+#, 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 ""
+"Lỗi cung cấp cho nhân thông tin về sự sửa đổi phân vùng %s - %s. Có nghĩa "
+"là Linux sẽ không biết về những thay đổi đã tạo ra trên %s cho đến khi khởi "
+"động lại - vì thế không nên gắn hoặc sử dụng phân vùng này trước khi khởi "
+"động lại."
+
+#: libparted/arch/linux.c:2262
+#, 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 ""
+"Nhân 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 cho đến khi khởi động lại. Người "
+"dùng nên khởi động lại máy tính trước khi thao tác với %s."
+
+#: libparted/arch/linux.c:2368
+#, fuzzy, c-format
+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 ""
+"Nhân 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 cho đến khi khởi động lại. Người "
+"dùng nên khởi động lại máy tính trước khi thao tác với %s."
+
+#: libparted/cs/geom.c:162
+msgid "Can't have the end before the start!"
+msgstr "Không thể có kết thúc đứng trước bắt đầu!"
+
+#: 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:366
+#, fuzzy, c-format
+msgid "Attempt to write sectors %ld-%ld outside of partition on %s."
+msgstr "Cố ghi các sector %ld-%ld nằm ngoài phân vùng trên %s"
+
+#: libparted/cs/geom.c:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr "đang kiểm tra các khối xấu"
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "Không mở được %s - nhãn đĩa không nhận ra."
+
+#: libparted/disk.c:471
+#, 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ợ %s. Có thể đã biên dịch nó chỉ đọc."
+
+#: libparted/disk.c:598
+#, fuzzy, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "Phân vùng %d %.3fMb, nhưng hệ thống tập tin là %.3fMb."
+
+#: libparted/disk.c:1075
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "Nhãn đĩa %s không hỗ trợ các phân vùng mở rộng."
+
+#: libparted/disk.c:1634
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr "Nhãn đĩa %s không hỗ trợ các phân vùng mở rộng hay lôgíc."
+
+#: libparted/disk.c:1647
+#, fuzzy
+msgid "Too many primary partitions."
+msgstr "Quá nhiều phân vùng chính"
+
+#: libparted/disk.c:1656
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr "Không thêm được phân vùng lôgíc vào %s, vì không có phân vùng mở rộng."
+
+#: libparted/disk.c:1680
+#, fuzzy, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "Không thể có hơn một phân vùng mở rộng trên %s"
+
+#: libparted/disk.c:1690
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Không thể có phân vùng lôgíc nằm ngoài phân vùng mở rộng."
+
+#: libparted/disk.c:1715
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr "Không thể có phân vùng lôgíc nằm ngoài phân vùng mở rộng trên %s."
+
+#: libparted/disk.c:1725 libparted/disk.c:1779 libparted/disk.c:1945
+#, fuzzy
+msgid "Can't have overlapping partitions."
+msgstr "Không thể có phân vùng đè lên nhau"
+
+#: libparted/disk.c:1733
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "Không thể có phân vùng chính nằm trong một phân vùng mở rộng."
+
+#: libparted/disk.c:2140
+msgid "metadata"
+msgstr "dữ liệu mêta"
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "trống"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "mởrộng"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "lôgíc"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "chính"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "kđộng"
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr "gốc"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr "swap"
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "ẩn"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr "hp-dịchvụ"
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2190
+#, fuzzy, c-format
+msgid "Unknown partition flag, %d."
+msgstr "Không rõ cờ phân vùng, %d."
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "Thông tin"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "Cảnh báo"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "Lỗi"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "Lỗi nặng"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "Lỗi bug"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr "Chưa phát triển"
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr "Sửa"
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "Có"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "Không"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "Được"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "Thử lại"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "Lờ đi"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "Dừng"
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org containing at least the version (%s) and the following "
+"message: "
+msgstr ""
+"Phát hiện ra một lỗi bug trong GNU parted. Xin hãy gửi email thông báo tới "
+"bug-parted@gnu.org kèm theo phiên bản (%s) và thông tin sau:"
+
+#: libparted/filesys.c:384
+msgid "Could not detect file system."
+msgstr "Không nhận ra hệ thống tập tin."
+
+#: libparted/filesys.c:395
+#, fuzzy
+msgid "The file system is bigger than its volume!"
+msgstr "Hệ thống tập tin lớn hơn volume của nó!"
+
+#: libparted/filesys.c:403
+#, c-format
+msgid "Support for opening %s file systems is not implemented yet."
+msgstr "Hỗ trợ mở %s hệ thống tập tin còn chưa được phát triển."
+
+#: libparted/filesys.c:445
+#, c-format
+msgid "Support for creating %s file systems is not implemented yet."
+msgstr "Hỗ trợ tạo %s hệ thống tập tin còn chưa được phát triển."
+
+#: libparted/filesys.c:505
+#, c-format
+msgid "Support for checking %s file systems is not implemented yet."
+msgstr "Hỗ trợ kiểm tra %s hệ thống tập tin còn chưa được phát triển."
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr "sao chép các khối thô sơ"
+
+#: libparted/filesys.c:582
+msgid "growing file system"
+msgstr "đang tăng hệ thống tập tin"
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr "Không sao chép được tới một phân vùng chèn lên nhau."
+
+#: libparted/filesys.c:644
+#, fuzzy, c-format
+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 phát triể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."
+
+#: libparted/filesys.c:658
+#, c-format
+msgid "Support for copying %s file systems is not implemented yet."
+msgstr "Hỗ trợ sao chép chép %s hệ thống tập tin chưa được phát triển."
+
+#: libparted/filesys.c:696
+#, c-format
+msgid "Support for resizing %s file systems is not implemented yet."
+msgstr "Hỗ trợ thay đổi kích thước %s hệ thống tập tin chưa được phát triển."
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, fuzzy
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr "Hệ thống tập tin lớn hơn volume của nó!"
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "check"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, fuzzy
+msgid ""
+"The reiserfs file system passed a basic check. For a more comprehensive "
+"check, run reiserfsck --check."
+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."
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, fuzzy
+msgid "Sorry, can't move the start of reiserfs partitions yet."
+msgstr "Rất tiếc, tạm thời chưa thể di chuyển đầu của phân vùng ext2!"
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+msgid "shrinking"
+msgstr "đang rút ngắn"
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "Cảnh báo"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, fuzzy, c-format
+msgid "Device is too small for %lu blocks."
+msgstr "Hệ thống tập tin quá nhỏ cho ext2."
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "Hỗ trợ tạo %s hệ thống tập tin còn chưa được phát triển."
+
+#: libparted/labels/aix.c:148
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "Hỗ trợ tạo %s hệ thống tập tin còn chưa được phát triển."
+
+#: libparted/labels/aix.c:161
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr "Hỗ trợ tạo %s hệ thống tập tin còn chưa được phát triển."
+
+#: libparted/labels/aix.c:171
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr "Hỗ trợ tạo %s hệ thống tập tin còn chưa được phát triển."
+
+#: libparted/labels/aix.c:189
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr "Hỗ trợ tạo %s hệ thống tập tin còn chưa được phát triển."
+
+#: libparted/labels/aix.c:199
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr "Hỗ trợ tạo %s hệ thống tập tin còn chưa được phát triển."
+
+#: libparted/labels/bsd.c:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "Không thể thoả mãn mọi sự bắt buộc trên phân vùng."
+
+#: libparted/labels/bsd.c:526
+#, fuzzy
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "Không phân phối được một rãnh nhãn đĩa bsd"
+
+#: libparted/labels/dasd.c:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "Không nhận ra kích thước của %s (%s)"
+
+#: libparted/labels/dasd.c:781
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "Không phân phối được một rãnh nhãn đĩa bsd"
+
+#: libparted/labels/dos.c:827
+#, fuzzy, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "Bảng phân vùng sai trên %s - sai chữ ký %x"
+
+#: libparted/labels/dos.c:855
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "Bảng phân vùng sai - phân vùng đệ quy trên %s."
+
+#: libparted/labels/dos.c:1318
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr ""
+
+#: libparted/labels/dos.c:1958
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+#: libparted/labels/dvh.c:190
+#, fuzzy, 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 các volume). Nếu lờ "
+"đi, thì mọi volume khởi động sẽ bị xóa."
+
+#: libparted/labels/dvh.c:313
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr "Tổng kiểm tra bị sai, chỉ ra bảng phân vùng bị hỏng."
+
+#: libparted/labels/dvh.c:616
+msgid "Only primary partitions can be root partitions."
+msgstr "Chỉ các phân vùng chính có thể là phân vùng gốc."
+
+#: libparted/labels/dvh.c:630
+msgid "Only primary partitions can be swap partitions."
+msgstr "Chỉ các phân vùng chính có thể là phân vùng swap."
+
+#: libparted/labels/dvh.c:644
+msgid "Only logical partitions can be a boot file."
+msgstr "Chỉ phân vùng lôgíc có thể là tập tin khởi động."
+
+#: libparted/labels/dvh.c:721
+msgid "Only logical partitions (boot files) have a name."
+msgstr "Chỉ phân vùng lôgíc (tập tin khởi động) có một tên."
+
+#: libparted/labels/dvh.c:812
+msgid "Too many primary partitions"
+msgstr "Quá nhiều phân vùng chính"
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "%s khi ghi trên %s"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, fuzzy, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr "%s %s %s"
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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 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 đã xóa 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:648
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+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:698
+#, 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:827
+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:862
+#, fuzzy
+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 thì vẫn tốt, vì thế sẽ sử dụng sao lưu."
+
+#: libparted/labels/gpt.c:870
+#, 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 ""
+"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/mac.c:181
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "Chữ ký sai %x cho nhãn đĩa Mac."
+
+#: libparted/labels/mac.c:226
+msgid "Partition map has no partition map entry!"
+msgstr "Sơ đồ phân vùng không có mục sơ đồ phân vùng!"
+
+#: libparted/labels/mac.c:273
+#, 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:532
+#, 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:550
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "Phân vùng %d có một chiều dài sai 0 byte!"
+
+#: libparted/labels/mac.c:580
+#, fuzzy
+msgid "The data region doesn't start at the start of the partition."
+msgstr "Vùng dữ liệu không bắt đầu tại đầu của phân vùng"
+
+#: libparted/labels/mac.c:597
+#, fuzzy
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "Vùng khởi động không bắt đầu tại đầu của phân vùng"
+
+#: libparted/labels/mac.c:611
+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:622
+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:675
+#, 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:688
+#, 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 ổ cho biết kích thước khối là %d byte, nhưng Linux nói nó %d byte."
+
+#: libparted/labels/mac.c:736
+msgid "No valid partition map found."
+msgstr "Không tìm thấy một sơ đồ phân vùng đúng."
+
+#: libparted/labels/mac.c:795
+#, fuzzy, 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:822
+#, fuzzy
+msgid "Weird! There are 2 partitions map entries!"
+msgstr "Kỳ lạ - hai mục sơ đồ phân vùng!"
+
+#: libparted/labels/mac.c:1347
+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 swap sẽ khiến Linux không nhận ra "
+"chúng như trước."
+
+#: libparted/labels/mac.c:1443
+#, fuzzy
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr "Không thêm được phân vùng khác - sơ đồ phân quá nhỏ!"
+
+#: libparted/labels/pc98.c:354
+#, fuzzy, c-format
+msgid "Invalid partition table on %s."
+msgstr "Bảng phân vùng sai trên %s"
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, fuzzy, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries. This is still "
+"unsupported."
+msgstr ""
+"Phân vùng %d chưa sắp hàng tới khung cylinder. Cần thêm hỗ trợ cho tính "
+"năng này."
+
+#: libparted/labels/pc98.c:791
+msgid "Can't add another partition."
+msgstr "Không thêm được phân vùng khác."
+
+#: libparted/labels/rdb.c:162
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:497
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:600
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:697
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:740
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:1069
+#, fuzzy
+msgid "Unable to allocate a partition number."
+msgstr "Mong đợi một số của phân vùng."
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr "Nhận ra một nhãn đĩa Sun bị hỏng."
+
+#: libparted/labels/sun.c:266
+#, 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 ""
+"Cấu trúc CHS của đĩa (%d,%d,%d) không tương ứng cấu trúc chứa trong nhãn đĩa "
+"(%d,%d,%d)."
+
+#: libparted/labels/sun.c:288
+#, 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:442
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:737
+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 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:752
+msgid "Sun disk label is full."
+msgstr "Nhãn đĩa Sun đầy."
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr "Không đủ bộ nhớ."
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr ""
+
+#: libparted/unit.c:527
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "Mong đợi một số của phân vùng."
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:72
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s khi ghi trên %s"
+
+#: libparted/fs/amiga/amiga.c:278
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:289
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:318
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr ""
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr "Các mô tả nhóm đã thay đổi!"
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+#, fuzzy
+msgid "File system full!"
+msgstr "Đầy hệ thống tập tin!"
+
+#: libparted/fs/ext2/ext2.c:686
+#, fuzzy
+msgid "Invalid superblock. Are you sure this is an ext2 file system?"
+msgstr "Khối super sai. Đây chắc chắn là hệ thống tập tin ext2?"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+#, fuzzy
+msgid "File system has errors! You should run e2fsck."
+msgstr "Hệ thống tập tin có lỗi! Cần chạy e2fsck."
+
+#: libparted/fs/ext2/ext2.c:711
+#, fuzzy
+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 một vài lỗi."
+
+#: libparted/fs/ext2/ext2.c:731
+#, fuzzy
+msgid "File system has an incompatible feature enabled."
+msgstr "Hệ thống tập tin có tính năng không tương thích được bật"
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr "Lỗi phân phối cache bộ đệm."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+#, fuzzy
+msgid ""
+"Found an inode with a incorrect link count. Better go run e2fsck first!"
+msgstr ""
+"Tìm thấy một inode với số đếm liên kết sai. Tốt nhất hãy chạy e2fsck trước."
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr "Không đủ inode trống!"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+#, fuzzy
+msgid "File system is too full to remove a group!"
+msgstr "Hệ thống tập tin không còn đủ chỗ để xóa bỏ một nhóm!"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+#, fuzzy
+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!"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr "thêm nhóm"
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, fuzzy, c-format
+msgid "Your file system is too full to resize it to %i blocks. Sorry."
+msgstr ""
+"Hệ thống tập tin không còn đủ trống để thay đổi kích thước thành %i khối. "
+"Rất tiếc."
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, fuzzy, c-format
+msgid ""
+"Your file system has too many occupied inodes to resize it to %i blocks. "
+"Sorry."
+msgstr ""
+"Hệ thống tập tin không còn đủ inode để thay đổi kích thước thành %i khối. "
+"Rất tiếc."
+
+#: libparted/fs/ext2/ext2_resize.c:666
+#, fuzzy
+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."
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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ẾTBỊ' và sau đó "
+"'e2fsck -fD THIẾTBỊ'."
+
+#: libparted/fs/ext2/ext2_resize.c:691
+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 ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+#, fuzzy
+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!"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, fuzzy, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "Khối %i không có liên kết? Kỳ lạ"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, fuzzy, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "Không được đánh dấu khối %i!"
+
+#: libparted/fs/ext2/interface.c:186
+#, fuzzy
+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."
+
+#: libparted/fs/ext2/interface.c:203
+msgid "Sorry, can't move the start of ext2 partitions yet!"
+msgstr "Rất tiếc, tạm thời chưa thể di chuyển đầu của phân vùng ext2!"
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr "Không san bằng được cache bộ đệm!"
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr "đang ghi dữ liệu mêta của mỗi nhóm"
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr "Hệ thống tập tin quá nhỏ cho ext2."
+
+#: libparted/fs/fat/calc.c:135
+#, fuzzy, c-format
+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 %dM 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ó %dM trống)"
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+msgid ""
+"Cluster start delta = %d, which is not a multiple of the cluster size %d."
+msgstr ""
+"Delta bắt đầu cluster = %d, và không phải là bộ số của kích thước cluster %d."
+
+#: libparted/fs/fat/fat.c:308
+#, fuzzy, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr "Phân vùng quá lớn/nhỏ cho một hệ thống tập tin %s"
+
+#: libparted/fs/fat/fat.c:474
+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 "
+"(dừng), chạy scandisk trên hệ thống tập tin, sau đó quay lại."
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr "Không có cấu hình có thể cho dạng FAT này."
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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 cluster "
+"là %dk (mong đợi %dk); số cluster là %d (mong đợi %d); kích thước FAT là %d "
+"sector (mong đợi %d)."
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+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 cluster, không phải %d."
+
+#: libparted/fs/fat/fat.c:874
+#, fuzzy
+msgid ""
+"GNU Parted was miscompiled: the FAT boot sector should be 512 bytes. FAT "
+"support will be disabled."
+msgstr ""
+"Đã biên dịch sai GNU parted: sector khởi động FAT phải là 512 byte. Hỗ trợ "
+"FAT sẽ bị tắt bỏ."
+
+#: libparted/fs/fat/resize.c:159
+#, 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 ""
+"Không đủ chỗ trống trong thư mục gốc, cho tất cả các tập tin. Hoặc dừng "
+"(cancel), hoặc lờ đi (ignore) và sẽ mất các tập tin."
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr "Lỗi ghi tới thư mục gốc."
+
+#: libparted/fs/fat/resize.c:489
+#, fuzzy
+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ì."
+
+#: libparted/fs/fat/resize.c:492
+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)."
+
+#: libparted/fs/fat/resize.c:500
+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."
+
+#: libparted/fs/fat/resize.c:504
+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."
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr "Ngài muốn dùng FAT32?"
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: libparted/fs/fat/resize.c:551
+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."
+
+#: libparted/fs/fat/resize.c:567
+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."
+
+#: libparted/fs/fat/resize.c:580
+#, fuzzy
+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 đó!"
+
+#: 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ý hệ thống tập tin FAT sai."
+
+#: 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 sector sai cho hệ thống tập tin 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 cluster sai cho hệ thống tập tin FAT."
+
+#: libparted/fs/fat/bootsector.c:78
+#, fuzzy
+msgid ""
+"File system has an invalid number of reserved sectors for a FAT file system."
+msgstr "Hệ thống tập tin có số sector dự trữ sai cho hệ thống tập tin FAT."
+
+#: libparted/fs/fat/bootsector.c:85
+#, fuzzy
+msgid "File system has an invalid number of FATs."
+msgstr "Hệ thống tập tin có số hệ thống tập tin FAT sai."
+
+#: libparted/fs/fat/bootsector.c:139
+#, 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 sector lôgíc là %d. GNU Parted không làm "
+"việc chính xác với kích thước sector khác 512 byte."
+
+#: libparted/fs/fat/bootsector.c:164
+#, 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:213
+msgid "FAT boot sector says logical sector size is 0. This is weird. "
+msgstr "Sector khởi động FAT nói kích thước sector lôgíc là 0. Kỳ lạ. "
+
+#: libparted/fs/fat/bootsector.c:219
+msgid "FAT boot sector says there are no FAT tables. This is weird. "
+msgstr "Sector khởi động FAT nói không có bảng FAT. Kỳ lạ. "
+
+#: libparted/fs/fat/bootsector.c:225
+msgid "FAT boot sector says clusters are 0 sectors. This is weird. "
+msgstr "Sector khởi động FAT nói các cluster là các sector 0. Kỳ lạ. "
+
+#: libparted/fs/fat/bootsector.c:235
+#, fuzzy
+msgid "File system is FAT12, which is unsupported."
+msgstr "Hệ thống tập tin là FAT12, và không được hỗ trợ."
+
+#: libparted/fs/fat/bootsector.c:411
+#, 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 ""
+"Sector thông tin có chữ ký sai (%x). Hãy chọn dừng (cancel), và gửi một báo "
+"cáo lỗi bug. Nếu liều lĩnh, thì có thể lờ đi."
+
+#: libparted/fs/fat/count.c:152
+#, c-format
+msgid "Bad directory entry for %s: first cluster is the end of file marker."
+msgstr "Mục thư mục xấu cho %s: cluster đầu tiên là cuối của đánh dấu tập tin."
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+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."
+
+#: libparted/fs/fat/count.c:174
+#, fuzzy, c-format
+msgid ""
+"Bad FAT: cluster %d outside file system in chain for %s. You should run "
+"dosfsck or scandisk."
+msgstr ""
+"FAT Xấu: cluster %d ngoài hệ thống tập tin trong chuỗi cho %s. Cần chạy "
+"dosfsck hoặc scandisk."
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+msgid ""
+"Bad FAT: cluster %d is cross-linked for %s. You should run dosfsck or "
+"scandisk."
+msgstr ""
+"FAT Xấu: cluster %d là liên kết chồng chéo cho %s. Cần chạy dosfsck hoặc "
+"scandisk."
+
+#: libparted/fs/fat/count.c:203
+#, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr "%s là %dk, nhưng nó có %d cluster (%dk)."
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+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."
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+msgid ""
+"FAT %d media %x doesn't match the boot sector's media %x. You should "
+"probably run scandisk."
+msgstr ""
+"FAT %d thiết bị %x không tương ứng thiết bị sector khởi động %x. Có thể cần "
+"chạy scandisk."
+
+#: libparted/fs/fat/table.c:269
+#, fuzzy, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "fat_table_set: cluster %ld ngoài hệ thống tập tin"
+
+#: libparted/fs/fat/table.c:301
+#, fuzzy, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "fat_table_get: cluster %ld ngoài hệ thống tập tin"
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "fat_table_alloc_cluster: không còn cluster trống"
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "Chữ ký linux swap không nhận ra '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:318
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "Chữ ký linux swap không nhận ra '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:358
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "Chữ ký linux swap không nhận ra '%10s'."
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr "Quá nhiều trang xấu."
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr ""
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr ""
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+msgid "Could not update the extent cache for HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+msgid "Trying to write HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+msgid "Could not update the extent cache for HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+msgid "Trying to write HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:320
+#, fuzzy
+msgid "writing HFS Master Directory Block"
+msgstr "Lỗi ghi tới thư mục gốc."
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:720
+#, fuzzy
+msgid "Error while writing the allocation file."
+msgstr "Lỗi ghi tới thư mục gốc."
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:904
+msgid ""
+"It seems there is an error in the HFS wrapper: the bad blocks file doesn't "
+"contain the embedded HFS+ volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:998
+#, fuzzy
+msgid "shrinking HFS wrapper"
+msgstr "đang rút ngắn"
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+msgid ""
+"This is not a real %s check. This is going to extract special low level "
+"files for debugging purposes."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+msgid ""
+"Invalid size of a transaction block while replaying the journal (%i bytes)."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:260
+msgid ""
+"Journal stored outside of the volume are not supported. Try to desactivate "
+"the journal and run Parted again."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:271
+#, fuzzy
+msgid "Journal offset or size is not multiple of the sector size."
+msgstr ""
+"Delta bắt đầu cluster = %d, và không phải là bộ số của kích thước cluster %d."
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:302
+msgid "Journal size mismatch between journal info block and journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:314
+#, fuzzy
+msgid "Some header fields are not multiple of the sector size."
+msgstr ""
+"Delta bắt đầu cluster = %d, và không phải là bộ số của kích thước cluster %d."
+
+#: libparted/fs/hfs/journal.c:323
+msgid ""
+"The sector size stored in the journal is not 512 bytes. Parted only "
+"supports 512 bytes length sectors."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:353
+msgid ""
+"The journal is not empty. Parted must replay the transactions before "
+"opening the file system. This will modify the file system."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:381
+msgid ""
+"The volume header or the master directory block has changed while replaying "
+"the journal. You should restart Parted."
+msgstr ""
+
+#: libparted/fs/hfs/probe.c:51
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to %"
+"d bytes."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+msgid ""
+"A reference to an extent comes from a place it should not. You should check "
+"the file system!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:475
+msgid "This HFS volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+msgid ""
+"The extents overflow file should not contain its own extents! You should "
+"check the file system."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+#, fuzzy
+msgid "Could not cache the file system in memory."
+msgstr "Không nhận ra hệ thống tập tin."
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:619
+msgid "This HFS+ volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr "hiển thị trợ giúp này"
+
+#: parted/parted.c:95
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr "không bao giờ hỏi người dùng"
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr "hiển thị phiên bản"
+
+#: parted/parted.c:111
+#, 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 (NHỎ) là số của phân vùng sử dụng bởi Linux. Trên nhãn đĩa msdos, các "
+"phân vùng chính có số từ 1 đến 4, và phân vùng lôgíc từ 5 trở đi.\n"
+
+#: parted/parted.c:114
+msgid "LABEL-TYPE is one of: "
+msgstr "LABEL-TYPE là một trong số: "
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr "FLAG là một trong số: "
+
+#: parted/parted.c:116
+#, fuzzy
+msgid "UNIT is one of: "
+msgstr "FLAG là một trong số: "
+
+#: parted/parted.c:117
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "PART-TYPE là một trong số: primary, logical, extended\n"
+
+#: parted/parted.c:119
+msgid "FS-TYPE is one of: "
+msgstr "FS-TYPE là một trong số: "
+
+#: parted/parted.c:120
+#, 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 và END tính theo mêga byte. Giá trị âm đếm từ cuối đĩa.\n"
+
+#: parted/parted.c:123
+msgid "STATE is one of: on, off\n"
+msgstr "STATE là một trong số: on, off\n"
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "DEVICE thông thường là /dev/hda hay /dev/sda\n"
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr "NAME là bất kỳ từ gì theo ý muốn\n"
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr ""
+
+#: parted/parted.c:130
+#, 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 ""
+"Đăng ký bản quyền (C) 1998, 1999, 2000, 2001, 2002, 2003 Free Software "
+"Foundation, Inc.\n"
+"Chương trình này là một phầm mềm miễn phí, theo bản quyền GNU General Public "
+"License.\n"
+"\n"
+"Chương trình này được phát hành với hy vọng rằng nó sẽ trở nên hữu ích, "
+"nhưng nó KHÔNG KÈM THEO BẤT KỲ SỰ BẢO ĐẢM NÀO, ngay cả những đảm bảo ngầm "
+"hiểu về việc THƯƠNG MẠI HÓA hay PHẢI PHÙ HỢP VỚI MỘT MỤC ĐÍCH CỤ THỂ NÀO. "
+"Hãy tham khảo giấy phép GNU General Public License để biết thêm chi tiết.\n"
+"\n"
+
+#: parted/parted.c:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(còn lại %.2d:%.2d)"
+
+#: parted/parted.c:195
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:211
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "(Các) phân vùng trên %s đang được dùng."
+
+#: parted/parted.c:223
+msgid ""
+"The existing file system will be destroyed and all data on the partition "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+msgid "Partition number?"
+msgstr "Số của phân vùng?"
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr "Thiết bị nguồn?"
+
+#: parted/parted.c:504
+msgid "Source partition number?"
+msgstr "Số của phân vùng của nguồn?"
+
+#: parted/parted.c:509
+#, fuzzy
+msgid "Can't copy an extended partition."
+msgstr "Không sao chép được phân vùng mở rộng."
+
+#: parted/parted.c:515
+msgid "Destination partition number?"
+msgstr "Số của phân vùng của đích?"
+
+#: parted/parted.c:615
+msgid "New disk label type?"
+msgstr "Dạng nhãn đĩa mới?"
+
+#: parted/parted.c:656
+msgid "File system?"
+msgstr "Hệ thống tập tin?"
+
+#: parted/parted.c:707 parted/parted.c:878
+msgid "Partition type?"
+msgstr "Dạng phân vùng?"
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+msgid "Partition name?"
+msgstr "Tên phân vùng?"
+
+#: parted/parted.c:722 parted/parted.c:895
+msgid "File system type?"
+msgstr "Dạng hệ thống tập tin?"
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr "Đầu?"
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr "Cuối?"
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+
+#: parted/parted.c:890
+#, fuzzy
+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?"
+
+#: parted/parted.c:1050
+#, fuzzy
+msgid "Can't move an extended partition."
+msgstr "Không thể di chuyển các phân vùng mở rộng."
+
+#: parted/parted.c:1079
+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?"
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr "Số nhỏ: %d\n"
+
+#: parted/parted.c:1228
+#, fuzzy, c-format
+msgid "Flags: %s\n"
+msgstr "Cờ: "
+
+#: parted/parted.c:1229
+#, c-format
+msgid "File System: %s\n"
+msgstr "Hệ thống tập tin: %s\n"
+
+#: parted/parted.c:1230
+#, fuzzy
+msgid "Size: "
+msgstr "Kíchthước: %10.3fMb (%d%%)\n"
+
+#: parted/parted.c:1235
+#, fuzzy
+msgid "Minimum size: "
+msgstr "Kích thước nhỏ nhất: %10.3fMb (%d%%)\n"
+
+#: parted/parted.c:1238
+#, fuzzy
+msgid "Maximum size: "
+msgstr "Kích thước lớn nhất: %10.3fMb (%d%%)\n"
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:1364
+#, fuzzy, c-format
+msgid "Disk %s: %s\n"
+msgstr "%s %s %s"
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:1383
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d. Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:1392
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "Tên phân vùng?"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr ""
+
+#: parted/parted.c:1406 parted/parted.c:1409
+#, fuzzy
+msgid "Start"
+msgstr "Đầu?"
+
+#: parted/parted.c:1407 parted/parted.c:1410
+#, fuzzy
+msgid "End"
+msgstr "Cuối?"
+
+#: parted/parted.c:1410
+#, fuzzy
+msgid "Size"
+msgstr "resize"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr ""
+
+#: parted/parted.c:1416
+#, fuzzy
+msgid "File system"
+msgstr "Hệ thống tập tin?"
+
+#: parted/parted.c:1419
+#, fuzzy
+msgid "Name"
+msgstr "name"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr "Cờ"
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1624
+#, fuzzy, 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 %.3fMb -> %.3fMb. Thêm nó vào bảng phân "
+"vùng?"
+
+#: parted/parted.c:1663
+msgid "searching for file systems"
+msgstr "tìm kiếm hệ thống tập tin"
+
+#: parted/parted.c:1877
+msgid "New device?"
+msgstr "Thiết bị mới?"
+
+#: parted/parted.c:1902
+#, fuzzy
+msgid "Flag to Invert?"
+msgstr "Cờ để thay đổi?"
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr "Trạng thái mới?"
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "check"
+
+#: parted/parted.c:2096
+#, fuzzy
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr ""
+"check MINOR thực hiện một kiểm tra đơn giản trên hệ thống "
+"tập tin"
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "cp"
+
+#: parted/parted.c:2105
+#, fuzzy
+msgid ""
+"cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another "
+"partition"
+msgstr ""
+"cp [FROM-DEVICE] FROM-MINOR TO-MINOR sao chép hệ thống tập tin tới phân "
+"vùng khác"
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:2114
+#, fuzzy
+msgid ""
+"help [COMMAND] print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [COMMAND] in trợ giúp chung, hoặc trợ giúp trên câu lệnh "
+"COMMAND"
+
+#: parted/parted.c:2120
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:2120
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:2123
+#, fuzzy
+msgid ""
+"mklabel,mktable LABEL-TYPE create a new disklabel (partition "
+"table)"
+msgstr "mklabel LABEL-TYPE tạo một nhãn đĩa mới (bảng phân vùng)"
+
+#: parted/parted.c:2129
+msgid "mkfs"
+msgstr "mkfs"
+
+#: parted/parted.c:2132
+#, fuzzy
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+"mkfs MINOR FS-TYPE tạo một hệ thống tập tin dạng FS-TYPE trên "
+"phân vùng MINOR"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:2141
+#, fuzzy
+msgid "mkpart PART-TYPE [FS-TYPE] START END make a partition"
+msgstr "mkpart PART-TYPE [FS-TYPE] START END tạo một phân vùng"
+
+#: parted/parted.c:2147
+#, 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 tạo một phân vùng và không tạo một hệ thống tập tin mới trên phân "
+"vùng đó. Có thể chỉ ra FS-TYPE để đặt một ID phân vùng thích hợp.\n"
+
+#: parted/parted.c:2152
+msgid "mkpartfs"
+msgstr "mkpartfs"
+
+#: parted/parted.c:2155
+#, fuzzy
+msgid ""
+"mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system"
+msgstr ""
+"mkpartfs PART-TYPE FS-TYPE START END tạo một phân vùng với một hệ thống "
+"tập tin"
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr "move"
+
+#: parted/parted.c:2164
+#, fuzzy
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "move MINOR START END di chuyển phân vùng MINOR"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:2172
+#, fuzzy
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr "name MINOR NAME đặt tên phân vùng MINOR bằng tên NAME"
+
+#: parted/parted.c:2177
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"print [MINOR] hiển thị bảng phân vùng, hoặc một phân vùng"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:2199
+#, fuzzy
+msgid "quit exit program"
+msgstr "quit thoát khỏi chương trình"
+
+#: parted/parted.c:2204
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:2207
+#, fuzzy
+msgid ""
+"rescue START END rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue START END phục hồi một phân vùng đã mất cạnh đầu START "
+"và cuối END"
+
+#: parted/parted.c:2213
+msgid "resize"
+msgstr "resize"
+
+#: parted/parted.c:2216
+#, fuzzy
+msgid ""
+"resize NUMBER START END resize partition NUMBER and its "
+"file system"
+msgstr ""
+"rescue START END phục hồi một phân vùng đã mất cạnh đầu START "
+"và cuối END"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:2227
+#, fuzzy
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "rm MINOR xóa bỏ phân vùng MINOR"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:2235
+#, fuzzy
+msgid "select DEVICE choose the device to edit"
+msgstr "select DEVICE chọn thiết bị để thực hiện"
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:2243
+#, fuzzy
+msgid ""
+"set NUMBER FLAG STATE change the FLAG on partition NUMBER"
+msgstr "set MINOR FLAG STATE thay đổi cờ trên phân vùng MINOR"
+
+#: parted/parted.c:2249
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:2252
+msgid ""
+"toggle [NUMBER [FLAG]] toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:2258
+#, fuzzy
+msgid "unit"
+msgstr "quit"
+
+#: parted/parted.c:2261
+#, fuzzy
+msgid "unit UNIT set the default unit to UNIT"
+msgstr "quit thoát khỏi chương trình"
+
+#: parted/parted.c:2266
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:2269
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:2273
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "Không tìm thấy thiết bị nào"
+
+#: parted/parted.c:2412
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:2450
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Đừng quên cập nhật /etc/fstab, nếu cần thiết.\n"
+
+#: parted/ui.c:160
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:163
+#, 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ử dụng: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n"
+"Áp dụng các câu lệnh COMMAND với các tham số PARAMETERS tới thiết bị "
+"DEVICE. Nếu\n"
+"không có câu lệnh COMMAND nào chạy trong chế độ hỏi đáp.\n"
+
+#: parted/ui.c:168
+#, 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:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:372
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:377
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:420
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:523
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:1024
+msgid "Expecting a partition number."
+msgstr "Mong đợi một số của phân vùng."
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "Phân vùng không tồn tại."
+
+#: parted/ui.c:1053
+msgid "Expecting a file system type."
+msgstr "Mong đợi một dạng hệ thống tập tin."
+
+#: parted/ui.c:1060
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "Dạng hệ thống tập tin không rõ \"%s\"."
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr "Mong đợi một dạng nhãn đĩa."
+
+#: parted/ui.c:1178
+msgid "Can't create any more partitions."
+msgstr "Không tạo được thêm phân vùng nữa."
+
+#: parted/ui.c:1188
+msgid "Expecting a partition type."
+msgstr "Mong đợi một dạng phân vùng."
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr "bật"
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr "tắt"
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "TÙY CHỌN:"
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "CÂU LỆNH:"
+
+#: parted/ui.c:1445
+#, c-format
+msgid "Using %s\n"
+msgstr "Sử dụng %s\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "khi cần thiết, hỏi người dùng thao tác cần làm"
+
+#, 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 ""
+#~ "Khi không có tham số, print hiển thị toàn bộ bảng phân vùng. Nếu đưa\n"
+#~ "ra số của bảng phân vùng, thì hiển thị thông tin chi tiết hơn về phân "
+#~ "vùng\n"
+#~ "đó.\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 ""
+#~ "Kích thước sector trên %s là %d byte. Parted không làm việc chính xác "
+#~ "được với các ổ có kích thước sector không phải %d byte"
+
+#~ msgid "Could not read geometry of %s - %s."
+#~ msgstr "Không đọc được cấu trúc hình học của %s - %s."
+
+#~ msgid "Device %s has dodgey geometry."
+#~ msgstr "Thiết bị %s có cấu trúc hình học khó hiểu."
+
+#~ msgid "IDE"
+#~ msgstr "IDE"
+
+#~ msgid "SCSI"
+#~ msgstr "SCSI"
+
+#~ msgid "Device %s is neither a SCSI nor IDE drive."
+#~ msgstr "Thiết bị %s không phải là một ổ SCSI hay IDE."
+
+#~ msgid "Error reading %s (%s) to determine if partition is mounted."
+#~ msgstr "Lỗi đọc %s (%s) để xem đã gắn phân vùng hay chưa."
+
+#~ 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 ""
+#~ "Không nhận ra được các phân vùng đã gắn qua /proc/mounts hay /etc/ mtab "
+#~ "hay chưa. Cần kiểm tra lại để chắc chắn là không thay đổi kích thước hay "
+#~ "sửa đổi của hệ thống tập tin đã gắn. (Thậm chí cả khi gắn chỉ đọc)"
+
+#~ 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 ""
+#~ "Bảng phân vùng trên %s đã thay đổi. Có nhiều nguyên nhân của sự thay đổi "
+#~ "này. Tuy nhiên, nguyên nhân có khả năng cao nhất là Linux đã nhận ra cấu "
+#~ "trúc hình học của BIOS cho %s bị sai. GNU Parted cho rẳng cấu trúc thực "
+#~ "sự phải là %d/%d/%d (không phải %d/%d/%d). Người dùng cần kiểm tra BIOS "
+#~ "của mình trước. Có thể gửi tới Linux bằng tham số %s=%d,%d,%d trên dòng "
+#~ "lệnh. Hãy xem tài liệu của LILO hay GRUB để biết thêm thông tin. Nếu "
+#~ "người dùng cho rằng cấu trúc Parted đã đề nghị là sai, thì có thể chọn "
+#~ "Ignore (lờ đi) để tiếp tục (và sau đó sửa Linux). Nếu không, hãy chọn "
+#~ "Cancel (Đóng) và sửa Linux và/hoặc BIOS ngay bây giờ."
+
+#~ 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 ""
+#~ "Bảng phân vùng trên %s đã thay đổi. Có nhiều nguyên nhân của sự thay đổi "
+#~ "này. Thông thường, nguyên nhân là Linux đã nhận ra cấu trúc hình học của "
+#~ "BIOS bị sai. Tuy nhiên, đây không phải là trường hợp như vậy. Có thể lờ "
+#~ "đi, nhưng lờ đi có thể gây ra vấn đề (có thể sửa) với một số trình khởi "
+#~ "động, và tạo vấn đề với các hệ thống tập tin FAT. Nên sử dụng 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 ""
+#~ "Không sắp hàng đúng được các phân vùng. Có thể một công cụ phân khác đã "
+#~ "tạo ra một bảng phân vùng sai, vì nó không có cấu trúc đúng của BIOS. Có "
+#~ "thể lờ đi, nhưng lờ đi có thể sẽ gây vấn đề (có thể sửa) với một số trình "
+#~ "khởi động."
+
+#~ msgid "Attempt to read sectors %ld-%ld outside of partition on %s"
+#~ msgstr "Cố đọc các sector %ld-%ld nằm ngoài phân vùng trên %s"
+
+#~ msgid ""
+#~ "This ext2 filesystem has a rather strange layout! Parted can't resize "
+#~ "this (yet)."
+#~ msgstr ""
+#~ "Hệ thống tập tin ext2 này có bố trí lạ! Parted (tạm thời) không thể thay "
+#~ "đổi kích thước."
+
+#~ msgid "File system has an invalid signature for a FAT file systems."
+#~ msgstr "Hệ thống tập tin có chữ ký hệ thống tập tin FAT sai."
+
+#~ msgid ""
+#~ "Partition %s is being used. Modifying it while it is in use could cause "
+#~ "severe corruption."
+#~ msgstr "Phân vùng %s đang được dùng. Sửa đổi nó bây giờ có thể gây hỏng."
+
+#~ msgid ""
+#~ "You requested to create a partition at %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Người dùng đã yêu cầu tạo một phân vùng tại %.3f-%.3fMb. Vùng gần nhất "
+#~ "Parted có thể quản lý là %.3f-%.3fMb."
+
+#~ msgid ""
+#~ "You requested to move the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Người dùng đã yêu cầu di chuyển một phân vùng tới %.3f-%.3fMb. Vùng gần "
+#~ "nhất Parted có thể quản lý là %.3f-%.3fMb."
+
+#~ msgid "Disk geometry for %s: 0.000-%.3f megabytes\n"
+#~ msgstr "Cấu trúc hình học cho %s: 0.000-%.3f mêga byte\n"
+
+#~ msgid "Disk label type: %s\n"
+#~ msgstr "Dạng nhãn đĩa: %s\n"
+
+#~ msgid "Minor Start End "
+#~ msgstr "Sốnhỏ Đầu Cuối "
+
+#~ msgid "Type "
+#~ msgstr "Dạng "
+
+#~ msgid "Filesystem "
+#~ msgstr "Httậptin "
+
+#~ msgid "Name "
+#~ msgstr "Tên "
+
+#~ msgid ""
+#~ "You requested to resize the partition to %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "Người dùng đã yêu cầu thay đổi kích thước một phân vùng thành %.3f-"
+#~ "%.3fMb. Vùng gần nhất Parted có thể quản lý là %.3f-%.3fMb."
+
+#~ msgid "resize MINOR START END resize filesystem on partition MINOR"
+#~ msgstr ""
+#~ "resize MINOR START END thay đổi kích thước hệ thống tập tin trên "
+#~ "phân vùng 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 ""
+#~ "Bạn tìm thấy một lỗi bug trong GNU Parted. Xin hãy gửi email báo cáo lỗi "
+#~ "tới bug-parted@gnu.org kèm theo phiên bản (%s), và thông báo sau:\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 ""
+#~ " Người dùng có các phân vùng FAT của Windows không sử dụng LBA. Nếu "
+#~ "BIOS hỗ trợ LBA, thì cần chuyển tới LBA bằng thiết lập cờ LBA trên tất cả "
+#~ "các phân vùng FAT. Nếu không, cần chắc là hệ điều hành và BIOS có cùng "
+#~ "cấu trúc hình học của đĩa trước khi thay đổi kích thước bất kỳ phân vùng "
+#~ "FAT nào."
+
+#~ msgid ""
+#~ "The operating system thinks the geometry on %s is %d/%d/%d. Therefore, "
+#~ "cylinder 1024 ends at %.3fM.%s"
+#~ msgstr ""
+#~ "Hệ điều hành nghĩ là hình học trên %s là %d/%d/%d. Tuy nhiên, cylinder "
+#~ "số 1024 kết thúc tại %.3fM.%s"
+
+#~ msgid "The operating system thinks the geometry on %s is %d/%d/%d.%s"
+#~ msgstr "Hệ điều hành nghĩ là hình học trên %s là %d/%d/%d.%s"
diff --git a/parted-1.8.7/po/zh_CN.gmo b/parted-1.8.7/po/zh_CN.gmo
new file mode 100644
index 0000000..235dac4
--- /dev/null
+++ b/parted-1.8.7/po/zh_CN.gmo
Binary files differ
diff --git a/parted-1.8.7/po/zh_CN.po b/parted-1.8.7/po/zh_CN.po
new file mode 100644
index 0000000..0da7851
--- /dev/null
+++ b/parted-1.8.7/po/zh_CN.po
@@ -0,0 +1,3221 @@
+# 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: 2007-05-09 17:02-0400\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-translation@lists.linux.net.cn>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=gb2312\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: lib/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "δ֪µÄÎļþϵͳÀàÐÍ¡°%s¡±¡£"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+msgid "Invalid range end"
+msgstr ""
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "´ò¿ª %s ³ö´í£º%s"
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, c-format
+msgid "Unable to open %s read-write (%s). %s has been opened read-only."
+msgstr "ÎÞ·¨ÒÔ¶Áд·½Ê½´ò¿ª %s (%s)¡£%s ÒѰ´ÕÕÖ»¶Á·½Ê½´ò¿ª¡£"
+
+#: libparted/arch/beos.c:411 libparted/arch/linux.c:1431
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "ÔÚΪ¶ÁÈ¡ %2$s ¶øµ÷Óà seek ʱ %1$s"
+
+#: libparted/arch/beos.c:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "ÔÚ¶ÁÈ¡ %2$s ÆÚ¼ä %1$s"
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "ÓÉÓÚ %s ÊÇÒÔÖ»¶Á·½Ê½´ò¿ªµÄ£¬Òò´ËÎÞ·¨Ð´Èë¡£"
+
+#: libparted/arch/beos.c:496 libparted/arch/linux.c:1570
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "ÔÚΪдÈë %2$s µ÷Óà seek ʱ %1$s"
+
+#: libparted/arch/beos.c:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "ÔÚдÈë %2$s ʱ %1$s"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "¹ý¶àµÄ»µÒ³¡£"
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr "ÎÞ·¨´ò¿ª %s¡£"
+
+#: libparted/arch/gnu.c:114
+msgid "Unable to probe store."
+msgstr "ÎÞ·¨Ì½²â´æ´¢É豸¡£"
+
+#: libparted/arch/gnu.c:352
+#, 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:369
+#, 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:380 parted/parted.c:2443
+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:772
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s ÊÔͼ½« %s ͬ²½µ½´ÅÅÌÉÏ"
+
+#: libparted/arch/linux.c:408
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "ÎÞ·¨¶ÔÉ豸 %s - %s ×ö stat ²Ù×÷¡£"
+
+#: libparted/arch/linux.c:523
+#, c-format
+msgid ""
+"Could not determine sector size for %s: %s.\n"
+"Using the default sector size (%lld)."
+msgstr ""
+
+#: libparted/arch/linux.c:539
+#, c-format
+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 ""
+
+#: libparted/arch/linux.c:579
+#, fuzzy, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "ÎÞ·¨È·¶¨ %s (%s) µÄ´óС"
+
+#: libparted/arch/linux.c:668
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "ÎÞ·¨»ñÈ¡É豸 %s - %s µÄ±êʶ"
+
+#: libparted/arch/linux.c:677
+msgid "Generic IDE"
+msgstr ""
+
+#: libparted/arch/linux.c:698
+#, 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:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "³õʼ»¯ SCSI É豸 %s - %s ³ö´í"
+
+#: libparted/arch/linux.c:928
+#, fuzzy, c-format
+msgid ""
+"The device %s has zero length, and can't possibly store a file system or "
+"partition table. Perhaps you selected the wrong device?"
+msgstr ""
+"É豸 %s µÄ³¤¶ÈΪÁ㣬Òò´ËÎÞ·¨±£´æÎļþϵͳ»ò·ÖÇø±í¡£¿ÉÄÜÄúÑ¡ÔñÁË´íÎóµÄÉ豸£¿"
+
+#: libparted/arch/linux.c:1032
+#, 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:1110
+msgid "DAC960 RAID controller"
+msgstr "DAC960 RAID ¿ØÖÆÆ÷"
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr "Compaq ÖÇÄÜÕóÁÐ"
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr "ATARAID ¿ØÖÆÆ÷"
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr "I2O ¿ØÖÆÆ÷"
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr ""
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr ""
+
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "δ֪"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "ped_device_new() ²»Ö§³ÖµÄÉ豸ÀàÐÍ"
+
+#: libparted/arch/linux.c:2083
+#, 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:2262
+#, 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/arch/linux.c:2368
+#, fuzzy, c-format
+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 ×öÈκβÙ×÷ Ö®Ç°ÖØÐÂÆô¶¯ÄúµÄ¼ÆËã»ú¡£"
+
+#: libparted/cs/geom.c:162
+msgid "Can't have the end before the start!"
+msgstr "ÎÞ·¨ÔÚ¿ªÊ¼Ö®Ç°½áÊø£¡"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "ÎÞ·¨È÷ÖÇø³¬³ö´ÅÅÌ£¡"
+
+#: libparted/cs/geom.c:366
+#, 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:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr "¼ì²é»µ¿é"
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "ÎÞ·¨´ò¿ª %s - ÎÞ·¨Ê¶±ðµÄ´ÅÅ̱êÇ©¡£"
+
+#: libparted/disk.c:471
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s. Perhaps it was compiled "
+"read-only."
+msgstr "Õâ¸ö libparted ²»Ö§³Ö¶Ô %s µÄд²Ù×÷¡£¿ÉÄÜËüÊǰ´Ö»¶Á·½Ê½±àÒëµÄ¡£"
+
+#: libparted/disk.c:598
+#, fuzzy, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "·ÖÇø %d Ϊ %.3fMb£¬µ«ÎļþϵͳΪ %.3fMb¡£"
+
+#: libparted/disk.c:1075
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "%s ´ÅÅ̱êÇ©²»Ö§³ÖÀ©Õ¹·ÖÇø¡£"
+
+#: libparted/disk.c:1634
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr "%s ´ÅÅ̱êÇ©²»Ö§³ÖÂß¼»òÀ©Õ¹·ÖÇø¡£"
+
+#: libparted/disk.c:1647
+#, fuzzy
+msgid "Too many primary partitions."
+msgstr "¹ý¶àµÄÖ÷·ÖÇø"
+
+#: libparted/disk.c:1656
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr "ÓÉÓÚûÓÐÀ©Õ¹·ÖÇø£¬ÎÞ·¨½«Âß¼·ÖÇøÌí¼Óµ½ %s¡£"
+
+#: libparted/disk.c:1680
+#, fuzzy, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "%s Éϲ»Äܺ¬ÓжàÓÚÒ»¸öÀ©Õ¹·ÖÇø"
+
+#: libparted/disk.c:1690
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "Âß¼·ÖÇø²»ÄÜ´¦ÓÚÀ©Õ¹·ÖÇøÖ®Íâ¡£"
+
+#: libparted/disk.c:1715
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr "%s ÉϵÄÂß¼·ÖÇø²»ÄÜ´¦ÓÚÀ©Õ¹·ÖÇøÖ®Íâ¡£"
+
+#: libparted/disk.c:1725 libparted/disk.c:1779 libparted/disk.c:1945
+#, fuzzy
+msgid "Can't have overlapping partitions."
+msgstr "·ÖÇø²»ÄÜÖØµþ"
+
+#: libparted/disk.c:1733
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "À©Õ¹·ÖÇøÖв»Äܺ¬ÓÐÖ÷·ÖÇø¡£"
+
+#: libparted/disk.c:2140
+msgid "metadata"
+msgstr "ÔªÊý¾Ý"
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "¿ÕÏпռä"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "À©Õ¹·ÖÇø"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "Âß¼·ÖÇø"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "Ö÷·ÖÇø"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "Æô¶¯"
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr "¸ù"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr "¶Ô»»·ÖÇø"
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "Òþ²Ø·ÖÇø"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr ""
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr ""
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr ""
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr ""
+
+#: libparted/disk.c:2190
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr ""
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "ÐÅÏ¢"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "¾¯¸æ"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "´íÎó"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "ÖÂÃü´íÎó"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "Bug"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr "δʵÏÖ"
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr "ÐÞÕý"
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "ÊÇ"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "·ñ"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "È·ÈÏ"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "ÖØÊÔ"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "ºöÂÔ"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "·ÅÆú"
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org containing at least the version (%s) and the following "
+"message: "
+msgstr ""
+"·¢ÏÖ GNU Parted ÖÐµÄ bug¡£Ç뽫º¬Óа汾 (%s) ºÍÒÔÏÂÐÅÏ¢µÄ bug ±¨¸æ·¢Ë͵½ bug-"
+"parted@gnu.org£º"
+
+#: libparted/filesys.c:384
+msgid "Could not detect file system."
+msgstr "ÎÞ·¨¼ì²âÎļþϵͳ¡£"
+
+#: libparted/filesys.c:395
+#, fuzzy
+msgid "The file system is bigger than its volume!"
+msgstr "Îļþϵͳ±ÈËüµÄ¾í»¹´ó£¡"
+
+#: libparted/filesys.c:403
+#, c-format
+msgid "Support for opening %s file systems is not implemented yet."
+msgstr "¹ØÓÚ´ò¿ª %s ÎļþϵͳµÄÖ§³ÖÉÐδʵÏÖ¡£"
+
+#: libparted/filesys.c:445
+#, c-format
+msgid "Support for creating %s file systems is not implemented yet."
+msgstr "¹ØÓÚ´´½¨ %s ÎļþϵͳµÄÖ§³ÖÉÐδʵÏÖ¡£"
+
+#: libparted/filesys.c:505
+#, c-format
+msgid "Support for checking %s file systems is not implemented yet."
+msgstr "¹ØÓÚ¼ì²é %s ÎļþϵͳµÄÖ§³ÖÉÐδʵÏÖ¡£"
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr "Ôʼ¿é¸´ÖÆ"
+
+#: libparted/filesys.c:582
+msgid "growing file system"
+msgstr "ÕýÔÚÀ©´óÎļþϵͳ"
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr "ÎÞ·¨¸´ÖƵ½ÖصþµÄ·ÖÇø¡£"
+
+#: libparted/filesys.c:644
+#, fuzzy, c-format
+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 À´ËµÉв»Ö§³ÖÖ±½ÓµÄÎļþϵͳ¸´ÖÆ¡£µ«Ö§³Ö¸Ä±ä´óС¡£Òò´Ë£¬Ö»ÒªÐ·ÖÇø±ÈÔ·Ö"
+"Çø´ó£¬¾ÍÄܹ»¸´ÖÆÎļþϵͳ¡£ËùÒÔ£¬ËõСÄúÊÔͼ¸´ÖƵķÖÇø£¬»ò¸´ÖƵ½½Ï´óµÄ·ÖÇø¡£"
+
+#: libparted/filesys.c:658
+#, c-format
+msgid "Support for copying %s file systems is not implemented yet."
+msgstr "¹ØÓÚ¸´ÖÆ %s ÎļþϵͳµÄÖ§³ÖÉÐδʵÏÖ¡£"
+
+#: libparted/filesys.c:696
+#, c-format
+msgid "Support for resizing %s file systems is not implemented yet."
+msgstr "¸Ä±ä %s ÎļþϵͳµÄÖ§³ÖÉÐδʵÏÖ¡£"
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, fuzzy
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr "Îļþϵͳ±ÈËüµÄ¾í»¹´ó£¡"
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "¼ì²é"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, fuzzy
+msgid ""
+"The reiserfs file system passed a basic check. For a more comprehensive "
+"check, run reiserfsck --check."
+msgstr "ext2 Îļþϵͳͨ¹ý»ù±¾¼ì²é¡£ÖÁÓÚ¸ü¸ºÔصļì²é£¬Ê¹Óà e2fsck ³ÌÐò¡£"
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, fuzzy
+msgid "Sorry, can't move the start of reiserfs partitions yet."
+msgstr "´íÎó£¬ÉÐÎÞ·¨Òƶ¯ ext2 ·ÖÇøµÄÆðµã£¡"
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+msgid "shrinking"
+msgstr "ÕýÔÚËõС"
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "¾¯¸æ"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, fuzzy, c-format
+msgid "Device is too small for %lu blocks."
+msgstr "¶Ô ext2 À´ËµÎļþϵͳ¹ýС¡£"
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "¹ØÓÚ´´½¨ %s ÎļþϵͳµÄÖ§³ÖÉÐδʵÏÖ¡£"
+
+#: libparted/labels/aix.c:148
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "¹ØÓÚ´´½¨ %s ÎļþϵͳµÄÖ§³ÖÉÐδʵÏÖ¡£"
+
+#: libparted/labels/aix.c:161
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr "¹ØÓÚ´´½¨ %s ÎļþϵͳµÄÖ§³ÖÉÐδʵÏÖ¡£"
+
+#: libparted/labels/aix.c:171
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr "¹ØÓÚ´´½¨ %s ÎļþϵͳµÄÖ§³ÖÉÐδʵÏÖ¡£"
+
+#: libparted/labels/aix.c:189
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr "¹ØÓÚ´´½¨ %s ÎļþϵͳµÄÖ§³ÖÉÐδʵÏÖ¡£"
+
+#: libparted/labels/aix.c:199
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr "¹ØÓÚ´´½¨ %s ÎļþϵͳµÄÖ§³ÖÉÐδʵÏÖ¡£"
+
+#: libparted/labels/bsd.c:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "ÎÞ·¨Âú×ã·ÖÇøµÄËùÓÐÏÞÖÆ¡£"
+
+#: libparted/labels/bsd.c:526
+#, fuzzy
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "È¡·¨¶¨Î» bsd ´ÅÅ̱êÇ©²Û"
+
+#: libparted/labels/dasd.c:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "ÎÞ·¨È·¶¨ %s (%s) µÄ´óС"
+
+#: libparted/labels/dasd.c:781
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "È¡·¨¶¨Î» bsd ´ÅÅ̱êÇ©²Û"
+
+#: libparted/labels/dos.c:827
+#, fuzzy, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "%s ÉϵķÖÇø±íÎÞЧ - ´íÎóµÄÇ©Ãû %x"
+
+#: libparted/labels/dos.c:855
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "ÎÞЧµÄ·ÖÇø±í - %s ³öÏֵݹé·ÖÇø¡£"
+
+#: libparted/labels/dos.c:1318
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr ""
+
+#: libparted/labels/dos.c:1958
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr ""
+
+#: libparted/labels/dvh.c:190
+#, fuzzy, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%s ûÓÐÀ©Õ¹·ÖÇø (¾íÍ··ÖÇø)¡£Èç¹ûÄúºöÂÔ£¬½«É¾³ýËùÓÐÆô¶¯¾í¡£"
+
+#: libparted/labels/dvh.c:313
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr "УÑéºÍ´íÎ󣬱êÃ÷·ÖÇø±íÒÑË𻵡£"
+
+#: libparted/labels/dvh.c:616
+msgid "Only primary partitions can be root partitions."
+msgstr "Ö»ÓÐÖ÷·ÖÇø¿ÉÒÔÊǸù·ÖÇø¡£"
+
+#: libparted/labels/dvh.c:630
+msgid "Only primary partitions can be swap partitions."
+msgstr "Ö»ÓÐÖ÷·ÖÇø¿ÉÒÔÊǶԻ»·ÖÇø¡£"
+
+#: libparted/labels/dvh.c:644
+msgid "Only logical partitions can be a boot file."
+msgstr "Ö»ÓÐÂß¼·ÖÇø¿ÉÒÔÊÇÆô¶¯Îļþ¡£"
+
+#: libparted/labels/dvh.c:721
+msgid "Only logical partitions (boot files) have a name."
+msgstr "Ö»ÓÐÂß¼·ÖÇø (Æô¶¯Îļþ) ÓµÓÐÃû×Ö¡£"
+
+#: libparted/labels/dvh.c:812
+msgid "Too many primary partitions"
+msgstr "¹ý¶àµÄÖ÷·ÖÇø"
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "ÔÚдÈë %2$s ʱ %1$s"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, fuzzy, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr "%s %s %s"
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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:648
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+msgstr ""
+"GPT ·ÖÇø±íµÄ¸ñʽ°æ±¾Îª %x£¬Ëü±È Parted ËùÄÜʶ±ðµÄ°æ±¾ÒªÐ¡£Çë¸æËßÎÒÃÇ£¡bug-"
+"parted@gnu.org"
+
+#: libparted/labels/gpt.c:698
+#, 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:827
+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:862
+#, fuzzy
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr "Ö÷ GPT ±íË𻵣¬µ«±¸·ÝËÆºõÊÇÕýÈ·µÄ£¬ËùÒÔʹÓñ¸·Ý¡£"
+
+#: libparted/labels/gpt.c:870
+#, 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/mac.c:181
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "ÎÞЧµÄ Mac ´ÅÅ̱êǩǩÃû %x¡£"
+
+#: libparted/labels/mac.c:226
+msgid "Partition map has no partition map entry!"
+msgstr "·ÖÇøÓ³Éä²»º¬ÓзÖÇøÓ³ÉäÌõÄ¿£¡"
+
+#: libparted/labels/mac.c:273
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s ¶Ô Mac ´ÅÅ̱êÇ©À´ËµÌ«Ð¡ÁË£¡"
+
+#: libparted/labels/mac.c:532
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "·ÖÇø %d º¬ÓÐÎÞЧµÄÇ©Ãû %x¡£"
+
+#: libparted/labels/mac.c:550
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "·ÖÇø %d º¬ÓÐÎÞЧµÄ³¤¶È 0 ×Ö½Ú£¡"
+
+#: libparted/labels/mac.c:580
+#, fuzzy
+msgid "The data region doesn't start at the start of the partition."
+msgstr "Êý¾ÝÇø²¢Î´´Ó·ÖÇøµÄÆðµã¿ªÊ¼"
+
+#: libparted/labels/mac.c:597
+#, fuzzy
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "Æô¶¯ÇøÓò²¢Î´´Ó·ÖÇøµÄÆðµã¿ªÊ¼"
+
+#: libparted/labels/mac.c:611
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "·ÖÇøµÄÆô¶¯ÇøÓò²¢Î´Õ¼ÓÃÕû¸ö·ÖÇø¡£"
+
+#: libparted/labels/mac.c:622
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "·ÖÇøµÄÊý¾ÝÇøÓò²¢Î´Õ¼ÓÃÕû¸ö·ÖÇø¡£"
+
+#: libparted/labels/mac.c:675
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr "É豸ÃèÊöÖгöÏֹŹֵĿé´óС£º%d ×Ö½Ú²»Äܱ» 512 Õû³ý¡£"
+
+#: libparted/labels/mac.c:688
+#, 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:736
+msgid "No valid partition map found."
+msgstr "ÕÒ²»µ½ÓÐЧµÄ·ÖÇøÓ³Éä¡£"
+
+#: libparted/labels/mac.c:795
+#, 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:822
+#, fuzzy
+msgid "Weird! There are 2 partitions map entries!"
+msgstr "Ææ¹Ö - Á½¸ö·ÖÇøÓ³ÉäÌõÄ¿£¡"
+
+#: libparted/labels/mac.c:1347
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr "¸Ä±ä¸ù·ÖÇø»ò¶Ô»»·ÖÇøµÄÃû³Æ½«µ¼Ö Linux ÎÞ·¨Ê¶±ðËü¡£"
+
+#: libparted/labels/mac.c:1443
+#, fuzzy
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr "ÎÞ·¨Ìí¼ÓÁíÒ»¸ö·ÖÇø - ·ÖÇøÓ³Éä¹ýС£¡"
+
+#: libparted/labels/pc98.c:354
+#, fuzzy, c-format
+msgid "Invalid partition table on %s."
+msgstr "%s µÄ·ÖÇø±íÎÞЧ"
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, fuzzy, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries. This is still "
+"unsupported."
+msgstr "·ÖÇø %d ²¢Î´¶ÔÆëµ½ÖùÃæ±ß½ç¡£ÐèÒªÌí¼Ó¶ÔËüµÄÖ§³Ö¡£"
+
+#: libparted/labels/pc98.c:791
+msgid "Can't add another partition."
+msgstr "ÎÞ·¨Ìí¼ÓÆäËü·ÖÇø¡£"
+
+#: libparted/labels/rdb.c:162
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:497
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr ""
+
+#: libparted/labels/rdb.c:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:600
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr ""
+
+#: libparted/labels/rdb.c:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:697
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr ""
+
+#: libparted/labels/rdb.c:740
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr ""
+
+#: libparted/labels/rdb.c:1069
+#, fuzzy
+msgid "Unable to allocate a partition number."
+msgstr "ÐèÒª·ÖÇø±àºÅ¡£"
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr "¼ì²âµ½Ëð»µÁ赀 Sun ´ÅÅ̱êÇ©¡£"
+
+#: libparted/labels/sun.c:266
+#, 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:288
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "´ÅÅ̱êÇ©ÃèÊöµÄ´ÅÅÌ´óÓÚ %s¡£"
+
+#: libparted/labels/sun.c:442
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr ""
+
+#: libparted/labels/sun.c:737
+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:752
+msgid "Sun disk label is full."
+msgstr "Sun ´ÅÅ̱êÇ©ÒÑÂú¡£"
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr "ÄÚ´æºÄ¾¡¡£"
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr ""
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr ""
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr ""
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr ""
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr ""
+
+#: libparted/unit.c:527
+msgid "Invalid number."
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "ÐèÒª·ÖÇø±àºÅ¡£"
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:72
+#, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "ÔÚдÈë %2$s ʱ %1$s"
+
+#: libparted/fs/amiga/amiga.c:278
+#, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:289
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:318
+#, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr ""
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr "²»Ò»ÖµÄ×éÃèÊö·û£¡"
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+#, fuzzy
+msgid "File system full!"
+msgstr "ÎļþϵͳÒÑÂú£¡"
+
+#: libparted/fs/ext2/ext2.c:686
+#, fuzzy
+msgid "Invalid superblock. Are you sure this is an ext2 file system?"
+msgstr "ÎÞЧµÄ³¬¿é¡£ÄúÈ·ÈÏËüÊÇÒ»¸ö ext2 Îļþϵͳ£¿"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+#, fuzzy
+msgid "File system has errors! You should run e2fsck."
+msgstr "Îļþϵͳ´íÎó£¡ÄúÓ¦¸ÃÔËÐÐ e2fsck¡£"
+
+#: libparted/fs/ext2/ext2.c:711
+#, fuzzy
+msgid ""
+"File system was not cleanly unmounted! You should run e2fsck. Modifying an "
+"unclean file system could cause severe corruption."
+msgstr ""
+"ÎļþϵͳûÓб»¸É¾»µØÐ¶ÔØ£¡ÄúÓ¦¸ÃÔËÐÐ e2fsck¡£Ð޸IJ»¸É¾»µÄÎļþϵͳ½«µ¼ÖÂÑÏÖØµÄ"
+"Ë𻵡£"
+
+#: libparted/fs/ext2/ext2.c:731
+#, fuzzy
+msgid "File system has an incompatible feature enabled."
+msgstr "ÎļþϵͳÆôÓÃÁ˲»¼æÈݵŦÄÜ"
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr "·ÖÅ仺³åÇø cache ´íÎó¡£"
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+#, fuzzy
+msgid ""
+"Found an inode with a incorrect link count. Better go run e2fsck first!"
+msgstr "ÕÒµ½´øÓдíÎóÁ¬½Ó¼ÆÊýµÄ inode¡£×îºÃÏÈÔËÐÐ e2fsck¡£"
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr "ûÓÐ×ã¹»µÄ¿ÕÏÐ inodes£¡"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+#, fuzzy
+msgid "File system is too full to remove a group!"
+msgstr "Îļþϵͳ±»¹ý¶ÉÕ¼ÓÃÒÔÖÂÎÞ·¨É¾³ý×飡"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+#, fuzzy
+msgid "File system has too many allocated inodes to remove a group!"
+msgstr "ÎļþϵͳÖÐÒÑʹÓÃµÄ inode ¹ý¶àÒÔÖÂÎÞ·¨É¾³ý×飡"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr "Ìí¼Ó×é"
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, fuzzy, c-format
+msgid "Your file system is too full to resize it to %i blocks. Sorry."
+msgstr "ÄúµÄÎļþϵͳ±»¹ý¶ÉÕ¼ÓÃÒÔÖÂÎÞ·¨½«ËüµÄ´óС¸Ä±äΪ %i ¸ö¿é¡£±§Ç¸¡£"
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, fuzzy, c-format
+msgid ""
+"Your file system has too many occupied inodes to resize it to %i blocks. "
+"Sorry."
+msgstr ""
+"ÄúµÄÎļþϵͳÖÐÒÑʹÓÃµÄ inode ¹ý¶àÒÔÖÂÎÞ·¨½«Æä´óС¸Ä±äΪ %i ¸ö¿é¡£±§Ç¸¡£"
+
+#: libparted/fs/ext2/ext2_resize.c:666
+#, fuzzy
+msgid "File system was not cleanly unmounted! You should run e2fsck."
+msgstr "ÎļþϵͳûÓиɾ»µØÐ¶ÔØ£¡ÄúÓ¦¸ÃÔËÐÐ e2fsck¡£"
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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 ""
+
+#: libparted/fs/ext2/ext2_resize.c:691
+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 ""
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+#, fuzzy
+msgid "Cross-linked blocks found! Better go run e2fsck first!"
+msgstr "·¢ÏÖ½»²æÁ¬½Ó¿é£¡×îºÃÏÈÔËÐÐ e2fsck£¡"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, fuzzy, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "¿é %i ûÓÐÒýÓã¿Ææ¹Ö"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, fuzzy, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "¿é %i ²»Ó¦¸ÃÒѱ»±ê¼Ç£¡"
+
+#: libparted/fs/ext2/interface.c:186
+#, fuzzy
+msgid ""
+"The ext2 file system passed a basic check. For a more comprehensive check, "
+"use the e2fsck program."
+msgstr "ext2 Îļþϵͳͨ¹ý»ù±¾¼ì²é¡£ÖÁÓÚ¸ü¸ºÔصļì²é£¬Ê¹Óà e2fsck ³ÌÐò¡£"
+
+#: libparted/fs/ext2/interface.c:203
+msgid "Sorry, can't move the start of ext2 partitions yet!"
+msgstr "´íÎó£¬ÉÐÎÞ·¨Òƶ¯ ext2 ·ÖÇøµÄÆðµã£¡"
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr "ÎÞ·¨Ë¢Ð»º³åÇø cache£¡"
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr "дÈëÿ¸ö×é¶¼ÓеÄÔªÊý¾Ý"
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr "¶Ô ext2 À´ËµÎļþϵͳ¹ýС¡£"
+
+#: libparted/fs/fat/calc.c:135
+#, fuzzy, c-format
+msgid ""
+"You need %s of free disk space to shrink this partition to this size. "
+"Currently, only %s is free."
+msgstr ""
+"ÄúÐèÒª %dM µÄ¿ÕÏпռäÀ´½«´Ë·ÖÇøÊÕËõµ½ÕâÒ»´óС (ÄúĿǰֻÓÐ %dM µÄ¿ÕÏпռä)"
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+msgid ""
+"Cluster start delta = %d, which is not a multiple of the cluster size %d."
+msgstr "´ØÆðÊ¼Æ«ÒÆ = %d£¬²»ÊÇ´Ø´óС %d µÄÕûÊý±¶¡£"
+
+#: libparted/fs/fat/fat.c:308
+#, fuzzy, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr "¶ÔÓÚ %s ÎļþϵͳÀ´Ëµ£¬·ÖÇø¹ý´ó»ò¹ýС"
+
+#: libparted/fs/fat/fat.c:474
+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£¬¶øºó"
+"Ôڻص½ÕâÀïÀ´¡£"
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr "¶ÔÓÚ´Ë FAT ÀàÐÍûÓпÉÄܵÄÅäÖá£"
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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)¡£"
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+msgid ""
+"File system is reporting the free space as %d clusters, not %d clusters."
+msgstr "Îļþϵͳ±¨¸æ¿ÕÏпռäΪ %d ´Ø£¬¶ø²»ÊÇ %d ´Ø¡£"
+
+#: libparted/fs/fat/fat.c:874
+#, 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/resize.c:159
+#, 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 "¸ùĿ¼ÏÂûÓб£´æËùÓÐÎļþµÄ×ã¹»¿Õ¼ä¡£·ÅÆú»òÕßÒÔËðʧÎļþΪ´ú¼ÛºöÂÔ¡£"
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr "дÈë¸ùĿ¼´íÎó¡£"
+
+#: libparted/fs/fat/resize.c:489
+#, fuzzy
+msgid "If you leave your file system as FAT16, then you will have no problems."
+msgstr "Èç¹û½«ÄúµÄÎļþϵͳÀàÐͱ£³Ö FAT16 ²»±ä£¬ÄÇôÄã¾Í²»»áÓÐÎÊÌâ¡£"
+
+#: libparted/fs/fat/resize.c:492
+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 µÄÊÖ²á (»òÄúµÄ·¢Ðаæ"
+"µÄÊÖ²á)¡£"
+
+#: libparted/fs/fat/resize.c:500
+msgid ""
+"If you leave your file system as FAT32, then you will not introduce any new "
+"problems."
+msgstr "Èç¹ûÄú±£³ÖÎļþϵͳÀàÐÍΪ FAT32 ²»±ä£¬ÄÇôÄú½«²»»áÓöµ½ÈκÎÐÂÎÊÌâ¡£"
+
+#: libparted/fs/fat/resize.c:504
+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 Ëù·ÃÎÊÁË¡£"
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr "ÄúÊÇ·ñÔ¸ÒâʹÓà FAT32£¿"
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: libparted/fs/fat/resize.c:551
+msgid ""
+"The file system can only be resized to this size by converting to FAT16."
+msgstr "ÎļþϵͳµÄ´óСֻÄÜͨ¹ýת»»Îª FAT16 ¸Ä±äµ½ÕâÒ»´óС¡£"
+
+#: libparted/fs/fat/resize.c:567
+msgid ""
+"The file system can only be resized to this size by converting to FAT32."
+msgstr "ÎļþϵͳµÄ´óСֻÄÜͨ¹ýת»»Îª FAT32 ¸Ä±äµ½ÕâÒ»´óС¡£"
+
+#: libparted/fs/fat/resize.c:580
+#, fuzzy
+msgid ""
+"GNU Parted cannot resize this partition to this size. We're working on it!"
+msgstr "GNU Parted ÎÞ·¨½«´Ë·ÖÇø×ª»»µ½ÕâÒ»´óС¡£ÎÒÃÇÕýÔÚʵÏÖËü£¡"
+
+#: 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:139
+#, 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:164
+#, 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:213
+msgid "FAT boot sector says logical sector size is 0. This is weird. "
+msgstr "FAT Æô¶¯ÉÈÇøÉù³ÆÂß¼ÉÈÇøµÄ´óСΪÁã¡£ÕâºÜÆæ¹Ö¡£"
+
+#: libparted/fs/fat/bootsector.c:219
+msgid "FAT boot sector says there are no FAT tables. This is weird. "
+msgstr "FAT Æô¶¯ÉÈÇøÉù³ÆÃ»ÓÐ FAT ±í¡£ÕâºÜÆæ¹Ö¡£"
+
+#: libparted/fs/fat/bootsector.c:225
+msgid "FAT boot sector says clusters are 0 sectors. This is weird. "
+msgstr "FAT Æô¶¯ÉÈÇøÉù³Æ×äÊÇÁãÉÈÇø¡£ÕâºÜÆæ¹Ö¡£"
+
+#: libparted/fs/fat/bootsector.c:235
+#, fuzzy
+msgid "File system is FAT12, which is unsupported."
+msgstr "ÎļþϵͳΪ FAT12£¬²»Ö§³Ö¡£"
+
+#: libparted/fs/fat/bootsector.c:411
+#, 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/fat/count.c:152
+#, c-format
+msgid "Bad directory entry for %s: first cluster is the end of file marker."
+msgstr "%s µÄĿ¼ÌõÄ¿´íÎ󣺵ÚÒ»¸ö´Ø¾ÍÊÇÎļþ±êÖ¾µÄ½áÊø¡£"
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+msgid ""
+"Bad FAT: unterminated chain for %s. You should run dosfsck or scandisk."
+msgstr "´íÎóµÄ FAT£º%s µÄÁ´Î´ÖÕÖ¹¡£ÄúÓ¦¸ÃÔËÐÐ dosfsck »ò scandisk¡£"
+
+#: libparted/fs/fat/count.c:174
+#, fuzzy, c-format
+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¡£"
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+msgid ""
+"Bad FAT: cluster %d is cross-linked for %s. You should run dosfsck or "
+"scandisk."
+msgstr "´íÎóµÄ FAT£º´Ø %d ͬ %s µÄÁ´½»²æÁË¡£ÄúÓ¦¸ÃÔËÐÐ dosfsck »ò scandisk¡£"
+
+#: libparted/fs/fat/count.c:203
+#, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr "%s Ϊ %dk£¬µ«º¬ÓÐ %d ¸ö´Ø (%dk)¡£"
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+msgid ""
+"The file %s is marked as a system file. This means moving it could cause "
+"some programs to stop working."
+msgstr "Îļþ %s ±»±ê¼ÇΪϵͳÎļþ¡£ÕâÒâζ×ÅÒÆ¶¯Ëü¿ÉÄܵ¼ÖÂijЩ³ÌÐòÍ£Ö¹¹¤×÷¡£"
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+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¡£"
+
+#: libparted/fs/fat/table.c:269
+#, fuzzy, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "fat_table_set£º´Ø %ld ´¦ÓÚÎļþϵͳ֮Íâ"
+
+#: libparted/fs/fat/table.c:301
+#, fuzzy, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "fat_table_get£º´Ø %ld ´¦ÓÚÎļþϵͳ֮Íâ"
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "fat_table_alloc_cluster£ºÃ»ÓпÕÏдØ"
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "ÎÞ·¨Ê¶±ðµÄ linux ¶Ô»»Ç©Ãû¡°%10s¡±¡£"
+
+#: libparted/fs/linux_swap/linux_swap.c:318
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "ÎÞ·¨Ê¶±ðµÄ linux ¶Ô»»Ç©Ãû¡°%10s¡±¡£"
+
+#: libparted/fs/linux_swap/linux_swap.c:358
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "ÎÞ·¨Ê¶±ðµÄ linux ¶Ô»»Ç©Ãû¡°%10s¡±¡£"
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr "¹ý¶àµÄ»µÒ³¡£"
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr ""
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr ""
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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 ""
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+msgid "Could not update the extent cache for HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+msgid "Trying to write HFS file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+msgid "Could not update the extent cache for HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr ""
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+msgid "Trying to write HFS+ file with CNID %X behind EOF."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:320
+#, fuzzy
+msgid "writing HFS Master Directory Block"
+msgstr "дÈë¸ùĿ¼´íÎó¡£"
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:720
+#, fuzzy
+msgid "Error while writing the allocation file."
+msgstr "дÈë¸ùĿ¼´íÎó¡£"
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:904
+msgid ""
+"It seems there is an error in the HFS wrapper: the bad blocks file doesn't "
+"contain the embedded HFS+ volume."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:998
+#, fuzzy
+msgid "shrinking HFS wrapper"
+msgstr "ÕýÔÚËõС"
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr ""
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+msgid ""
+"This is not a real %s check. This is going to extract special low level "
+"files for debugging purposes."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+msgid ""
+"Invalid size of a transaction block while replaying the journal (%i bytes)."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:260
+msgid ""
+"Journal stored outside of the volume are not supported. Try to desactivate "
+"the journal and run Parted again."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:271
+#, fuzzy
+msgid "Journal offset or size is not multiple of the sector size."
+msgstr "´ØÆðÊ¼Æ«ÒÆ = %d£¬²»ÊÇ´Ø´óС %d µÄÕûÊý±¶¡£"
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:302
+msgid "Journal size mismatch between journal info block and journal header."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:314
+#, fuzzy
+msgid "Some header fields are not multiple of the sector size."
+msgstr "´ØÆðÊ¼Æ«ÒÆ = %d£¬²»ÊÇ´Ø´óС %d µÄÕûÊý±¶¡£"
+
+#: libparted/fs/hfs/journal.c:323
+msgid ""
+"The sector size stored in the journal is not 512 bytes. Parted only "
+"supports 512 bytes length sectors."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:353
+msgid ""
+"The journal is not empty. Parted must replay the transactions before "
+"opening the file system. This will modify the file system."
+msgstr ""
+
+#: libparted/fs/hfs/journal.c:381
+msgid ""
+"The volume header or the master directory block has changed while replaying "
+"the journal. You should restart Parted."
+msgstr ""
+
+#: libparted/fs/hfs/probe.c:51
+#, c-format
+msgid ""
+"Parted can't use HFS file systems on disks with a sector size not equal to %"
+"d bytes."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+msgid ""
+"A reference to an extent comes from a place it should not. You should check "
+"the file system!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:475
+msgid "This HFS volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+msgid ""
+"The extents overflow file should not contain its own extents! You should "
+"check the file system."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+#, fuzzy
+msgid "Could not cache the file system in memory."
+msgstr "ÎÞ·¨¼ì²âÎļþϵͳ¡£"
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr ""
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr ""
+
+#: libparted/fs/hfs/reloc_plus.c:619
+msgid "This HFS+ volume has no extents overflow file. This is quite unusual!"
+msgstr ""
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr "ÏÔʾ´ËÇóÖúÐÅÏ¢"
+
+#: parted/parted.c:95
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr "´Ó²»ÌáʾÓû§"
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr "ÏÔʾ°æ±¾"
+
+#: parted/parted.c:111
+#, 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:114
+msgid "LABEL-TYPE is one of: "
+msgstr "¡°±êÇ©ÀàÐÍ¡±ÊÇÒÔÏÂÈÎÒâÒ»Ï"
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr "¡°±êÖ¾¡±ÊÇÒÔÏÂÈÎÒâÒ»Ï"
+
+#: parted/parted.c:116
+#, fuzzy
+msgid "UNIT is one of: "
+msgstr "¡°±êÖ¾¡±ÊÇÒÔÏÂÈÎÒâÒ»Ï"
+
+#: parted/parted.c:117
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "¡°·ÖÇøÀàÐÍ¡±ÊÇÖ÷·ÖÇø¡¢Âß¼·ÖÇø¡¢À©Õ¹·ÖÇøÖ®Ò»\n"
+
+#: parted/parted.c:119
+msgid "FS-TYPE is one of: "
+msgstr "¡°ÎļþϵͳÀàÐÍ¡±ÊÇÒÔÏÂÈÎÒâÒ»Ï"
+
+#: parted/parted.c:120
+#, 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:123
+msgid "STATE is one of: on, off\n"
+msgstr "״̬Ϊ£º¿ª¡¢¹Ø\n"
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "DEVICE ͨ³£Îª /dev/hda »ò /dev/sda\n"
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr "NAME ÊÇÄúÐèÒªµÄÈκε¥´Ê\n"
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr ""
+
+#: parted/parted.c:130
+#, 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:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(Ê£Óàʱ¼ä %.2d:%.2d)"
+
+#: parted/parted.c:195
+#, c-format
+msgid ""
+"Partition %s is being used. You must unmount it before you modify it with "
+"Parted."
+msgstr ""
+
+#: parted/parted.c:211
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "ÕýÔÚʹÓà %s ÉϵķÖÇø¡£"
+
+#: parted/parted.c:223
+msgid ""
+"The existing file system will be destroyed and all data on the partition "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+msgid "Partition number?"
+msgstr "·ÖÇø±àºÅ£¿"
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr "Ô´É豸£¿"
+
+#: parted/parted.c:504
+msgid "Source partition number?"
+msgstr "Ô´·ÖÇø±àºÅ£¿"
+
+#: parted/parted.c:509
+#, fuzzy
+msgid "Can't copy an extended partition."
+msgstr "²»ÄÜÖ»¸´ÖÆÀ©Õ¹·ÖÇø¡£"
+
+#: parted/parted.c:515
+msgid "Destination partition number?"
+msgstr "Ä¿±ê·ÖÇø±àºÅ£¿"
+
+#: parted/parted.c:615
+msgid "New disk label type?"
+msgstr "еĴÅÅ̱êÇ©ÀàÐÍ£¿"
+
+#: parted/parted.c:656
+msgid "File system?"
+msgstr "Îļþϵͳ£¿"
+
+#: parted/parted.c:707 parted/parted.c:878
+msgid "Partition type?"
+msgstr "·ÖÇøÀàÐÍ£¿"
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+msgid "Partition name?"
+msgstr "·ÖÇøÃû³Æ£¿"
+
+#: parted/parted.c:722 parted/parted.c:895
+msgid "File system type?"
+msgstr "ÎļþϵͳÀàÐÍ£¿"
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr "Æðʼµã£¿"
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr "½áÊøµã£¿"
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+
+#: parted/parted.c:890
+#, fuzzy
+msgid "An extended partition cannot hold a file system. Did you want mkpart?"
+msgstr "À©Õ¹·ÖÇø²»Äܺ¬ÓÐÎļþϵͳ¡£ÄúÊÇÒªÓà mkpart °É£¿"
+
+#: parted/parted.c:1050
+#, fuzzy
+msgid "Can't move an extended partition."
+msgstr "ÎÞ·¨Òƶ¯À©Õ¹·ÖÇø¡£"
+
+#: parted/parted.c:1079
+msgid "Can't move a partition onto itself. Try using resize, perhaps?"
+msgstr "ÎÞ·¨½«·ÖÇøÒÆ¶¯µ½Ëü×ÔÉí¡£ÊÔÓøıä´óС£¬¿ÉÄÜ£¿"
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr "Minor£º%d\n"
+
+#: parted/parted.c:1228
+#, fuzzy, c-format
+msgid "Flags: %s\n"
+msgstr "±êÖ¾£º"
+
+#: parted/parted.c:1229
+#, c-format
+msgid "File System: %s\n"
+msgstr "Îļþϵͳ£º%s\n"
+
+#: parted/parted.c:1230
+#, fuzzy
+msgid "Size: "
+msgstr "´óС£º %10.3fMb (%d%%)\n"
+
+#: parted/parted.c:1235
+#, fuzzy
+msgid "Minimum size: "
+msgstr "×îС³ß´ç£º %10.3fMb (%d%%)\n"
+
+#: parted/parted.c:1238
+#, fuzzy
+msgid "Maximum size: "
+msgstr "×î´ó³ß´ç£º %10.3fMb (%d%%)\n"
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:1364
+#, fuzzy, c-format
+msgid "Disk %s: %s\n"
+msgstr "%s %s %s"
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr ""
+
+#: parted/parted.c:1383
+#, c-format
+msgid "BIOS cylinder,head,sector geometry: %d,%d,%d. Each cylinder is %s.\n"
+msgstr ""
+
+#: parted/parted.c:1392
+#, fuzzy, c-format
+msgid "Partition Table: %s\n"
+msgstr "·ÖÇøÃû³Æ£¿"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr ""
+
+#: parted/parted.c:1406 parted/parted.c:1409
+#, fuzzy
+msgid "Start"
+msgstr "Æðʼµã£¿"
+
+#: parted/parted.c:1407 parted/parted.c:1410
+#, fuzzy
+msgid "End"
+msgstr "½áÊøµã£¿"
+
+#: parted/parted.c:1410
+#, fuzzy
+msgid "Size"
+msgstr "resize"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr ""
+
+#: parted/parted.c:1416
+#, fuzzy
+msgid "File system"
+msgstr "Îļþϵͳ£¿"
+
+#: parted/parted.c:1419
+#, fuzzy
+msgid "Name"
+msgstr "name"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr "±êÖ¾"
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr ""
+
+#: parted/parted.c:1624
+#, 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:1663
+msgid "searching for file systems"
+msgstr "ÕýÔÚËÑË÷Îļþϵͳ"
+
+#: parted/parted.c:1877
+msgid "New device?"
+msgstr "ÐÂÉ豸£¿"
+
+#: parted/parted.c:1902
+#, fuzzy
+msgid "Flag to Invert?"
+msgstr "ÒªÐ޸ĵıêÖ¾£¿"
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr "ÐÂ״̬£¿"
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr ""
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "¼ì²é"
+
+#: parted/parted.c:2096
+#, fuzzy
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr "¼ì²é MINOR ¶ÔÎļþϵͳ½øÐÐÒ»¸ö¼òµ¥µÄ¼ì²é"
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "cp"
+
+#: parted/parted.c:2105
+#, fuzzy
+msgid ""
+"cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another "
+"partition"
+msgstr "cp [FROM-DEVICE] FROM-MINOR TO-MINOR ½«Îļþϵͳ¸´ÖƵ½ÁíÒ»¸ö·ÖÇø"
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:2114
+#, fuzzy
+msgid ""
+"help [COMMAND] print general help, or help on "
+"COMMAND"
+msgstr "help [COMMAND] ´òӡͨÓÃÇóÖúÐÅÏ¢£¬»ò¹ØÓÚ COMMAND µÄÐÅÏ¢"
+
+#: parted/parted.c:2120
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:2120
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:2123
+#, fuzzy
+msgid ""
+"mklabel,mktable LABEL-TYPE create a new disklabel (partition "
+"table)"
+msgstr "mklabel ±êÇ©ÀàÐÍ ´´½¨ÐµĴÅÅ̱êÇ© (·ÖÇø±í)"
+
+#: parted/parted.c:2129
+msgid "mkfs"
+msgstr "mkfs"
+
+#: parted/parted.c:2132
+#, fuzzy
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+"mkfs MINOR ÎļþϵͳÀàÐÍ ÔÚ MINOR ´´½¨ÀàÐÍΪ¡°ÎļþϵͳÀàÐÍ¡±µÄÎļþϵͳ"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:2141
+#, fuzzy
+msgid "mkpart PART-TYPE [FS-TYPE] START END make a partition"
+msgstr "mkpart ·ÖÇøÀàÐÍ [ÎļþϵͳÀàÐÍ] Æðʼµã ÖÕÖ¹µã ´´½¨Ò»¸ö·ÖÇø"
+
+#: parted/parted.c:2147
+#, 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:2152
+msgid "mkpartfs"
+msgstr "mkpartfs"
+
+#: parted/parted.c:2155
+#, fuzzy
+msgid ""
+"mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system"
+msgstr ""
+"mkpartfs ·ÖÇøÀàÐÍ ÎļþϵͳÀàÐÍ Æðʼµã ÖÕÖ¹µã ´´½¨Ò»¸ö´øÓÐÎļþϵͳµÄ·ÖÇø"
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr "move"
+
+#: parted/parted.c:2164
+#, fuzzy
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "move MINOR Æðʼµã ÖÕÖ¹µã ÒÆ¶¯±àºÅΪ MINOR µÄ·ÖÇø"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:2172
+#, fuzzy
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr "name MINOR Ãû³Æ ½«±àºÅΪ MINOR µÄ·ÖÇøÃüÃûΪ¡°Ãû³Æ¡±"
+
+#: parted/parted.c:2177
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr "print [MINOR] ´òÓ¡·ÖÇø±í£¬»òÕß·ÖÇø"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:2199
+#, fuzzy
+msgid "quit exit program"
+msgstr "quit Í˳ö³ÌÐò"
+
+#: parted/parted.c:2204
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:2207
+#, fuzzy
+msgid ""
+"rescue START END rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue Æðʼµã ÖÕÖ¹µã Íì¾ÈÁÙ½ü¡°Æðʼµã¡±¡¢¡°ÖÕÖ¹µã¡±µÄÒÅʧµÄ·ÖÇø"
+
+#: parted/parted.c:2213
+msgid "resize"
+msgstr "resize"
+
+#: parted/parted.c:2216
+#, fuzzy
+msgid ""
+"resize NUMBER START END resize partition NUMBER and its "
+"file system"
+msgstr ""
+"rescue Æðʼµã ÖÕÖ¹µã Íì¾ÈÁÙ½ü¡°Æðʼµã¡±¡¢¡°ÖÕÖ¹µã¡±µÄÒÅʧµÄ·ÖÇø"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:2227
+#, fuzzy
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "rm MINOR ɾ³ý±àºÅΪ MINOR µÄ·ÖÇø"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:2235
+#, fuzzy
+msgid "select DEVICE choose the device to edit"
+msgstr "select É豸 Ñ¡ÔñÒª±à¼µÄÉ豸"
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:2243
+#, fuzzy
+msgid ""
+"set NUMBER FLAG STATE change the FLAG on partition NUMBER"
+msgstr "set MINOR ±êÖ¾ ״̬ ¸Ä±ä±àºÅΪ MINOR µÄ·ÖÇøµÄ±êÖ¾"
+
+#: parted/parted.c:2249
+msgid "toggle"
+msgstr ""
+
+#: parted/parted.c:2252
+msgid ""
+"toggle [NUMBER [FLAG]] toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+
+#: parted/parted.c:2258
+#, fuzzy
+msgid "unit"
+msgstr "quit"
+
+#: parted/parted.c:2261
+#, fuzzy
+msgid "unit UNIT set the default unit to UNIT"
+msgstr "quit Í˳ö³ÌÐò"
+
+#: parted/parted.c:2266
+msgid "version"
+msgstr ""
+
+#: parted/parted.c:2269
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+
+#: parted/parted.c:2273
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr ""
+
+#: parted/parted.c:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "ûÓÐÕÒµ½É豸"
+
+#: parted/parted.c:2412
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:2450
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "Èç¹û±ØÒª£¬²»ÒªÍü¼Ç¸üР/etc/fstab¡£\n"
+
+#: parted/ui.c:160
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr ""
+
+#: parted/ui.c:163
+#, 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:168
+#, 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:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+
+#: parted/ui.c:372
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+
+#: parted/ui.c:377
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+
+#: parted/ui.c:420
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+
+#: parted/ui.c:523
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+
+#: parted/ui.c:1024
+msgid "Expecting a partition number."
+msgstr "ÐèÒª·ÖÇø±àºÅ¡£"
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "·ÖÇø²»´æÔÚ¡£"
+
+#: parted/ui.c:1053
+msgid "Expecting a file system type."
+msgstr "ÐèÒªÎļþϵͳÀàÐÍ¡£"
+
+#: parted/ui.c:1060
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "δ֪µÄÎļþϵͳÀàÐÍ¡°%s¡±¡£"
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr "ÐèÒª´ÅÅ̱êÇ©ÀàÐÍ¡£"
+
+#: parted/ui.c:1178
+msgid "Can't create any more partitions."
+msgstr "ÎÞ·¨´´½¨¸ü¶à·ÖÇø¡£"
+
+#: parted/ui.c:1188
+msgid "Expecting a partition type."
+msgstr "ÐèÒª·ÖÇøÀàÐÍ¡£"
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr "¿ª"
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr "¹Ø"
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "Ñ¡Ï"
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "ÃüÁ"
+
+#: parted/ui.c:1445
+#, c-format
+msgid "Using %s\n"
+msgstr "ʹÓà %s\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "ÔÚ±ØÒªÊ±£¬ÌáʾÓû§"
+
+#, 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 ÏÔʾÕû¸ö·ÖÇø±í¡£\n"
+#~ "Èç¹û¸ø³öÁË·ÖÇø±í£¬¾ÍÏÔʾ¸ü¶à\n"
+#~ "¹ØÓÚ·ÖÇøµÄÏêϸÐÅÏ¢¡£\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 ""
+#~ "%s ÉϵÄÉÈÇø´óСΪ %d ×Ö½Ú¡£Ä¿Ç° Parted ²»ÄÜÔÚÉÈÇø´óС²»ÊÇ %d ×ֽڵĴÅÅÌÉÏ"
+#~ "ÕýÈ·¹¤×÷¡£"
+
+#~ msgid "Could not read geometry of %s - %s."
+#~ msgstr "ÎÞ·¨¶ÁÈ¡ %s - %s µÄ¼¸ºÎ½á¹¹¡£"
+
+#~ 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 "File system has an invalid signature for a FAT file systems."
+#~ msgstr "Îļþϵͳº¬ÓÐÎÞЧµÄ FAT ÎļþϵͳǩÃû¡£"
+
+#~ msgid ""
+#~ "Partition %s is being used. Modifying it while it is in use could cause "
+#~ "severe corruption."
+#~ msgstr "ÕýÔÚʹÓ÷ÖÇø %s¡£ÔÚʹÓÃʱÐÞ¸ÄËû½«µ¼ÖÂÑÏÖØµÄÆÆ»µ¡£"
+
+#~ msgid ""
+#~ "You requested to create a partition at %.3f-%.3fMb. The closest Parted "
+#~ "can manage is %.3f-%.3fMb."
+#~ msgstr ""
+#~ "ÄúÒªÇóÔÚ %.3f - %.3fMb µÄλÖô´½¨·ÖÇø¡£¿É¹ÜÀíµÄ×îÏà½ü·ÖÇøÎª %.3f-%.3fMb¡£"
+
+#~ 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 "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/parted-1.8.7/po/zh_TW.gmo b/parted-1.8.7/po/zh_TW.gmo
new file mode 100644
index 0000000..2fabd8d
--- /dev/null
+++ b/parted-1.8.7/po/zh_TW.gmo
Binary files differ
diff --git a/parted-1.8.7/po/zh_TW.po b/parted-1.8.7/po/zh_TW.po
new file mode 100644
index 0000000..70693b9
--- /dev/null
+++ b/parted-1.8.7/po/zh_TW.po
@@ -0,0 +1,3129 @@
+# 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: 2007-05-09 17:02-0400\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"
+"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/closeout.c:74
+msgid "write error"
+msgstr ""
+
+#: lib/error.c:125
+#, fuzzy
+msgid "Unknown system error"
+msgstr "未知的檔案系統類型「%s」。"
+
+#: lib/getopt.c:531 lib/getopt.c:547
+#, c-format
+msgid "%s: option `%s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:580 lib/getopt.c:584
+#, c-format
+msgid "%s: option `--%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:593 lib/getopt.c:598
+#, c-format
+msgid "%s: option `%c%s' doesn't allow an argument\n"
+msgstr ""
+
+#: lib/getopt.c:641 lib/getopt.c:660 lib/getopt.c:976 lib/getopt.c:995
+#, c-format
+msgid "%s: option `%s' requires an argument\n"
+msgstr ""
+
+#: lib/getopt.c:698 lib/getopt.c:701
+#, c-format
+msgid "%s: unrecognized option `--%s'\n"
+msgstr ""
+
+#: lib/getopt.c:709 lib/getopt.c:712
+#, c-format
+msgid "%s: unrecognized option `%c%s'\n"
+msgstr ""
+
+#: lib/getopt.c:764 lib/getopt.c:767
+#, c-format
+msgid "%s: illegal option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:773 lib/getopt.c:776
+#, c-format
+msgid "%s: invalid option -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:828 lib/getopt.c:844 lib/getopt.c:1048 lib/getopt.c:1066
+#, c-format
+msgid "%s: option requires an argument -- %c\n"
+msgstr ""
+
+#: lib/getopt.c:897 lib/getopt.c:913
+#, c-format
+msgid "%s: option `-W %s' is ambiguous\n"
+msgstr ""
+
+#: lib/getopt.c:937 lib/getopt.c:955
+#, c-format
+msgid "%s: option `-W %s' doesn't allow 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:229
+msgid "`"
+msgstr ""
+
+#: lib/quotearg.c:230
+msgid "'"
+msgstr ""
+
+#: lib/regcomp.c:131
+msgid "Success"
+msgstr ""
+
+#: lib/regcomp.c:134
+msgid "No match"
+msgstr ""
+
+#: lib/regcomp.c:137
+msgid "Invalid regular expression"
+msgstr ""
+
+#: lib/regcomp.c:140
+msgid "Invalid collation character"
+msgstr ""
+
+#: lib/regcomp.c:143
+msgid "Invalid character class name"
+msgstr ""
+
+#: lib/regcomp.c:146
+msgid "Trailing backslash"
+msgstr ""
+
+#: lib/regcomp.c:149
+msgid "Invalid back reference"
+msgstr ""
+
+#: lib/regcomp.c:152
+msgid "Unmatched [ or [^"
+msgstr ""
+
+#: lib/regcomp.c:155
+msgid "Unmatched ( or \\("
+msgstr ""
+
+#: lib/regcomp.c:158
+msgid "Unmatched \\{"
+msgstr ""
+
+#: lib/regcomp.c:161
+msgid "Invalid content of \\{\\}"
+msgstr ""
+
+#: lib/regcomp.c:164
+#, fuzzy
+msgid "Invalid range end"
+msgstr "無效的編號。"
+
+#: lib/regcomp.c:167
+msgid "Memory exhausted"
+msgstr ""
+
+#: lib/regcomp.c:170
+msgid "Invalid preceding regular expression"
+msgstr ""
+
+#: lib/regcomp.c:173
+msgid "Premature end of regular expression"
+msgstr ""
+
+#: lib/regcomp.c:176
+msgid "Regular expression too big"
+msgstr ""
+
+#: lib/regcomp.c:179
+msgid "Unmatched ) or \\)"
+msgstr ""
+
+#: lib/regcomp.c:680
+msgid "No previous regular expression"
+msgstr ""
+
+#: lib/rpmatch.c:70
+msgid "^[yY]"
+msgstr ""
+
+#: lib/rpmatch.c:73
+msgid "^[nN]"
+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:66
+msgid "(C)"
+msgstr ""
+
+#: lib/version-etc.c:68
+msgid ""
+"\n"
+"License GPLv2+: GNU GPL version 2 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:84
+#, c-format
+msgid "Written by %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:88
+#, c-format
+msgid "Written by %s and %s.\n"
+msgstr ""
+
+#. TRANSLATORS: Each %s denotes an author name.
+#: lib/version-etc.c:92
+#, 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:98
+#, 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:104
+#, 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:110
+#, 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:117
+#, 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:124
+#, 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:132
+#, 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:142
+#, c-format
+msgid ""
+"Written by %s, %s, %s,\n"
+"%s, %s, %s, %s,\n"
+"%s, %s, and others.\n"
+msgstr ""
+
+#: lib/xalloc-die.c:35
+msgid "memory exhausted"
+msgstr ""
+
+#: libparted/arch/beos.c:237
+msgid "Disk Image"
+msgstr ""
+
+#: libparted/arch/beos.c:338 libparted/arch/gnu.c:261
+#: libparted/arch/linux.c:1272
+#, c-format
+msgid "Error opening %s: %s"
+msgstr "開啟 %s 出錯:%s"
+
+#: libparted/arch/beos.c:349 libparted/arch/gnu.c:271
+#: libparted/arch/linux.c:1283
+#, c-format
+msgid "Unable to open %s read-write (%s). %s has been opened read-only."
+msgstr "無法開啟 %s 以讀寫 (%s)。%s 已用唯讀的方式開啟。"
+
+#: libparted/arch/beos.c:411 libparted/arch/linux.c:1431
+#, c-format
+msgid "%s during seek for read on %s"
+msgstr "在為讀取 %2$s 而呼叫 seek 時 %1$s"
+
+#: libparted/arch/beos.c:444 libparted/arch/gnu.c:449 libparted/arch/gnu.c:548
+#: libparted/arch/gnu.c:676 libparted/arch/linux.c:1391
+#: libparted/arch/linux.c:1469
+#, c-format
+msgid "%s during read on %s"
+msgstr "在讀取 %2$s 期間 %1$s"
+
+#: libparted/arch/beos.c:480 libparted/arch/gnu.c:509
+#: libparted/arch/linux.c:1546
+#, c-format
+msgid "Can't write to %s, because it is opened read-only."
+msgstr "由於 %s 是以唯讀方式開啟的,因此無法寫入。"
+
+#: libparted/arch/beos.c:496 libparted/arch/linux.c:1570
+#, c-format
+msgid "%s during seek for write on %s"
+msgstr "在為寫入 %2$s 呼叫 seek 時 %1$s"
+
+#: libparted/arch/beos.c:533 libparted/arch/gnu.c:585 libparted/arch/gnu.c:630
+#: libparted/arch/gnu.c:707 libparted/arch/linux.c:1517
+#: libparted/arch/linux.c:1612 libparted/arch/linux.c:1684
+#, c-format
+msgid "%s during write on %s"
+msgstr "在寫入 %2$s 時 %1$s"
+
+#: debug/clearfat/clearfat.c:63 partprobe/partprobe.c:137
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:67
+#, c-format
+msgid ""
+"Usage: %s [OPTION]\n"
+" or: %s DEVICE MINOR\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:70
+msgid ""
+"Clear unused space on a FAT partition (a GNU Parted testing tool).\n"
+"\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:74
+msgid " --help display this help and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:75
+msgid " --version output version information and exit\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:77 partprobe/partprobe.c:154
+#, c-format
+msgid ""
+"\n"
+"Report bugs to <%s>.\n"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:285
+#, c-format
+msgid "too few arguments"
+msgstr ""
+
+#: debug/clearfat/clearfat.c:290
+#, fuzzy, c-format
+msgid "too many arguments"
+msgstr "過多的不當分頁。"
+
+#: partprobe/partprobe.c:141
+#, c-format
+msgid "Usage: %s [OPTION] [DEVICE]...\n"
+msgstr ""
+
+#: partprobe/partprobe.c:142
+msgid ""
+"Inform the OS of partition table changes.\n"
+"\n"
+" -d, --no-update don't update the kernel\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"
+"With no DEVICE, probe all partitions.\n"
+msgstr ""
+
+#: libparted/arch/gnu.c:94
+#, c-format
+msgid "Unable to open %s."
+msgstr "無法開啟 %s。"
+
+#: libparted/arch/gnu.c:114
+msgid "Unable to probe store."
+msgstr "無法偵測儲存設備。"
+
+#: libparted/arch/gnu.c:352
+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:369
+#, 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:380 parted/parted.c:2443
+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:772
+#, c-format
+msgid "%s trying to sync %s to disk"
+msgstr "%s 試圖將 %s 同步到磁碟上"
+
+#: libparted/arch/linux.c:408
+#, c-format
+msgid "Could not stat device %s - %s."
+msgstr "無法對設備 %s - %s 進行 stat 操作。"
+
+#: libparted/arch/linux.c:523
+#, 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:539
+#, fuzzy, c-format
+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"
+
+#: libparted/arch/linux.c:579
+#, c-format
+msgid "Unable to determine the size of %s (%s)."
+msgstr "無法確定 %s (%s) 的大小。"
+
+#: libparted/arch/linux.c:668
+#, c-format
+msgid "Could not get identity of device %s - %s"
+msgstr "無法獲取設備 %s - %s 的標識"
+
+#: libparted/arch/linux.c:677
+msgid "Generic IDE"
+msgstr "一般 IDE"
+
+#: libparted/arch/linux.c:698
+#, 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:873
+#, c-format
+msgid "Error initialising SCSI device %s - %s"
+msgstr "初始化 SCSI 設備 %s - %s 出錯"
+
+#: libparted/arch/linux.c:928
+#, c-format
+msgid ""
+"The device %s has zero length, and can't possibly store a file system or "
+"partition table. Perhaps you selected the wrong device?"
+msgstr ""
+"設備 %s 的長度為零,因此也許無法保存檔案系統或分割區表。可能您選擇了錯誤的設"
+"備?"
+
+#: libparted/arch/linux.c:1032
+#, 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:1110
+msgid "DAC960 RAID controller"
+msgstr "DAC960 RAID 控制器"
+
+#: libparted/arch/linux.c:1115
+msgid "Promise SX8 SATA Device"
+msgstr ""
+
+#: libparted/arch/linux.c:1120
+msgid "IBM S390 DASD drive"
+msgstr ""
+
+#: libparted/arch/linux.c:1125
+msgid "IBM iSeries Virtual DASD"
+msgstr ""
+
+#: libparted/arch/linux.c:1130
+msgid "Compaq Smart Array"
+msgstr "Compaq 智慧型陣列"
+
+#: libparted/arch/linux.c:1135
+msgid "ATARAID Controller"
+msgstr "ATARAID 控制器"
+
+#: libparted/arch/linux.c:1140
+msgid "I2O Controller"
+msgstr "I2O 控制器"
+
+#: libparted/arch/linux.c:1145
+msgid "User-Mode Linux UBD"
+msgstr "使用者模式 Linux UBD"
+
+#: libparted/arch/linux.c:1156
+msgid "Linux device-mapper"
+msgstr ""
+
+#: libparted/arch/linux.c:1162
+msgid "Unknown"
+msgstr "未知"
+
+#: libparted/arch/linux.c:1169
+msgid "ped_device_new() Unsupported device type"
+msgstr "ped_device_new() 不支援的設備類型"
+
+#: libparted/arch/linux.c:2083
+#, 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:2262
+#, 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/arch/linux.c:2368
+#, c-format
+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 做任何操作之前重新啟動您的電腦。"
+
+#: libparted/cs/geom.c:162
+msgid "Can't have the end before the start!"
+msgstr "無法在開始之前結束!"
+
+#: libparted/cs/geom.c:169
+msgid "Can't have a partition outside the disk!"
+msgstr "無法讓分割區超出磁碟!"
+
+#: libparted/cs/geom.c:366
+#, 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:406 libparted/fs/linux_swap/linux_swap.c:475
+msgid "checking for bad blocks"
+msgstr "檢查壞區塊"
+
+#: libparted/debug.c:102
+#, c-format
+msgid "Backtrace has %d calls on stack:\n"
+msgstr ""
+
+#: libparted/debug.c:114
+#, c-format
+msgid "Assertion (%s) at %s:%d in function %s() failed."
+msgstr ""
+
+#: libparted/disk.c:203
+#, c-format
+msgid "Unable to open %s - unrecognised disk label."
+msgstr "無法開啟 %s - 無法識別的磁碟標籤。"
+
+#: libparted/disk.c:471
+#, c-format
+msgid ""
+"This libparted doesn't have write support for %s. Perhaps it was compiled "
+"read-only."
+msgstr "這個 libparted 不支援對 %s 的寫入操作。可能它是以唯讀方式編譯的。"
+
+#: libparted/disk.c:598
+#, c-format
+msgid "Partition %d is %s, but the file system is %s."
+msgstr "分割區 %d 大小為 %s,但檔案系統大小為 %s。"
+
+#: libparted/disk.c:1075
+#, c-format
+msgid "%s disk labels do not support extended partitions."
+msgstr "%s 磁碟標籤不支援擴充分割區。"
+
+#: libparted/disk.c:1634
+#, c-format
+msgid "%s disk labels don't support logical or extended partitions."
+msgstr "%s 磁碟標籤不支援邏輯或擴充分割區。"
+
+#: libparted/disk.c:1647
+msgid "Too many primary partitions."
+msgstr "過多的主分割區。"
+
+#: libparted/disk.c:1656
+#, c-format
+msgid ""
+"Can't add a logical partition to %s, because there is no extended partition."
+msgstr "由於沒有擴充分割區,無法將邏輯分割區添加到 %s。"
+
+#: libparted/disk.c:1680
+#, c-format
+msgid "Can't have more than one extended partition on %s."
+msgstr "%s 上不能含有多於一個的擴充分割區。"
+
+#: libparted/disk.c:1690
+msgid "Can't have logical partitions outside of the extended partition."
+msgstr "邏輯分割區不能位於擴充分割區之外。"
+
+#: libparted/disk.c:1715
+#, c-format
+msgid "Can't have a logical partition outside of the extended partition on %s."
+msgstr "%s 上的邏輯分割區不能位於擴充分割區之外。"
+
+#: libparted/disk.c:1725 libparted/disk.c:1779 libparted/disk.c:1945
+msgid "Can't have overlapping partitions."
+msgstr "分割區不能重疊。"
+
+#: libparted/disk.c:1733
+msgid "Can't have a primary partition inside an extended partition."
+msgstr "擴充分割區中不能含有主分割區。"
+
+#: libparted/disk.c:2140
+msgid "metadata"
+msgstr "中繼資料"
+
+#: libparted/disk.c:2142
+msgid "free"
+msgstr "自由空間"
+
+#: libparted/disk.c:2144 parted/ui.c:1169 parted/ui.c:1197
+msgid "extended"
+msgstr "擴充分割區"
+
+#: libparted/disk.c:2146 parted/ui.c:1173 parted/ui.c:1201
+msgid "logical"
+msgstr "邏輯分割區"
+
+#: libparted/disk.c:2148 parted/ui.c:1165 parted/ui.c:1193
+msgid "primary"
+msgstr "主分割區"
+
+#: libparted/disk.c:2164
+msgid "boot"
+msgstr "啟動"
+
+#: libparted/disk.c:2166
+msgid "root"
+msgstr "根"
+
+#: libparted/disk.c:2168
+msgid "swap"
+msgstr "交換分割區"
+
+#: libparted/disk.c:2170
+msgid "hidden"
+msgstr "隱藏分割區"
+
+#: libparted/disk.c:2172
+msgid "raid"
+msgstr "raid"
+
+#: libparted/disk.c:2174
+msgid "lvm"
+msgstr "lvm"
+
+#: libparted/disk.c:2176
+msgid "lba"
+msgstr "lba"
+
+#: libparted/disk.c:2178
+msgid "hp-service"
+msgstr "hp-服務"
+
+#: libparted/disk.c:2180
+msgid "palo"
+msgstr "palo"
+
+#: libparted/disk.c:2182
+msgid "prep"
+msgstr "prep"
+
+#: libparted/disk.c:2184
+msgid "msftres"
+msgstr "msftres"
+
+#: libparted/disk.c:2190
+#, c-format
+msgid "Unknown partition flag, %d."
+msgstr "未知的分割區旗標,%d。"
+
+#: libparted/exception.c:78
+msgid "Information"
+msgstr "資訊"
+
+#: libparted/exception.c:79
+msgid "Warning"
+msgstr "警告"
+
+#: libparted/exception.c:80
+msgid "Error"
+msgstr "錯誤"
+
+#: libparted/exception.c:81
+msgid "Fatal"
+msgstr "致命錯誤"
+
+#: libparted/exception.c:82
+msgid "Bug"
+msgstr "臭蟲"
+
+#: libparted/exception.c:83
+msgid "No Implementation"
+msgstr "未實作"
+
+#: libparted/exception.c:87
+msgid "Fix"
+msgstr "修正"
+
+#: libparted/exception.c:88
+msgid "Yes"
+msgstr "是"
+
+#: libparted/exception.c:89
+msgid "No"
+msgstr "否"
+
+#: libparted/exception.c:90
+msgid "OK"
+msgstr "確認"
+
+#: libparted/exception.c:91
+msgid "Retry"
+msgstr "重試"
+
+#: libparted/exception.c:92
+msgid "Ignore"
+msgstr "忽略"
+
+#: libparted/exception.c:93
+msgid "Cancel"
+msgstr "取消"
+
+#: libparted/exception.c:133
+#, 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 informations of what "
+"could be useful for bug submitting! Please email a bug report to bug-"
+"parted@gnu.org 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/filesys.c:384
+msgid "Could not detect file system."
+msgstr "無法偵測檔案系統。"
+
+#: libparted/filesys.c:395
+msgid "The file system is bigger than its volume!"
+msgstr "檔案系統比它的卷冊還大!"
+
+#: libparted/filesys.c:403
+#, c-format
+msgid "Support for opening %s file systems is not implemented yet."
+msgstr "開啟 %s 檔案系統的支援尚未實作。"
+
+#: libparted/filesys.c:445
+#, c-format
+msgid "Support for creating %s file systems is not implemented yet."
+msgstr "建立 %s 檔案系統的支援尚未實作。"
+
+#: libparted/filesys.c:505
+#, c-format
+msgid "Support for checking %s file systems is not implemented yet."
+msgstr "檢查 %s 檔案系統的支援尚未實作。"
+
+#: libparted/filesys.c:571
+msgid "raw block copying"
+msgstr "原始區塊複製"
+
+#: libparted/filesys.c:582
+msgid "growing file system"
+msgstr "正在擴大檔案系統"
+
+#: libparted/filesys.c:622
+msgid "Can't copy onto an overlapping partition."
+msgstr "無法複製到重疊的分割區。"
+
+#: libparted/filesys.c:644
+#, c-format
+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 來說尚不直接支援它的檔案系統複製。然而,改變大小的支援已實作完成。因"
+"此,只要新分割區比舊分割區大,就能夠複製檔案系統。所以,縮小您試圖複製的分割"
+"區,或是複製到較大的分割區。"
+
+#: libparted/filesys.c:658
+#, c-format
+msgid "Support for copying %s file systems is not implemented yet."
+msgstr "複製 %s 檔案系統的支援尚未實作。"
+
+#: libparted/filesys.c:696
+#, c-format
+msgid "Support for resizing %s file systems is not implemented yet."
+msgstr "改變 %s 檔案系統的支援尚未實作。"
+
+#: libparted/fs/reiserfs/reiserfs.c:315
+msgid "creating"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:402
+#, fuzzy
+msgid "The file system is in an invalid state. Perhaps it is mounted?"
+msgstr "檔案系統比它的卷冊還大!"
+
+#: libparted/fs/reiserfs/reiserfs.c:410
+msgid "The file system is in old (unresizeable) format."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:416
+msgid "Invalid free blocks count. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:431
+#, fuzzy
+msgid "checking"
+msgstr "檢查"
+
+#: libparted/fs/reiserfs/reiserfs.c:437
+msgid "Reiserfs tree seems to be corrupted. Run reiserfsck --check first."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:449
+#, fuzzy
+msgid ""
+"The reiserfs file system passed a basic check. For a more comprehensive "
+"check, run reiserfsck --check."
+msgstr "ext2 檔案系統通過了基本檢查。至於更完整的檢查,請使用 e2fsck 程式。"
+
+#: libparted/fs/reiserfs/reiserfs.c:474
+#, fuzzy
+msgid "Sorry, can't move the start of reiserfs partitions yet."
+msgstr "抱歉,尚無法移動 ext2 分割區的起點!"
+
+#: libparted/fs/reiserfs/reiserfs.c:490
+msgid "Couldn't reopen device abstraction layer for read/write."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:508 libparted/fs/ext2/ext2_resize.c:552
+#: libparted/fs/hfs/hfs.c:250 libparted/fs/hfs/hfs.c:629
+msgid "shrinking"
+msgstr "正在縮小"
+
+#: libparted/fs/reiserfs/reiserfs.c:520
+#, fuzzy
+msgid "expanding"
+msgstr "警告"
+
+#: libparted/fs/reiserfs/reiserfs.c:592
+msgid "Couldn't create reiserfs device abstraction handler."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:606
+#, fuzzy, c-format
+msgid "Device is too small for %lu blocks."
+msgstr "對 ext2 來說檔案系統過小。"
+
+#: libparted/fs/reiserfs/reiserfs.c:615
+msgid "copying"
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:682
+#, c-format
+msgid "Couldn't resolve symbol %s. Error: %s."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:704
+msgid "GNU Parted found an invalid libreiserfs library."
+msgstr ""
+
+#: libparted/fs/reiserfs/reiserfs.c:715
+#, c-format
+msgid ""
+"GNU Parted has detected libreiserfs interface version mismatch. Found %d-%"
+"d, required %d. ReiserFS support will be disabled."
+msgstr ""
+
+#: libparted/labels/aix.c:137
+#, fuzzy
+msgid "Support for reading AIX disk labels is is not implemented yet."
+msgstr "建立 %s 檔案系統的支援尚未實作。"
+
+#: libparted/labels/aix.c:148
+#, fuzzy
+msgid "Support for writing AIX disk labels is is not implemented yet."
+msgstr "建立 %s 檔案系統的支援尚未實作。"
+
+#: libparted/labels/aix.c:161
+#, fuzzy
+msgid ""
+"Support for adding partitions to AIX disk labels is not implemented yet."
+msgstr "建立 %s 檔案系統的支援尚未實作。"
+
+#: libparted/labels/aix.c:171
+#, fuzzy
+msgid ""
+"Support for duplicating partitions in AIX disk labels is not implemented yet."
+msgstr "建立 %s 檔案系統的支援尚未實作。"
+
+#: libparted/labels/aix.c:189
+#, fuzzy
+msgid ""
+"Support for setting system type of partitions in AIX disk labels is not "
+"implemented yet."
+msgstr "建立 %s 檔案系統的支援尚未實作。"
+
+#: libparted/labels/aix.c:199
+#, fuzzy
+msgid "Support for setting flags in AIX disk labels is not implemented yet."
+msgstr "建立 %s 檔案系統的支援尚未實作。"
+
+#: libparted/labels/bsd.c:501 libparted/labels/dasd.c:755
+#: libparted/labels/dos.c:1974 libparted/labels/dvh.c:770
+#: libparted/labels/gpt.c:1448 libparted/labels/loop.c:248
+#: libparted/labels/mac.c:1408 libparted/labels/pc98.c:759
+#: libparted/labels/rdb.c:1041 libparted/labels/sun.c:705
+msgid "Unable to satisfy all constraints on the partition."
+msgstr "無法滿足分割區的所有限制。"
+
+#: libparted/labels/bsd.c:526
+msgid "Unable to allocate a bsd disklabel slot."
+msgstr "無法定位 bsd 磁碟標籤槽。"
+
+#: libparted/labels/dasd.c:166
+#, fuzzy
+msgid "Unable to determine the block size of this dasd"
+msgstr "無法確定 %s (%s) 的大小。"
+
+#: libparted/labels/dasd.c:781
+#, fuzzy
+msgid "Unable to allocate a dasd disklabel slot"
+msgstr "無法定位 bsd 磁碟標籤槽。"
+
+#: libparted/labels/dos.c:827
+#, c-format
+msgid "Invalid partition table on %s -- wrong signature %x."
+msgstr "%s 上的分割區表無效 - 錯誤的簽名 %x。"
+
+#: libparted/labels/dos.c:855
+#, c-format
+msgid "Invalid partition table - recursive partition on %s."
+msgstr "無效的分割區表 - %s 出現遞歸分割區。"
+
+#: libparted/labels/dos.c:1318
+msgid "Extended partitions cannot be hidden on msdos disk labels."
+msgstr "擴充分割區無法隱藏於 msdos 磁碟標籤之上。"
+
+#: libparted/labels/dos.c:1958
+msgid "Parted can't resize partitions managed by Windows Dynamic Disk."
+msgstr "Parted 無法改變由「視窗動態磁碟」所管理的分割區大小。"
+
+#: libparted/labels/dvh.c:190
+#, c-format
+msgid "%s has no extended partition (volume header partition)."
+msgstr "%s 沒有擴充分割區 (卷頭分割區)。"
+
+#: libparted/labels/dvh.c:313
+msgid "Checksum is wrong, indicating the partition table is corrupt."
+msgstr "總和檢查錯誤,標明分割區表已損壞。"
+
+#: libparted/labels/dvh.c:616
+msgid "Only primary partitions can be root partitions."
+msgstr "只有主分割區可以做為根分割區。"
+
+#: libparted/labels/dvh.c:630
+msgid "Only primary partitions can be swap partitions."
+msgstr "只有主分割區可以是交換分割區。"
+
+#: libparted/labels/dvh.c:644
+msgid "Only logical partitions can be a boot file."
+msgstr "只有邏輯分割區可以是個開機檔案。"
+
+#: libparted/labels/dvh.c:721
+msgid "Only logical partitions (boot files) have a name."
+msgstr "只有邏輯分割區 (開機檔案) 擁有名字。"
+
+#: libparted/labels/dvh.c:812
+msgid "Too many primary partitions"
+msgstr "過多的主分割區"
+
+#: libparted/labels/fdasd.c:103
+#, c-format
+msgid ""
+"%s open error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:107
+#, c-format
+msgid ""
+"%s seek error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:110
+#, c-format
+msgid ""
+"%s read error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:113
+#, fuzzy, c-format
+msgid ""
+"%s write error\n"
+"%s\n"
+msgstr "在寫入 %2$s 時 %1$s"
+
+#: libparted/labels/fdasd.c:116
+#, c-format
+msgid ""
+"%s IOCTL error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:119
+#, c-format
+msgid ""
+"%s API version mismatch\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:122
+#, c-format
+msgid ""
+"%s Unsupported disk type\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:126
+#, c-format
+msgid ""
+"%s Unsupported disk format\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:130
+#, fuzzy, c-format
+msgid ""
+"%s Disk in use\n"
+"%s\n"
+msgstr "磁碟 %s:%s\n"
+
+#: libparted/labels/fdasd.c:133
+#, c-format
+msgid ""
+"%s Config file syntax error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:137
+#, c-format
+msgid ""
+"%s Volume label is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:141
+#, c-format
+msgid ""
+"%s a data set name is corrupted.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:145
+#, c-format
+msgid ""
+"%s space allocation\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:149
+#, c-format
+msgid ""
+"%s device verification failed\n"
+"The specified device is not a valid DASD device\n"
+msgstr ""
+
+#: libparted/labels/fdasd.c:154
+#, c-format
+msgid ""
+"%s Fatal error\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/gpt.c:454
+#, 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:648
+#, c-format
+msgid ""
+"The format of the GPT partition table is version %x, which is newer than "
+"what Parted can recognise. Please tell us! bug-parted@gnu.org"
+msgstr ""
+"GPT 分割區表的格式版本為 %x,它比 Parted 所能識別的版本要新。請告訴我們!bug-"
+"parted@gnu.org"
+
+#: libparted/labels/gpt.c:698
+#, 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:827
+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:862
+msgid ""
+"The primary GPT table is corrupt, but the backup appears OK, so that will be "
+"used."
+msgstr "主 GPT 表損壞,但備份似乎是正確的,所以將會使用它。"
+
+#: libparted/labels/gpt.c:870
+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/mac.c:181
+#, c-format
+msgid "Invalid signature %x for Mac disk labels."
+msgstr "無效的 Mac 磁碟標籤簽名 %x。"
+
+#: libparted/labels/mac.c:226
+msgid "Partition map has no partition map entry!"
+msgstr "分割區映射不含有分割區映射條目!"
+
+#: libparted/labels/mac.c:273
+#, c-format
+msgid "%s is too small for a Mac disk label!"
+msgstr "%s 對 Mac 磁碟標籤來說太小了!"
+
+#: libparted/labels/mac.c:532
+#, c-format
+msgid "Partition %d has an invalid signature %x."
+msgstr "分割區 %d 含有無效的簽名 %x。"
+
+#: libparted/labels/mac.c:550
+#, c-format
+msgid "Partition %d has an invalid length of 0 bytes!"
+msgstr "分割區 %d 含有無效的長度 0 位元組!"
+
+#: libparted/labels/mac.c:580
+msgid "The data region doesn't start at the start of the partition."
+msgstr "資料區並未從分割區的起點開始。"
+
+#: libparted/labels/mac.c:597
+msgid "The boot region doesn't start at the start of the partition."
+msgstr "啟動區域並未從分割區的起點開始。"
+
+#: libparted/labels/mac.c:611
+msgid "The partition's boot region doesn't occupy the entire partition."
+msgstr "分割區的啟動區域並未佔用整個分割區。"
+
+#: libparted/labels/mac.c:622
+msgid "The partition's data region doesn't occupy the entire partition."
+msgstr "分割區的資料區域並未佔用整個分割區。"
+
+#: libparted/labels/mac.c:675
+#, c-format
+msgid ""
+"Weird block size on device descriptor: %d bytes is not divisible by 512."
+msgstr "設備描述中出現古怪的區塊大小:%d 位元組不能被 512 整除。"
+
+#: libparted/labels/mac.c:688
+#, 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:736
+msgid "No valid partition map found."
+msgstr "找不到有效的分割區映射。"
+
+#: libparted/labels/mac.c:795
+#, 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:822
+msgid "Weird! There are 2 partitions map entries!"
+msgstr "奇怪!兩個分割區映射條目!"
+
+#: libparted/labels/mac.c:1347
+msgid ""
+"Changing the name of a root or swap partition will prevent Linux from "
+"recognising it as such."
+msgstr "改變根分割區或交換分割區的名稱將導致 Linux 無法識別它。"
+
+#: libparted/labels/mac.c:1443
+msgid "Can't add another partition -- the partition map is too small!"
+msgstr "無法添加另一個分割區 -- 分割區映射過小!"
+
+#: libparted/labels/pc98.c:354
+#, c-format
+msgid "Invalid partition table on %s."
+msgstr "%s 的分割區表無效。"
+
+#: libparted/labels/pc98.c:406 libparted/labels/pc98.c:484
+#, c-format
+msgid ""
+"Partition %d isn't aligned to cylinder boundaries. This is still "
+"unsupported."
+msgstr "分割區 %d 並未對齊到磁柱邊界。此功能仍然尚未被支援。"
+
+#: libparted/labels/pc98.c:791
+msgid "Can't add another partition."
+msgstr "無法添加其它分割區。"
+
+#: libparted/labels/rdb.c:162
+#, c-format
+msgid "%s : Bad checksum on block %llu of type %s."
+msgstr "%s:區塊 %llu 的類型 %s 有不當的總和檢查值。"
+
+#: libparted/labels/rdb.c:497
+#, c-format
+msgid "%s : Didn't find rdb block, should never happen."
+msgstr "%s:無法找到 rdb 區塊,這不應該發生。"
+
+#: libparted/labels/rdb.c:581
+#, c-format
+msgid "%s : Loop detected at block %d."
+msgstr "%s:於區塊 %d 偵測到迴圈。"
+
+#: libparted/labels/rdb.c:600
+#, c-format
+msgid "%s : The %s list seems bad at block %s."
+msgstr "%1$s:區塊 %3$s 處似有不當 %2$s 列表。"
+
+#: libparted/labels/rdb.c:689
+#, c-format
+msgid "%s : Failed to list bad blocks."
+msgstr "%s:列舉不當區塊時失敗。"
+
+#: libparted/labels/rdb.c:697
+#, c-format
+msgid "%s : Failed to list partition blocks."
+msgstr "%s:列舉分割區區塊時失敗。"
+
+#: libparted/labels/rdb.c:705
+#, c-format
+msgid "%s : Failed to list file system blocks."
+msgstr "%s:列舉檔案系統區塊時失敗。"
+
+#: libparted/labels/rdb.c:713
+#, c-format
+msgid "%s : Failed to list boot blocks."
+msgstr "%s:列舉開機區塊時失敗。"
+
+#: libparted/labels/rdb.c:740
+#, c-format
+msgid "Failed to write partition block at %d."
+msgstr "寫入分割區區塊 %d 時失敗。"
+
+#: libparted/labels/rdb.c:1069
+msgid "Unable to allocate a partition number."
+msgstr "無法定位分割區編號。"
+
+#: libparted/labels/sun.c:145
+msgid "Corrupted Sun disk label detected."
+msgstr "偵測到損壞了的 Sun 磁碟標籤。"
+
+#: libparted/labels/sun.c:266
+#, 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:288
+#, c-format
+msgid "The disk label describes a disk bigger than %s."
+msgstr "磁碟標籤描述的磁碟大於 %s。"
+
+#: libparted/labels/sun.c:442
+#, c-format
+msgid "The disk has %d cylinders, which is greater than the maximum of 65536."
+msgstr "該磁碟具有 %d 圈磁柱,已超過 65536 的最大限制。"
+
+#: libparted/labels/sun.c:737
+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:752
+msgid "Sun disk label is full."
+msgstr "Sun 磁碟標籤已滿。"
+
+#: libparted/labels/vtoc.c:163
+#, c-format
+msgid ""
+"%s opening device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:167
+#, c-format
+msgid ""
+"%s seeking device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:171
+#, c-format
+msgid ""
+"%s writing to device '%s' failed,\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:175
+#, c-format
+msgid ""
+"%s reading from device '%s' failed.\n"
+"%s\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:179
+#, c-format
+msgid "Fatal error\n"
+msgstr ""
+
+#: libparted/labels/vtoc.c:418
+msgid "Could not read VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:424
+msgid "Could not read VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:431
+msgid "Could not read VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:438
+msgid "Could not read VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:445
+msgid "Could not read VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:462
+msgid "Could not write VTOC labels."
+msgstr ""
+
+#: libparted/labels/vtoc.c:468
+msgid "Could not write VTOC FMT1 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:475
+msgid "Could not write VTOC FMT4 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:482
+msgid "Could not write VTOC FMT5 DSCB."
+msgstr ""
+
+#: libparted/labels/vtoc.c:489
+msgid "Could not write VTOC FMT7 DSCB."
+msgstr ""
+
+#: libparted/libparted.c:296 libparted/libparted.c:316
+msgid "Out of memory."
+msgstr "記憶體耗盡。"
+
+#: libparted/unit.c:139
+msgid "Cannot get unit size for special unit 'COMPACT'."
+msgstr "無法獲得特殊的「COMPACT」所用的單位大小。"
+
+#: libparted/unit.c:386
+#, c-format
+msgid "\"%s\" has invalid syntax for locations."
+msgstr "定位 \"%s\" 時語法無效。"
+
+#: libparted/unit.c:394
+#, c-format
+msgid "The maximum head value is %d."
+msgstr "磁頭數量的最大值為 %d。"
+
+#: libparted/unit.c:401
+#, c-format
+msgid "The maximum sector value is %d."
+msgstr "磁區數量的最大值為 %d。"
+
+#: libparted/unit.c:413 libparted/unit.c:545
+#, c-format
+msgid "The location %s is outside of the device %s."
+msgstr "位置 %s 超出裝置 %s 的範圍。"
+
+#: libparted/unit.c:527
+msgid "Invalid number."
+msgstr "無效的編號。"
+
+#: libparted/fs/amiga/affs.c:63 libparted/fs/amiga/apfs.c:56
+#: libparted/fs/amiga/asfs.c:70
+#, fuzzy, c-format
+msgid "%s : Failed to allocate partition block\n"
+msgstr "%s:列舉分割區區塊時失敗。"
+
+#: libparted/fs/amiga/affs.c:78 libparted/fs/amiga/apfs.c:70
+#: libparted/fs/amiga/asfs.c:86
+#, fuzzy, c-format
+msgid "%s : Failed to allocate block\n"
+msgstr "%s:列舉開機區塊時失敗。"
+
+#: libparted/fs/amiga/affs.c:83 libparted/fs/amiga/apfs.c:75
+#, fuzzy, c-format
+msgid "%s : Couldn't read boot block %llu\n"
+msgstr "%s:於區塊 %d 偵測到迴圈。"
+
+#: libparted/fs/amiga/affs.c:99 libparted/fs/amiga/apfs.c:86
+#: libparted/fs/amiga/asfs.c:92 libparted/fs/amiga/asfs.c:106
+#, fuzzy, c-format
+msgid "%s : Couldn't read root block %llu\n"
+msgstr "%s:於區塊 %d 偵測到迴圈。"
+
+#: libparted/fs/amiga/amiga.c:72
+#, fuzzy, c-format
+msgid "%s : Failed to allocate id list element\n"
+msgstr "%s:列舉不當區塊時失敗。"
+
+#: libparted/fs/amiga/amiga.c:189
+#, c-format
+msgid "%s : Couldn't read block %llu\n"
+msgstr ""
+
+#: libparted/fs/amiga/amiga.c:202
+#, fuzzy, c-format
+msgid "%s : Bad checksum on block %llu of type %s\n"
+msgstr "%s:區塊 %llu 的類型 %s 有不當的總和檢查值。"
+
+#: libparted/fs/amiga/amiga.c:212
+#, fuzzy, c-format
+msgid "%s : Couldn't write block %d\n"
+msgstr "%s:於區塊 %d 偵測到迴圈。"
+
+#: libparted/fs/amiga/amiga.c:278
+#, fuzzy, c-format
+msgid "%s : Failed to allocate disk_specific rdb block\n"
+msgstr "%s:列舉不當區塊時失敗。"
+
+#: libparted/fs/amiga/amiga.c:289
+#, fuzzy, c-format
+msgid "%s : Didn't find rdb block, should never happen\n"
+msgstr "%s:無法找到 rdb 區塊,這不應該發生。"
+
+#: libparted/fs/amiga/amiga.c:318
+#, fuzzy, c-format
+msgid "%s : Failed to read partition block %llu\n"
+msgstr "%s:列舉分割區區塊時失敗。"
+
+#: libparted/fs/ext2/ext2.c:87 libparted/fs/ext2/ext2.c:112
+msgid "Inconsistent group descriptors!"
+msgstr "不一致的群組描述符號!"
+
+#: libparted/fs/ext2/ext2.c:91 libparted/fs/ext2/ext2.c:116
+msgid "File system full!"
+msgstr "檔案系統已滿!"
+
+#: libparted/fs/ext2/ext2.c:686
+msgid "Invalid superblock. Are you sure this is an ext2 file system?"
+msgstr "無效的超區塊。您確信它是一個 ext2 檔案系統?"
+
+#: libparted/fs/ext2/ext2.c:700 libparted/fs/ext2/ext2_resize.c:658
+msgid "File system has errors! You should run e2fsck."
+msgstr "檔案系統發生錯誤!您應該執行 e2fsck。"
+
+#: libparted/fs/ext2/ext2.c:711
+msgid ""
+"File system was not cleanly unmounted! You should run e2fsck. Modifying an "
+"unclean file system could cause severe corruption."
+msgstr ""
+"檔案系統沒有被乾淨地卸載!您應該執行 e2fsck。修改不乾淨的檔案系統可能導致嚴重"
+"的損壞。"
+
+#: libparted/fs/ext2/ext2.c:731
+msgid "File system has an incompatible feature enabled."
+msgstr "檔案系統啟用了不相容的功能。"
+
+#: libparted/fs/ext2/ext2.c:742
+msgid "Error allocating buffer cache."
+msgstr "分配緩衝區快取時發生錯誤。"
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:114
+msgid ""
+"Found an inode with a incorrect link count. Better go run e2fsck first!"
+msgstr "找到帶有錯誤連結計數的 inode。最好先執行 e2fsck!"
+
+#: libparted/fs/ext2/ext2_inode_relocator.c:487
+msgid "Not enough free inodes!"
+msgstr "沒有足夠的可用 inodes!"
+
+#: libparted/fs/ext2/ext2_resize.c:223
+msgid "File system is too full to remove a group!"
+msgstr "檔案系統被過度佔用,以致無法刪除整組!"
+
+#: libparted/fs/ext2/ext2_resize.c:232
+msgid "File system has too many allocated inodes to remove a group!"
+msgstr "檔案系統中已使用的 inode 過多,以致無法刪除整組!"
+
+#: libparted/fs/ext2/ext2_resize.c:491
+msgid "adding groups"
+msgstr "添加群組"
+
+#: libparted/fs/ext2/ext2_resize.c:528
+#, c-format
+msgid "Your file system is too full to resize it to %i blocks. Sorry."
+msgstr "您的檔案系統被過度佔用,以致無法將它的大小改變為 %i 個區塊。抱歉。"
+
+#: libparted/fs/ext2/ext2_resize.c:538
+#, c-format
+msgid ""
+"Your file system has too many occupied inodes to resize it to %i blocks. "
+"Sorry."
+msgstr ""
+"您的檔案系統中已使用的 inode 過多,以致無法將其大小改變為 %i 個區塊。抱歉。"
+
+#: libparted/fs/ext2/ext2_resize.c:666
+msgid "File system was not cleanly unmounted! You should run e2fsck."
+msgstr "檔案系統沒有乾淨地卸載!您應該執行 e2fsck。"
+
+#: libparted/fs/ext2/ext2_resize.c:675
+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」。"
+
+#: libparted/fs/ext2/ext2_resize.c:691
+#, 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'。"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:198
+msgid "Cross-linked blocks found! Better go run e2fsck first!"
+msgstr "發現交叉連結區塊!最好先執行 e2fsck!"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:537
+#, c-format
+msgid "Block %i has no reference? Weird."
+msgstr "區塊 %i 沒有被參照?奇怪。"
+
+#: libparted/fs/ext2/ext2_block_relocator.c:737
+#, fuzzy, c-format
+msgid "Block %i shouldn't have been marked (%d, %d)!"
+msgstr "區塊 %i 不應該已被標記!"
+
+#: libparted/fs/ext2/interface.c:186
+msgid ""
+"The ext2 file system passed a basic check. For a more comprehensive check, "
+"use the e2fsck program."
+msgstr "ext2 檔案系統通過了基本檢查。至於更完整的檢查,請使用 e2fsck 程式。"
+
+#: libparted/fs/ext2/interface.c:203
+msgid "Sorry, can't move the start of ext2 partitions yet!"
+msgstr "抱歉,尚無法移動 ext2 分割區的起點!"
+
+#: libparted/fs/ext2/ext2_buffer.c:82
+msgid "Couldn't flush buffer cache!"
+msgstr "無法排空緩衝區快取!"
+
+#: libparted/fs/ext2/ext2_mkfs.c:162
+msgid "writing per-group metadata"
+msgstr "寫入個別群組的中繼資料"
+
+#: libparted/fs/ext2/ext2_mkfs.c:564
+msgid "File system too small for ext2."
+msgstr "對 ext2 來說檔案系統過小。"
+
+#: libparted/fs/fat/calc.c:135
+#, c-format
+msgid ""
+"You need %s of free disk space to shrink this partition to this size. "
+"Currently, only %s is free."
+msgstr ""
+"您需要 %s 的自由空間來將此分割區收縮到這一大小。而目前只有 %s 的自由空間。"
+
+#: libparted/fs/fat/context.c:56
+#, c-format
+msgid ""
+"Cluster start delta = %d, which is not a multiple of the cluster size %d."
+msgstr "磁簇起始偏移 = %d,不是磁簇大小 %d 的整數倍。"
+
+#: libparted/fs/fat/fat.c:308
+#, c-format
+msgid "Partition too big/small for a %s file system."
+msgstr "對於 %s 檔案系統來說,分割區過大或過小。"
+
+#: libparted/fs/fat/fat.c:474
+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,然"
+"後再回到這裡來。"
+
+#: libparted/fs/fat/fat.c:514
+msgid "There are no possible configurations for this FAT type."
+msgstr "對於此 FAT 類型沒有可能的配置。"
+
+#: libparted/fs/fat/fat.c:526
+#, c-format
+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)。"
+
+#: libparted/fs/fat/fat.c:549
+#, c-format
+msgid ""
+"File system is reporting the free space as %d clusters, not %d clusters."
+msgstr "檔案系統報告自由空間為 %d 磁簇,而不是 %d 磁簇。"
+
+#: libparted/fs/fat/fat.c:874
+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/resize.c:159
+msgid ""
+"There's not enough room in the root directory for all of the files. Either "
+"cancel, or ignore to lose the files."
+msgstr "根目錄下沒有保存所有檔案的足夠空間。取消或者以損失檔案為代價忽略它。"
+
+#: libparted/fs/fat/resize.c:300
+msgid "Error writing to the root directory."
+msgstr "寫入根目錄時錯誤。"
+
+#: libparted/fs/fat/resize.c:489
+msgid "If you leave your file system as FAT16, then you will have no problems."
+msgstr "如果將您的檔案系統類型保持 FAT16 不變,那麼你就不會有問題。"
+
+#: libparted/fs/fat/resize.c:492
+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 的手冊 (或您的發行"
+"版手冊)。"
+
+#: libparted/fs/fat/resize.c:500
+msgid ""
+"If you leave your file system as FAT32, then you will not introduce any new "
+"problems."
+msgstr "如果您保持檔案系統類型為 FAT32 不變,那麼您將不會遇到任何新問題。"
+
+#: libparted/fs/fat/resize.c:504
+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 所存取。"
+
+#: libparted/fs/fat/resize.c:518
+#, c-format
+msgid "%s %s %s"
+msgstr "%s %s %s"
+
+#: libparted/fs/fat/resize.c:519
+msgid "Would you like to use FAT32?"
+msgstr "您是否願意使用 FAT32?"
+
+#: libparted/fs/fat/resize.c:550 libparted/fs/fat/resize.c:566
+#, c-format
+msgid "%s %s"
+msgstr "%s %s"
+
+#: libparted/fs/fat/resize.c:551
+msgid ""
+"The file system can only be resized to this size by converting to FAT16."
+msgstr "檔案系統的大小只能經由轉換為 FAT16 改變到這一大小。"
+
+#: libparted/fs/fat/resize.c:567
+msgid ""
+"The file system can only be resized to this size by converting to FAT32."
+msgstr "檔案系統的大小只能經由轉換為 FAT32 改變到這一大小。"
+
+#: libparted/fs/fat/resize.c:580
+msgid ""
+"GNU Parted cannot resize this partition to this size. We're working on it!"
+msgstr "GNU Parted 無法將此分割區轉換到這一大小。我們正在努力中!"
+
+#: 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:139
+#, 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:164
+#, 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:213
+msgid "FAT boot sector says logical sector size is 0. This is weird. "
+msgstr "FAT 啟動磁區聲稱邏輯磁區的大小為零。這很奇怪。"
+
+#: libparted/fs/fat/bootsector.c:219
+msgid "FAT boot sector says there are no FAT tables. This is weird. "
+msgstr "FAT 啟動磁區聲稱沒有 FAT 表。這很奇怪。"
+
+#: libparted/fs/fat/bootsector.c:225
+msgid "FAT boot sector says clusters are 0 sectors. This is weird. "
+msgstr "FAT 啟動磁區聲稱磁簇具有零磁區。這很奇怪。"
+
+#: libparted/fs/fat/bootsector.c:235
+msgid "File system is FAT12, which is unsupported."
+msgstr "檔案系統為 FAT12,不支援。"
+
+#: libparted/fs/fat/bootsector.c:411
+#, 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/fat/count.c:152
+#, c-format
+msgid "Bad directory entry for %s: first cluster is the end of file marker."
+msgstr "%s 的目錄條目不當:第一個磁簇就是檔案標記的結束。"
+
+#: libparted/fs/fat/count.c:165
+#, c-format
+msgid ""
+"Bad FAT: unterminated chain for %s. You should run dosfsck or scandisk."
+msgstr "不當的 FAT:%s 的鏈結未結束。您應該執行 dosfsck 或 scandisk。"
+
+#: libparted/fs/fat/count.c:174
+#, c-format
+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。"
+
+#: libparted/fs/fat/count.c:184
+#, c-format
+msgid ""
+"Bad FAT: cluster %d is cross-linked for %s. You should run dosfsck or "
+"scandisk."
+msgstr "不當的 FAT:磁簇 %d 與 %s 的鏈結交叉。您應該執行 dosfsck 或 scandisk。"
+
+#: libparted/fs/fat/count.c:203
+#, c-format
+msgid "%s is %dk, but it has %d clusters (%dk)."
+msgstr "%s 為 %dk,但含有 %d 個磁簇 (%dk)。"
+
+#: libparted/fs/fat/count.c:266
+#, c-format
+msgid ""
+"The file %s is marked as a system file. This means moving it could cause "
+"some programs to stop working."
+msgstr "檔案 %s 被標記為系統檔案。這意味著移動它可能導致某些程式停止工作。"
+
+#: libparted/fs/fat/table.c:137
+#, c-format
+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。"
+
+#: libparted/fs/fat/table.c:269
+#, c-format
+msgid "fat_table_set: cluster %ld outside file system"
+msgstr "fat_table_set:磁簇 %ld 位於檔案系統之外"
+
+#: libparted/fs/fat/table.c:301
+#, c-format
+msgid "fat_table_get: cluster %ld outside file system"
+msgstr "fat_table_get:磁簇 %ld 位於檔案系統之外"
+
+#: libparted/fs/fat/table.c:343
+msgid "fat_table_alloc_cluster: no free clusters"
+msgstr "fat_table_alloc_cluster:沒有自由磁簇"
+
+#: libparted/fs/linux_swap/linux_swap.c:275
+#, fuzzy, c-format
+msgid "Unrecognised old style linux swap signature '%10s'."
+msgstr "無法識別的 linux 交換簽名「%10s」。"
+
+#: libparted/fs/linux_swap/linux_swap.c:318
+#, fuzzy, c-format
+msgid "Unrecognised new style linux swap signature '%10s'."
+msgstr "無法識別的 linux 交換簽名「%10s」。"
+
+#: libparted/fs/linux_swap/linux_swap.c:358
+#, fuzzy, c-format
+msgid "Unrecognised swsusp linux swap signature '%9s'."
+msgstr "無法識別的 linux 交換簽名「%10s」。"
+
+#: libparted/fs/linux_swap/linux_swap.c:434
+msgid "Too many bad pages."
+msgstr "過多的不當分頁。"
+
+#: libparted/fs/hfs/advfs.c:121 libparted/fs/hfs/advfs_plus.c:122
+#: libparted/fs/hfs/reloc.c:414 libparted/fs/hfs/reloc.c:508
+#: libparted/fs/hfs/reloc_plus.c:539 libparted/fs/hfs/reloc_plus.c:658
+#: libparted/fs/hfs/reloc_plus.c:772
+msgid "The file system contains errors."
+msgstr "檔案系統包含錯誤。"
+
+#: libparted/fs/hfs/advfs_plus.c:287
+msgid "Bad blocks could not be read."
+msgstr "無法讀取不當的區塊。"
+
+#: libparted/fs/hfs/cache.c:137
+#, c-format
+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 的擴充區,但是此處已有其他區塊存在。您應該檢查檔"
+"案系統!"
+
+#: libparted/fs/hfs/cache.c:214
+#, c-format
+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,但是此處已有其他區塊存在。這種事不應該"
+"發生!"
+
+#: libparted/fs/hfs/file.c:143
+#, c-format
+msgid "Could not update the extent cache for HFS file with CNID %X."
+msgstr "無法更新具有 CNID %X 的 HFS 檔案擴充快取。"
+
+#: libparted/fs/hfs/file.c:180
+#, c-format
+msgid "Trying to read HFS file with CNID %X behind EOF."
+msgstr "嘗試讀取資料於具有 CNID %X 的 HFS 檔案結尾之後。"
+
+#: libparted/fs/hfs/file.c:190 libparted/fs/hfs/file.c:220
+#, c-format
+msgid "Could not find sector %lli of HFS file with CNID %X."
+msgstr "無法找到具有 CNID %2$X 的 HFS 檔案之中的磁區 %1$lli。"
+
+#: libparted/fs/hfs/file.c:210
+#, c-format
+msgid "Trying to write HFS file with CNID %X behind EOF."
+msgstr "嘗試寫入資料於具有 CNID %X 的 HFS 檔案結尾之後。"
+
+#: libparted/fs/hfs/file_plus.c:157
+#, c-format
+msgid "Could not update the extent cache for HFS+ file with CNID %X."
+msgstr "無法更新具有 CNID %X 的 HFS+ 檔案之擴充快取。"
+
+#: libparted/fs/hfs/file_plus.c:202
+#, c-format
+msgid "Trying to read HFS+ file with CNID %X behind EOF."
+msgstr "嘗試讀取資料於具有 CNID %X 的 HFS+ 檔案結尾之後。"
+
+#: libparted/fs/hfs/file_plus.c:213 libparted/fs/hfs/file_plus.c:256
+#, c-format
+msgid "Could not find sector %lli of HFS+ file with CNID %X."
+msgstr "無法找到具有 CNID %2$X 的 HFS+ 檔案之中的磁區 %1$lli。"
+
+#: libparted/fs/hfs/file_plus.c:245
+#, c-format
+msgid "Trying to write HFS+ file with CNID %X behind EOF."
+msgstr "嘗試寫入資料於具有 CNID %X 的 HFS+ 檔案結尾之後。"
+
+#: libparted/fs/hfs/hfs.c:232
+msgid "Sorry, HFS cannot be resized that way yet."
+msgstr "抱歉,HFS 尚無法以此方式改變大小。"
+
+#: libparted/fs/hfs/hfs.c:262 libparted/fs/hfs/hfs.c:641
+msgid "Data relocation has failed."
+msgstr "資料重新定位時失敗。"
+
+#: libparted/fs/hfs/hfs.c:281
+msgid "Data relocation left some data in the end of the volume."
+msgstr "資料重新定位時留下一些資料於卷冊末端。"
+
+#: libparted/fs/hfs/hfs.c:320
+msgid "writing HFS Master Directory Block"
+msgstr "正在寫入 HFS 主目錄區塊"
+
+#: libparted/fs/hfs/hfs.c:468
+msgid "No valid HFS[+X] signature has been found while opening."
+msgstr "開啟時沒有找到任何有效的 HFS[+X] 簽章。"
+
+#: libparted/fs/hfs/hfs.c:478
+#, c-format
+msgid "Version %d of HFS+ isn't supported."
+msgstr "並不支援版本 %d 的 HFS+。"
+
+#: libparted/fs/hfs/hfs.c:489
+#, c-format
+msgid "Version %d of HFSX isn't supported."
+msgstr "並不支援版本 %d 的 HFSX。"
+
+#: libparted/fs/hfs/hfs.c:672
+msgid "Data relocation left some data at the end of the volume."
+msgstr "資料重定位後遺留一些資料於卷冊的末端。"
+
+#: libparted/fs/hfs/hfs.c:720
+msgid "Error while writing the allocation file."
+msgstr "寫入定位檔案時發生錯誤。"
+
+#: libparted/fs/hfs/hfs.c:735
+msgid "Error while writing the compatibility part of the allocation file."
+msgstr "寫入定位檔案的相容部份時發生錯誤。"
+
+#: libparted/fs/hfs/hfs.c:750
+msgid "writing HFS+ Volume Header"
+msgstr "正在寫入 HFS+ 卷冊表頭"
+
+#: libparted/fs/hfs/hfs.c:850
+msgid "An error occurred while looking for the mandatory bad blocks file."
+msgstr "尋找強制性損壞區塊檔案時發生錯誤。"
+
+#: libparted/fs/hfs/hfs.c:904
+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+ 卷冊。"
+
+#: libparted/fs/hfs/hfs.c:940
+msgid "Sorry, HFS+ cannot be resized that way yet."
+msgstr "抱歉,HFS+ 尚無法以此方式改變大小。"
+
+#: libparted/fs/hfs/hfs.c:975
+msgid "shrinking embedded HFS+ volume"
+msgstr "正在縮小內嵌的 HFS+ 卷冊"
+
+#: libparted/fs/hfs/hfs.c:991
+msgid "Resizing the HFS+ volume has failed."
+msgstr "改變 HFS+ 卷冊大小時失敗。"
+
+#: libparted/fs/hfs/hfs.c:998
+msgid "shrinking HFS wrapper"
+msgstr "正在縮小 HFS 轉包程式"
+
+#: libparted/fs/hfs/hfs.c:1007
+msgid "Updating the HFS wrapper has failed."
+msgstr "更新 HFS+ 轉包程式時失敗。"
+
+#: libparted/fs/hfs/hfs.c:1109 libparted/fs/hfs/hfs.c:1194
+#, c-format
+msgid ""
+"This is not a real %s check. This is going to extract special low level "
+"files for debugging purposes."
+msgstr ""
+"這並非是一次真正的 %s 檢查。而是為了要分離出特別的低階檔案,以達到除錯的目"
+"的。"
+
+#: libparted/fs/hfs/journal.c:155
+msgid "Bad block list header checksum."
+msgstr "不良的區塊列表頭總和檢查值。"
+
+#: libparted/fs/hfs/journal.c:168
+#, c-format
+msgid ""
+"Invalid size of a transaction block while replaying the journal (%i bytes)."
+msgstr "重播日誌時無效的異動區塊大小 (%i 位元組)。"
+
+#: libparted/fs/hfs/journal.c:260
+msgid ""
+"Journal stored outside of the volume are not supported. Try to desactivate "
+"the journal and run Parted again."
+msgstr "不支援日誌式 HFS+ 卷冊,您應該在其上嘗試任何作業之前關閉日誌功能。"
+
+#: libparted/fs/hfs/journal.c:271
+msgid "Journal offset or size is not multiple of the sector size."
+msgstr "日誌偏移量或大小不是磁區大小的整數倍。"
+
+#: libparted/fs/hfs/journal.c:292
+msgid "Incorrect magic values in the journal header."
+msgstr "在日誌表頭中有不正確的特異值。"
+
+#: libparted/fs/hfs/journal.c:302
+msgid "Journal size mismatch between journal info block and journal header."
+msgstr "在日誌資訊區塊與日誌表頭之間的大小不相符合。"
+
+#: libparted/fs/hfs/journal.c:314
+msgid "Some header fields are not multiple of the sector size."
+msgstr "某些表頭欄位不是磁區大小的整數倍。"
+
+#: libparted/fs/hfs/journal.c:323
+msgid ""
+"The sector size stored in the journal is not 512 bytes. Parted only "
+"supports 512 bytes length sectors."
+msgstr ""
+"儲存於日誌的磁區大小不是 512 位元組。Parted 只支援長度為 512 位元組的磁區。"
+
+#: libparted/fs/hfs/journal.c:335
+msgid "Bad journal checksum."
+msgstr "不良的日誌總和檢查值。"
+
+#: libparted/fs/hfs/journal.c:353
+msgid ""
+"The journal is not empty. Parted must replay the transactions before "
+"opening the file system. This will modify the file system."
+msgstr ""
+"日誌並非為空。Parted 必須在開啟檔案系統之前重新播放異動。這將會修改檔案系統。"
+
+#: libparted/fs/hfs/journal.c:381
+msgid ""
+"The volume header or the master directory block has changed while replaying "
+"the journal. You should restart Parted."
+msgstr ""
+"當重新播放日誌時,卷冊表頭或是主目錄區塊已經改變。您應該重新啟動 Parted。"
+
+#: libparted/fs/hfs/probe.c:51
+#, 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 檔案系統。"
+
+#: libparted/fs/hfs/reloc.c:151 libparted/fs/hfs/reloc_plus.c:155
+msgid "An extent has not been relocated."
+msgstr "尚未重新定位一個擴充分割區。"
+
+#: libparted/fs/hfs/reloc.c:251 libparted/fs/hfs/reloc_plus.c:307
+msgid ""
+"A reference to an extent comes from a place it should not. You should check "
+"the file system!"
+msgstr "對於擴充分割區的參照來自一個不應該的地方。您應該檢查檔案系統!"
+
+#: libparted/fs/hfs/reloc.c:381
+msgid "This HFS volume has no catalog file. This is very unusual!"
+msgstr "這個 HFS 卷冊沒有類目檔案。這是很不尋常的!"
+
+#: libparted/fs/hfs/reloc.c:475
+msgid "This HFS volume has no extents overflow file. This is quite unusual!"
+msgstr "這個 HFS 卷冊沒有擴充區溢位檔案。這是相當不尋常的!"
+
+#: libparted/fs/hfs/reloc.c:517 libparted/fs/hfs/reloc_plus.c:668
+msgid ""
+"The extents overflow file should not contain its own extents! You should "
+"check the file system."
+msgstr "擴充區溢位檔案不應該包含它自己的擴充部份!您應該檢查檔案系統。"
+
+#: libparted/fs/hfs/reloc.c:574 libparted/fs/hfs/reloc_plus.c:847
+msgid "Could not cache the file system in memory."
+msgstr "無法快取記憶體中的檔案系統。"
+
+#: libparted/fs/hfs/reloc.c:635 libparted/fs/hfs/reloc_plus.c:908
+msgid "Bad blocks list could not be loaded."
+msgstr "不當的區塊列表無法被載入。"
+
+#: libparted/fs/hfs/reloc.c:649 libparted/fs/hfs/reloc_plus.c:924
+msgid "An error occurred during extent relocation."
+msgstr "擴充分割區重新定位期間發生錯誤。"
+
+#: libparted/fs/hfs/reloc_plus.c:495
+msgid "This HFS+ volume has no catalog file. This is very unusual!"
+msgstr "這個 HFS+ 卷冊沒有類目檔案。這是很不尋常的!"
+
+#: libparted/fs/hfs/reloc_plus.c:619
+msgid "This HFS+ volume has no extents overflow file. This is quite unusual!"
+msgstr "這個 HFS+ 卷冊沒有擴充區溢位檔案。這是相當不尋常的!"
+
+#: parted/parted.c:94
+msgid "displays this help message"
+msgstr "顯示此求助資訊"
+
+#: parted/parted.c:95
+msgid "lists partition layout on all block devices"
+msgstr ""
+
+#: parted/parted.c:96
+msgid "displays machine parseable output"
+msgstr ""
+
+#: parted/parted.c:97
+msgid "never prompts for user intervention"
+msgstr "從不提示使用者介入"
+
+#: parted/parted.c:98
+msgid "displays the version"
+msgstr "顯示版本"
+
+#: parted/parted.c:111
+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:114
+msgid "LABEL-TYPE is one of: "
+msgstr "LABEL-TYPE 是以下任意一項:"
+
+#: parted/parted.c:115
+msgid "FLAG is one of: "
+msgstr "FLAG 是以下任意一項:"
+
+#: parted/parted.c:116
+msgid "UNIT is one of: "
+msgstr "UNIT 是以下任意一項:"
+
+#: parted/parted.c:117
+msgid "PART-TYPE is one of: primary, logical, extended\n"
+msgstr "PART-TYPE 是主分割區、邏輯分割區、擴充分割區之一\n"
+
+#: parted/parted.c:119
+msgid "FS-TYPE is one of: "
+msgstr "FS-TYPE 是以下任意一項:"
+
+#: parted/parted.c:120
+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:123
+msgid "STATE is one of: on, off\n"
+msgstr "STATE 為:開、關\n"
+
+#: parted/parted.c:124
+msgid "DEVICE is usually /dev/hda or /dev/sda\n"
+msgstr "DEVICE 通常為 /dev/hda 或 /dev/sda\n"
+
+#: parted/parted.c:125
+msgid "NAME is any word you want\n"
+msgstr "NAME 是您需要的任何單詞\n"
+
+#: parted/parted.c:126
+msgid "The partition must have one of the following FS-TYPEs: "
+msgstr "分割區必須具備以下 FS-TYPEs 之一:"
+
+#: parted/parted.c:130
+#, 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:176
+#, c-format
+msgid "%0.f%%\t(time left %.2d:%.2d)"
+msgstr "%0.f%%\t(剩餘時間 %.2d:%.2d)"
+
+#: parted/parted.c:195
+#, 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:211
+#, c-format
+msgid "Partition(s) on %s are being used."
+msgstr "正在使用 %s 上的分割區。"
+
+#: parted/parted.c:223
+msgid ""
+"The existing file system will be destroyed and all data on the partition "
+"will be lost. Do you want to continue?"
+msgstr ""
+
+#: parted/parted.c:235
+#, 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:458 parted/parted.c:652 parted/parted.c:1044
+#: parted/parted.c:1128 parted/parted.c:1771 parted/parted.c:1852
+#: parted/parted.c:1900
+msgid "Partition number?"
+msgstr "分割區編號?"
+
+#: parted/parted.c:500
+msgid "Source device?"
+msgstr "來源設備?"
+
+#: parted/parted.c:504
+msgid "Source partition number?"
+msgstr "來源分割區編號?"
+
+#: parted/parted.c:509
+msgid "Can't copy an extended partition."
+msgstr "無法複製擴充分割區。"
+
+#: parted/parted.c:515
+msgid "Destination partition number?"
+msgstr "目標分割區編號?"
+
+#: parted/parted.c:615
+msgid "New disk label type?"
+msgstr "新的磁碟標籤類型?"
+
+#: parted/parted.c:656
+msgid "File system?"
+msgstr "檔案系統?"
+
+#: parted/parted.c:707 parted/parted.c:878
+msgid "Partition type?"
+msgstr "分割區類型?"
+
+#: parted/parted.c:714 parted/parted.c:885 parted/parted.c:1131
+msgid "Partition name?"
+msgstr "分割區名稱?"
+
+#: parted/parted.c:722 parted/parted.c:895
+msgid "File system type?"
+msgstr "檔案系統類型?"
+
+#: parted/parted.c:729 parted/parted.c:897 parted/parted.c:1059
+#: parted/parted.c:1725 parted/parted.c:1780
+msgid "Start?"
+msgstr "起始點?"
+
+#: parted/parted.c:731 parted/parted.c:900 parted/parted.c:1062
+#: parted/parted.c:1727 parted/parted.c:1782
+msgid "End?"
+msgstr "結束點?"
+
+#: parted/parted.c:769 parted/parted.c:938
+#, c-format
+msgid ""
+"You requested a partition from %s to %s.\n"
+"The closest location we can manage is %s to %s. Is this still acceptable to "
+"you?"
+msgstr ""
+"您要求將分割區從 %s 移動到 %s。\n"
+"我們可以管理的最接近分割區是從 %s 到 %s。這樣您可以接受嗎?"
+
+#: parted/parted.c:890
+msgid "An extended partition cannot hold a file system. Did you want mkpart?"
+msgstr "擴充分割區不能含有檔案系統。您是要用 mkpart 吧?"
+
+#: parted/parted.c:1050
+msgid "Can't move an extended partition."
+msgstr "無法移動擴充分割區。"
+
+#: parted/parted.c:1079
+msgid "Can't move a partition onto itself. Try using resize, perhaps?"
+msgstr "無法將分割區移動到它自身。也許試試改變大小?"
+
+#: parted/parted.c:1227
+#, c-format
+msgid "Minor: %d\n"
+msgstr "編號:%d\n"
+
+#: parted/parted.c:1228
+#, c-format
+msgid "Flags: %s\n"
+msgstr "旗標:%s\n"
+
+#: parted/parted.c:1229
+#, c-format
+msgid "File System: %s\n"
+msgstr "檔案系統:%s\n"
+
+#: parted/parted.c:1230
+msgid "Size: "
+msgstr "大小: "
+
+#: parted/parted.c:1235
+msgid "Minimum size: "
+msgstr "最小尺寸:"
+
+#: parted/parted.c:1238
+msgid "Maximum size: "
+msgstr "最大尺寸:"
+
+#: parted/parted.c:1362
+#, c-format
+msgid "Model: %s (%s)\n"
+msgstr ""
+
+#: parted/parted.c:1364
+#, c-format
+msgid "Disk %s: %s\n"
+msgstr "磁碟 %s:%s\n"
+
+#: parted/parted.c:1365
+#, c-format
+msgid "Sector size (logical/physical): %lldB/%lldB\n"
+msgstr "磁區大小 (邏輯/物理):%lldB/%lldB\n"
+
+#: parted/parted.c:1383
+#, 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:1392
+#, c-format
+msgid "Partition Table: %s\n"
+msgstr "分割區:%s\n"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Number"
+msgstr "編號"
+
+#: parted/parted.c:1406 parted/parted.c:1409
+msgid "Start"
+msgstr "起始點"
+
+#: parted/parted.c:1407 parted/parted.c:1410
+msgid "End"
+msgstr "結束點"
+
+#: parted/parted.c:1410
+msgid "Size"
+msgstr "大小"
+
+#: parted/parted.c:1414
+msgid "Type"
+msgstr "類型"
+
+#: parted/parted.c:1416
+msgid "File system"
+msgstr "檔案系統"
+
+#: parted/parted.c:1419
+msgid "Name"
+msgstr "名稱"
+
+#: parted/parted.c:1421
+msgid "Flags"
+msgstr "旗標"
+
+#: parted/parted.c:1477
+msgid "Free Space"
+msgstr "可用空間"
+
+#: parted/parted.c:1624
+#, 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:1663
+msgid "searching for file systems"
+msgstr "正在搜尋檔案系統"
+
+#: parted/parted.c:1877
+msgid "New device?"
+msgstr "新裝置?"
+
+#: parted/parted.c:1902
+msgid "Flag to Invert?"
+msgstr "要反相的旗標?"
+
+#: parted/parted.c:1907
+msgid "New state?"
+msgstr "新狀態?"
+
+#: parted/parted.c:1944
+msgid "Unit?"
+msgstr "單位?"
+
+#: parted/parted.c:2093
+msgid "check"
+msgstr "檢查"
+
+#: parted/parted.c:2096
+msgid ""
+"check NUMBER do a simple check on the file system"
+msgstr "check 編號 對檔案系統進行簡單的檢查"
+
+#: parted/parted.c:2102
+msgid "cp"
+msgstr "cp"
+
+#: parted/parted.c:2105
+msgid ""
+"cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER copy file system to another "
+"partition"
+msgstr "cp [來源裝置] 來源編號 目標編號 將檔案系統複製到另一個分割區"
+
+#: parted/parted.c:2111
+msgid "help"
+msgstr "help"
+
+#: parted/parted.c:2114
+#, fuzzy
+msgid ""
+"help [COMMAND] print general help, or help on "
+"COMMAND"
+msgstr ""
+"help [命令] 印出一般求助資訊,或關於「命令」的資"
+"訊"
+
+#: parted/parted.c:2120
+msgid "mklabel"
+msgstr "mklabel"
+
+#: parted/parted.c:2120
+#, fuzzy
+msgid "mktable"
+msgstr "mklabel"
+
+#: parted/parted.c:2123
+#, fuzzy
+msgid ""
+"mklabel,mktable LABEL-TYPE create a new disklabel (partition "
+"table)"
+msgstr "mklabel 標籤類型 建立新的磁碟標籤 (分割區表)"
+
+#: parted/parted.c:2129
+msgid "mkfs"
+msgstr "mkfs"
+
+#: parted/parted.c:2132
+msgid ""
+"mkfs NUMBER FS-TYPE make a FS-TYPE file system on "
+"partititon NUMBER"
+msgstr ""
+"mkfs 編號 檔案系統類型 在指定「編號」的分割區中建立類型為"
+"「檔案系統類型」的檔案系統"
+
+#: parted/parted.c:2138
+msgid "mkpart"
+msgstr "mkpart"
+
+#: parted/parted.c:2141
+msgid "mkpart PART-TYPE [FS-TYPE] START END make a partition"
+msgstr "mkpart 分割區類型 [檔案系統類型] 起始點 結束點 建立一個分割區"
+
+#: parted/parted.c:2147
+#, 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:2152
+msgid "mkpartfs"
+msgstr "mkpartfs"
+
+#: parted/parted.c:2155
+msgid ""
+"mkpartfs PART-TYPE FS-TYPE START END make a partition with a file system"
+msgstr ""
+"mkpartfs 分割區類型 檔案系統類型 起始點 結束點 建立一個帶有檔案系統的分割區"
+
+#: parted/parted.c:2161
+msgid "move"
+msgstr "move"
+
+#: parted/parted.c:2164
+msgid "move NUMBER START END move partition NUMBER"
+msgstr "move 編號 起始點 結束點 移動指定「編號」的分割區"
+
+#: parted/parted.c:2169
+msgid "name"
+msgstr "name"
+
+#: parted/parted.c:2172
+msgid "name NUMBER NAME name partition NUMBER as NAME"
+msgstr ""
+"name 編號 名稱 將指定「編號」的分割區命名為「名稱」"
+
+#: parted/parted.c:2177
+msgid "print"
+msgstr "print"
+
+#: parted/parted.c:2180
+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:2185
+msgid ""
+"Without arguments, 'print' displays the entire partition table. However with "
+"the following arguments it performs various other actions.\n"
+msgstr ""
+
+#: parted/parted.c:2187
+msgid " devices : display all active block devices\n"
+msgstr ""
+
+#: parted/parted.c:2188
+msgid ""
+" free : display information about free unpartitioned space on the "
+"current block device\n"
+msgstr ""
+
+#: parted/parted.c:2190
+#, fuzzy
+msgid ""
+" list, all : display the partition tables of all active block devices\n"
+msgstr ""
+"print [free|編號|all] 顯示分割區表、分割區,或者所有裝置"
+
+#: parted/parted.c:2191
+msgid ""
+" NUMBER : display more detailed information about this particular "
+"partition\n"
+msgstr ""
+
+#: parted/parted.c:2196
+msgid "quit"
+msgstr "quit"
+
+#: parted/parted.c:2199
+msgid "quit exit program"
+msgstr "quit 離開程式"
+
+#: parted/parted.c:2204
+msgid "rescue"
+msgstr "rescue"
+
+#: parted/parted.c:2207
+msgid ""
+"rescue START END rescue a lost partition near START "
+"and END"
+msgstr ""
+"rescue 起始點 結束點 挽救臨近「起始點」、「結束點」的遺失"
+"的分割區"
+
+#: parted/parted.c:2213
+msgid "resize"
+msgstr "resize"
+
+#: parted/parted.c:2216
+msgid ""
+"resize NUMBER START END resize partition NUMBER and its "
+"file system"
+msgstr ""
+"resize 編號 起始點 結束點 改變位於指定「編號」的分割區中檔案系"
+"統的大小"
+
+#: parted/parted.c:2224
+msgid "rm"
+msgstr "rm"
+
+#: parted/parted.c:2227
+msgid "rm NUMBER delete partition NUMBER"
+msgstr "rm 編號 刪除指定「編號」的分割區"
+
+#: parted/parted.c:2232
+msgid "select"
+msgstr "select"
+
+#: parted/parted.c:2235
+msgid "select DEVICE choose the device to edit"
+msgstr "select 設備 選擇要編輯的設備"
+
+#: parted/parted.c:2240
+msgid "set"
+msgstr "set"
+
+#: parted/parted.c:2243
+msgid ""
+"set NUMBER FLAG STATE change the FLAG on partition NUMBER"
+msgstr "set 編號 旗標 狀態 改變指定「編號」分割區的旗標"
+
+#: parted/parted.c:2249
+msgid "toggle"
+msgstr "toggle"
+
+#: parted/parted.c:2252
+msgid ""
+"toggle [NUMBER [FLAG]] toggle the state of FLAG on "
+"partition NUMBER"
+msgstr ""
+"toggle [編號 [旗標]] 切換「編號」分割區上的「旗標」狀態"
+
+#: parted/parted.c:2258
+msgid "unit"
+msgstr "unit"
+
+#: parted/parted.c:2261
+msgid "unit UNIT set the default unit to UNIT"
+msgstr "unit 單位 設定預設的「單位」"
+
+#: parted/parted.c:2266
+#, fuzzy
+msgid "version"
+msgstr "verion"
+
+#: parted/parted.c:2269
+#, fuzzy
+msgid ""
+"version display the version number and "
+"copyright information of GNU Parted"
+msgstr ""
+"version 顯示目前 GNU Parted 的版本與版權資訊"
+
+#: parted/parted.c:2273
+#, fuzzy
+msgid ""
+"'version' displays copyright and version information corresponding to this "
+"copy of GNU Parted\n"
+msgstr "version 依據此份 GNU Parted 顯示其版權與版本資訊\n"
+
+#: parted/parted.c:2335
+#, c-format
+msgid "Usage: %s [-hlmsv] [DEVICE [COMMAND [PARAMETERS]]...]\n"
+msgstr ""
+
+#: parted/parted.c:2379
+msgid "No device found"
+msgstr "沒有找到設備"
+
+#: parted/parted.c:2412
+msgid "WARNING: You are not superuser. Watch out for permissions."
+msgstr ""
+
+#: parted/parted.c:2450
+#, fuzzy
+msgid "You may need to update /etc/fstab.\n"
+msgstr "如果必要,不要忘記更新 /etc/fstab。\n"
+
+#: parted/ui.c:160
+msgid "Welcome to GNU Parted! Type 'help' to view a list of commands.\n"
+msgstr "歡迎使用 GNU Parted!輸入 'help' 來檢視命令列表。\n"
+
+#: parted/ui.c:163
+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:168
+#, 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:284
+msgid ""
+"\n"
+"Command History:\n"
+msgstr ""
+
+#: parted/ui.c:366
+#, fuzzy
+msgid ""
+"\n"
+"Error: SEGV_MAPERR (Address not mapped to object)\n"
+msgstr ""
+"\n"
+"錯誤: SEGV_MAPERR (位址並未對應到物件)"
+
+#: parted/ui.c:372
+#, fuzzy
+msgid ""
+"\n"
+"Error: SEGV_ACCERR (Invalid permissions for mapped object)\n"
+msgstr ""
+"\n"
+"錯誤: SEGV_ACCERR (對應的物件權限無效)"
+
+#: parted/ui.c:377
+#, fuzzy
+msgid ""
+"\n"
+"Error: A general SIGSEGV signal was encountered.\n"
+msgstr ""
+"\n"
+"錯誤: 遇到一般的 SIGSEGV 訊號。"
+
+#: parted/ui.c:410
+msgid ""
+"\n"
+"Error: FPE_INTDIV (Integer: divide by zero)"
+msgstr ""
+"\n"
+"錯誤: FPE_INTDIV (整數: 被零除)"
+
+#: parted/ui.c:415
+msgid ""
+"\n"
+"Error: FPE_INTOVF (Integer: overflow)"
+msgstr ""
+"\n"
+"錯誤: FPE_INTOVF (整數: 向上溢位)"
+
+#: parted/ui.c:420
+#, fuzzy
+msgid ""
+"\n"
+"Error: FPE_FLTDIV (Float: divide by zero)"
+msgstr ""
+"\n"
+"錯誤: FPE_INTDIV (浮點: 被零除)"
+
+#: parted/ui.c:425
+msgid ""
+"\n"
+"Error: FPE_FLTOVF (Float: overflow)"
+msgstr ""
+"\n"
+"錯誤: FPE_FLTOVF (浮點: 向上溢位)"
+
+#: parted/ui.c:430
+msgid ""
+"\n"
+"Error: FPE_FLTUND (Float: underflow)"
+msgstr ""
+"\n"
+"錯誤: FPE_FLTUND (浮點: 向下溢位)"
+
+#: parted/ui.c:435
+msgid ""
+"\n"
+"Error: FPE_FLTRES (Float: inexact result)"
+msgstr ""
+"\n"
+"錯誤: FPE_FLTRES (浮點: 不明確的結果)"
+
+#: parted/ui.c:440
+msgid ""
+"\n"
+"Error: FPE_FLTINV (Float: invalid operation)"
+msgstr ""
+"\n"
+"錯誤: FPE_FLTINV (浮點: 無效的操作)"
+
+#: parted/ui.c:445
+msgid ""
+"\n"
+"Error: FPE_FLTSUB (Float: subscript out of range)"
+msgstr ""
+"\n"
+"錯誤: FPE_FLTSUB (浮點: 註標超出範圍)"
+
+#: parted/ui.c:450
+msgid ""
+"\n"
+"Error: A general SIGFPE signal was encountered."
+msgstr ""
+"\n"
+"錯誤: 遇到一般的 SIGFPE 訊號。"
+
+#: parted/ui.c:483
+msgid ""
+"\n"
+"Error: ILL_ILLOPC (Illegal Opcode)"
+msgstr ""
+"\n"
+"錯誤: ILL_ILLOPC (不合法的操作碼)"
+
+#: parted/ui.c:488
+msgid ""
+"\n"
+"Error: ILL_ILLOPN (Illegal Operand)"
+msgstr ""
+"\n"
+"錯誤: ILL_ILLOPN (不合法的運算元)"
+
+#: parted/ui.c:493
+msgid ""
+"\n"
+"Error: ILL_ILLADR (Illegal addressing mode)"
+msgstr ""
+"\n"
+"錯誤: ILL_ILLADR (不合法的定址模式)"
+
+#: parted/ui.c:498
+msgid ""
+"\n"
+"Error: ILL_ILLTRP (Illegal Trap)"
+msgstr ""
+"\n"
+"錯誤: ILL_ILLTRP (不合法的陷阱)"
+
+#: parted/ui.c:503
+msgid ""
+"\n"
+"Error: ILL_PRVOPC (Privileged Opcode)"
+msgstr ""
+"\n"
+"錯誤: ILL_PRVOPC (具優先權的操作碼)"
+
+#: parted/ui.c:508
+msgid ""
+"\n"
+"Error: ILL_PRVREG (Privileged Register)"
+msgstr ""
+"\n"
+"錯誤: ILL_PRVREG (具優先權的暫存器)"
+
+#: parted/ui.c:513
+msgid ""
+"\n"
+"Error: ILL_COPROC (Coprocessor Error)"
+msgstr ""
+"\n"
+"錯誤: ILL_COPROC (輔助處理器錯誤)"
+
+#: parted/ui.c:518
+msgid ""
+"\n"
+"Error: ILL_BADSTK (Internal Stack Error)"
+msgstr ""
+"\n"
+"錯誤: ILL_BADSTK (內部堆疊錯誤)"
+
+#: parted/ui.c:523
+#, fuzzy
+msgid ""
+"\n"
+"Error: A general SIGILL signal was encountered."
+msgstr ""
+"\n"
+"錯誤: 遇到一般的 SIGILL 訊號。"
+
+#: parted/ui.c:1024
+msgid "Expecting a partition number."
+msgstr "需要分割區編號。"
+
+#: parted/ui.c:1033
+msgid "Partition doesn't exist."
+msgstr "分割區不存在。"
+
+#: parted/ui.c:1053
+msgid "Expecting a file system type."
+msgstr "需要檔案系統類型。"
+
+#: parted/ui.c:1060
+#, c-format
+msgid "Unknown file system type \"%s\"."
+msgstr "未知的檔案系統類型「%s」。"
+
+#: parted/ui.c:1080
+msgid "Expecting a disk label type."
+msgstr "需要磁碟標籤類型。"
+
+#: parted/ui.c:1178
+msgid "Can't create any more partitions."
+msgstr "無法建立更多分割區。"
+
+#: parted/ui.c:1188
+msgid "Expecting a partition type."
+msgstr "需要分割區類型。"
+
+#: parted/ui.c:1315
+msgid "on"
+msgstr "開"
+
+#: parted/ui.c:1316
+msgid "off"
+msgstr "關"
+
+#: parted/ui.c:1431
+msgid "OPTIONs:"
+msgstr "選項:"
+
+#: parted/ui.c:1436
+msgid "COMMANDs:"
+msgstr "命令:"
+
+#: parted/ui.c:1445
+#, c-format
+msgid "Using %s\n"
+msgstr "使用 %s\n"
+
+#: parted/ui.c:1519
+msgid "This command does not make sense in non-interactive mode.\n"
+msgstr ""
+
+#~ msgid "where necessary, prompts for user intervention"
+#~ msgstr "在必要時,提示使用者介入"
+
+#~ msgid "GNU Parted Version information:\n"
+#~ msgstr "GNU Parted 版本資訊:\n"
+
+#, 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 顯示整個分割區表。利用 'free' 引數來顯示可用空間的資訊,\n"
+#~ "否則如果指定了分割區號碼,就顯示更多關於分割區的詳細資訊。如果以引數 "
+#~ "'all' 來取代,\n"
+#~ "將會顯示所有裝置的分割區資訊。"
+
+#~ msgid "Attempt to read sectors %ld-%ld outside of partition on %s."
+#~ msgstr "試圖讀取 %3$s 上分割區之外的磁區 %1$ld-%2$ld。"
diff --git a/parted-1.8.7/scripts/data/abi/baseline_symbols.txt b/parted-1.8.7/scripts/data/abi/baseline_symbols.txt
new file mode 100644
index 0000000..16fe6f4
--- /dev/null
+++ b/parted-1.8.7/scripts/data/abi/baseline_symbols.txt
@@ -0,0 +1,452 @@
+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_clobber_exclude
+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_free
+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/parted-1.8.7/scripts/extract_symvers b/parted-1.8.7/scripts/extract_symvers
new file mode 100755
index 0000000..8a74db9
--- /dev/null
+++ b/parted-1.8.7/scripts/extract_symvers
@@ -0,0 +1,67 @@
+#!/bin/sh
+
+# Copyright (C) 2002, 2003 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 2, 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; see the file COPYING. If not, write to the Free
+# Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
+# USA.
+#
+# 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/parted-1.8.7/tests/Makefile.am b/parted-1.8.7/tests/Makefile.am
new file mode 100644
index 0000000..2948ae2
--- /dev/null
+++ b/parted-1.8.7/tests/Makefile.am
@@ -0,0 +1,10 @@
+TESTS = \
+ t0000-basic.sh \
+ t1000-mkpartfs.sh \
+ t2000-mkfs.sh
+
+TESTS_ENVIRONMENT = \
+ PATH="`pwd`/../parted$(PATH_SEPARATOR)$$PATH"
+
+EXTRA_DIST = \
+ $(TESTS) test-lib.sh
diff --git a/parted-1.8.7/tests/Makefile.in b/parted-1.8.7/tests/Makefile.in
new file mode 100644
index 0000000..fb154de
--- /dev/null
+++ b/parted-1.8.7/tests/Makefile.in
@@ -0,0 +1,595 @@
+# Makefile.in generated by automake 1.10 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006 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@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@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 = tests
+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/absolute-header.m4 \
+ $(top_srcdir)/m4/alloca.m4 $(top_srcdir)/m4/assert.m4 \
+ $(top_srcdir)/m4/atexit.m4 $(top_srcdir)/m4/calloc.m4 \
+ $(top_srcdir)/m4/close-stream.m4 $(top_srcdir)/m4/closeout.m4 \
+ $(top_srcdir)/m4/codeset.m4 $(top_srcdir)/m4/config-h.m4 \
+ $(top_srcdir)/m4/dirname.m4 $(top_srcdir)/m4/dos.m4 \
+ $(top_srcdir)/m4/double-slash-root.m4 \
+ $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exitfail.m4 \
+ $(top_srcdir)/m4/extensions.m4 $(top_srcdir)/m4/fpending.m4 \
+ $(top_srcdir)/m4/free.m4 $(top_srcdir)/m4/getopt.m4 \
+ $(top_srcdir)/m4/gettext.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/inline.m4 $(top_srcdir)/m4/inttypes-pri.m4 \
+ $(top_srcdir)/m4/inttypes.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/localcharset.m4 \
+ $(top_srcdir)/m4/long-options.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/mbrtowc.m4 $(top_srcdir)/m4/mbstate_t.m4 \
+ $(top_srcdir)/m4/memchr.m4 $(top_srcdir)/m4/memcmp.m4 \
+ $(top_srcdir)/m4/memcpy.m4 $(top_srcdir)/m4/memmove.m4 \
+ $(top_srcdir)/m4/memset.m4 $(top_srcdir)/m4/nls.m4 \
+ $(top_srcdir)/m4/po.m4 $(top_srcdir)/m4/progtest.m4 \
+ $(top_srcdir)/m4/quotearg.m4 $(top_srcdir)/m4/regex.m4 \
+ $(top_srcdir)/m4/rename.m4 $(top_srcdir)/m4/rpmatch.m4 \
+ $(top_srcdir)/m4/safe-read.m4 $(top_srcdir)/m4/safe-write.m4 \
+ $(top_srcdir)/m4/ssize_t.m4 $(top_srcdir)/m4/stdarg.m4 \
+ $(top_srcdir)/m4/stdbool.m4 $(top_srcdir)/m4/stdint.m4 \
+ $(top_srcdir)/m4/stdlib_h.m4 $(top_srcdir)/m4/strcspn.m4 \
+ $(top_srcdir)/m4/string_h.m4 $(top_srcdir)/m4/strndup.m4 \
+ $(top_srcdir)/m4/strnlen.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/strtol.m4 $(top_srcdir)/m4/unistd_h.m4 \
+ $(top_srcdir)/m4/utimbuf.m4 $(top_srcdir)/m4/utime.m4 \
+ $(top_srcdir)/m4/utimes-null.m4 $(top_srcdir)/m4/wchar.m4 \
+ $(top_srcdir)/m4/wctype.m4 $(top_srcdir)/m4/wint_t.m4 \
+ $(top_srcdir)/m4/xalloc.m4 $(top_srcdir)/m4/xstrndup.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 =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ABSOLUTE_INTTYPES_H = @ABSOLUTE_INTTYPES_H@
+ABSOLUTE_STDINT_H = @ABSOLUTE_STDINT_H@
+ABSOLUTE_STDLIB_H = @ABSOLUTE_STDLIB_H@
+ABSOLUTE_STRING_H = @ABSOLUTE_STRING_H@
+ABSOLUTE_UNISTD_H = @ABSOLUTE_UNISTD_H@
+ABSOLUTE_WCHAR_H = @ABSOLUTE_WCHAR_H@
+ABSOLUTE_WCTYPE_H = @ABSOLUTE_WCTYPE_H@
+ACLOCAL = @ACLOCAL@
+ALLOCA = @ALLOCA@
+ALLOCA_H = @ALLOCA_H@
+AMTAR = @AMTAR@
+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@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CXX = @CXX@
+CXXCPP = @CXXCPP@
+CXXDEPMODE = @CXXDEPMODE@
+CXXFLAGS = @CXXFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DL_LIBS = @DL_LIBS@
+DM_LIBS = @DM_LIBS@
+ECHO = @ECHO@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+F77 = @F77@
+FFLAGS = @FFLAGS@
+GETOPT_H = @GETOPT_H@
+GLIBC21 = @GLIBC21@
+GMSGFMT = @GMSGFMT@
+GMSGFMT_015 = @GMSGFMT_015@
+GNULIB_CHOWN = @GNULIB_CHOWN@
+GNULIB_DUP2 = @GNULIB_DUP2@
+GNULIB_FCHDIR = @GNULIB_FCHDIR@
+GNULIB_FTRUNCATE = @GNULIB_FTRUNCATE@
+GNULIB_GETCWD = @GNULIB_GETCWD@
+GNULIB_GETLOGIN_R = @GNULIB_GETLOGIN_R@
+GNULIB_GETSUBOPT = @GNULIB_GETSUBOPT@
+GNULIB_IMAXABS = @GNULIB_IMAXABS@
+GNULIB_IMAXDIV = @GNULIB_IMAXDIV@
+GNULIB_MBSCASECMP = @GNULIB_MBSCASECMP@
+GNULIB_MBSCASESTR = @GNULIB_MBSCASESTR@
+GNULIB_MBSCHR = @GNULIB_MBSCHR@
+GNULIB_MBSCSPN = @GNULIB_MBSCSPN@
+GNULIB_MBSLEN = @GNULIB_MBSLEN@
+GNULIB_MBSNCASECMP = @GNULIB_MBSNCASECMP@
+GNULIB_MBSPBRK = @GNULIB_MBSPBRK@
+GNULIB_MBSPCASECMP = @GNULIB_MBSPCASECMP@
+GNULIB_MBSRCHR = @GNULIB_MBSRCHR@
+GNULIB_MBSSEP = @GNULIB_MBSSEP@
+GNULIB_MBSSPN = @GNULIB_MBSSPN@
+GNULIB_MBSSTR = @GNULIB_MBSSTR@
+GNULIB_MBSTOK_R = @GNULIB_MBSTOK_R@
+GNULIB_MEMMEM = @GNULIB_MEMMEM@
+GNULIB_MEMPCPY = @GNULIB_MEMPCPY@
+GNULIB_MEMRCHR = @GNULIB_MEMRCHR@
+GNULIB_MKDTEMP = @GNULIB_MKDTEMP@
+GNULIB_MKSTEMP = @GNULIB_MKSTEMP@
+GNULIB_READLINK = @GNULIB_READLINK@
+GNULIB_SLEEP = @GNULIB_SLEEP@
+GNULIB_STPCPY = @GNULIB_STPCPY@
+GNULIB_STPNCPY = @GNULIB_STPNCPY@
+GNULIB_STRCASESTR = @GNULIB_STRCASESTR@
+GNULIB_STRCHRNUL = @GNULIB_STRCHRNUL@
+GNULIB_STRDUP = @GNULIB_STRDUP@
+GNULIB_STRNDUP = @GNULIB_STRNDUP@
+GNULIB_STRNLEN = @GNULIB_STRNLEN@
+GNULIB_STRPBRK = @GNULIB_STRPBRK@
+GNULIB_STRSEP = @GNULIB_STRSEP@
+GNULIB_STRTOIMAX = @GNULIB_STRTOIMAX@
+GNULIB_STRTOK_R = @GNULIB_STRTOK_R@
+GNULIB_STRTOUMAX = @GNULIB_STRTOUMAX@
+GREP = @GREP@
+HAVE_DECL_GETLOGIN_R = @HAVE_DECL_GETLOGIN_R@
+HAVE_DECL_IMAXABS = @HAVE_DECL_IMAXABS@
+HAVE_DECL_IMAXDIV = @HAVE_DECL_IMAXDIV@
+HAVE_DECL_MEMMEM = @HAVE_DECL_MEMMEM@
+HAVE_DECL_MEMRCHR = @HAVE_DECL_MEMRCHR@
+HAVE_DECL_STRDUP = @HAVE_DECL_STRDUP@
+HAVE_DECL_STRNCASECMP = @HAVE_DECL_STRNCASECMP@
+HAVE_DECL_STRNDUP = @HAVE_DECL_STRNDUP@
+HAVE_DECL_STRNLEN = @HAVE_DECL_STRNLEN@
+HAVE_DECL_STRTOIMAX = @HAVE_DECL_STRTOIMAX@
+HAVE_DECL_STRTOK_R = @HAVE_DECL_STRTOK_R@
+HAVE_DECL_STRTOUMAX = @HAVE_DECL_STRTOUMAX@
+HAVE_DUP2 = @HAVE_DUP2@
+HAVE_FTRUNCATE = @HAVE_FTRUNCATE@
+HAVE_GETSUBOPT = @HAVE_GETSUBOPT@
+HAVE_INTTYPES_H = @HAVE_INTTYPES_H@
+HAVE_ISWCNTRL = @HAVE_ISWCNTRL@
+HAVE_LONG_LONG_INT = @HAVE_LONG_LONG_INT@
+HAVE_MEMPCPY = @HAVE_MEMPCPY@
+HAVE_MKDTEMP = @HAVE_MKDTEMP@
+HAVE_READLINK = @HAVE_READLINK@
+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_STRCASECMP = @HAVE_STRCASECMP@
+HAVE_STRCASESTR = @HAVE_STRCASESTR@
+HAVE_STRCHRNUL = @HAVE_STRCHRNUL@
+HAVE_STRNDUP = @HAVE_STRNDUP@
+HAVE_STRPBRK = @HAVE_STRPBRK@
+HAVE_STRSEP = @HAVE_STRSEP@
+HAVE_SYS_BITYPES_H = @HAVE_SYS_BITYPES_H@
+HAVE_SYS_INTTYPES_H = @HAVE_SYS_INTTYPES_H@
+HAVE_SYS_TYPES_H = @HAVE_SYS_TYPES_H@
+HAVE_UNISTD_H = @HAVE_UNISTD_H@
+HAVE_UNSIGNED_LONG_LONG_INT = @HAVE_UNSIGNED_LONG_LONG_INT@
+HAVE_WCTYPE_H = @HAVE_WCTYPE_H@
+HAVE_WINT_T = @HAVE_WINT_T@
+HAVE__BOOL = @HAVE__BOOL@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLINCS = @INTLINCS@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+INTTYPES_H = @INTTYPES_H@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LN_S = @LN_S@
+LTALLOCA = @LTALLOCA@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+LT_AGE = @LT_AGE@
+LT_CURRENT = @LT_CURRENT@
+LT_RELEASE = @LT_RELEASE@
+LT_REVISION = @LT_REVISION@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+MSGFMT = @MSGFMT@
+MSGFMT_015 = @MSGFMT_015@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+OS = @OS@
+OS_LIBS = @OS_LIBS@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PARTEDLDFLAGS = @PARTEDLDFLAGS@
+PARTED_LIBS = @PARTED_LIBS@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+PKG_CONFIG = @PKG_CONFIG@
+POSUB = @POSUB@
+POW_LIB = @POW_LIB@
+PRIPTR_PREFIX = @PRIPTR_PREFIX@
+PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
+PTRDIFF_T_SUFFIX = @PTRDIFF_T_SUFFIX@
+RANLIB = @RANLIB@
+REISER_LIBS = @REISER_LIBS@
+REPLACE_CHOWN = @REPLACE_CHOWN@
+REPLACE_FCHDIR = @REPLACE_FCHDIR@
+REPLACE_GETCWD = @REPLACE_GETCWD@
+REPLACE_MKSTEMP = @REPLACE_MKSTEMP@
+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@
+STDBOOL_H = @STDBOOL_H@
+STDINT_H = @STDINT_H@
+STRIP = @STRIP@
+USE_NLS = @USE_NLS@
+UUID_LIBS = @UUID_LIBS@
+VERSION = @VERSION@
+WCHAR_H = @WCHAR_H@
+WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
+WCTYPE_H = @WCTYPE_H@
+WINT_T_SUFFIX = @WINT_T_SUFFIX@
+XGETTEXT = @XGETTEXT@
+XGETTEXT_015 = @XGETTEXT_015@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_CXX = @ac_ct_CXX@
+ac_ct_F77 = @ac_ct_F77@
+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@
+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@
+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_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+TESTS = \
+ t0000-basic.sh \
+ t1000-mkpartfs.sh \
+ t2000-mkfs.sh
+
+TESTS_ENVIRONMENT = \
+ PATH="`pwd`/../parted$(PATH_SEPARATOR)$$PATH"
+
+EXTRA_DIST = \
+ $(TESTS) test-lib.sh
+
+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 \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
+ 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
+
+mostlyclean-libtool:
+ -rm -f *.lo
+
+clean-libtool:
+ -rm -rf .libs _libs
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+check-TESTS: $(TESTS)
+ @failed=0; all=0; xfail=0; xpass=0; skip=0; ws='[ ]'; \
+ srcdir=$(srcdir); export srcdir; \
+ list=' $(TESTS) '; \
+ if test -n "$$list"; then \
+ for tst in $$list; do \
+ if test -f ./$$tst; then dir=./; \
+ elif test -f $$tst; then dir=; \
+ else dir="$(srcdir)/"; fi; \
+ if $(TESTS_ENVIRONMENT) $${dir}$$tst; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xpass=`expr $$xpass + 1`; \
+ failed=`expr $$failed + 1`; \
+ echo "XPASS: $$tst"; \
+ ;; \
+ *) \
+ echo "PASS: $$tst"; \
+ ;; \
+ esac; \
+ elif test $$? -ne 77; then \
+ all=`expr $$all + 1`; \
+ case " $(XFAIL_TESTS) " in \
+ *$$ws$$tst$$ws*) \
+ xfail=`expr $$xfail + 1`; \
+ echo "XFAIL: $$tst"; \
+ ;; \
+ *) \
+ failed=`expr $$failed + 1`; \
+ echo "FAIL: $$tst"; \
+ ;; \
+ esac; \
+ else \
+ skip=`expr $$skip + 1`; \
+ echo "SKIP: $$tst"; \
+ fi; \
+ done; \
+ if test "$$failed" -eq 0; then \
+ if test "$$xfail" -eq 0; then \
+ banner="All $$all tests passed"; \
+ else \
+ banner="All $$all tests behaved as expected ($$xfail expected failures)"; \
+ fi; \
+ else \
+ if test "$$xpass" -eq 0; then \
+ banner="$$failed of $$all tests failed"; \
+ else \
+ banner="$$failed of $$all tests did not behave as expected ($$xpass unexpected passes)"; \
+ fi; \
+ fi; \
+ dashes="$$banner"; \
+ skipped=""; \
+ if test "$$skip" -ne 0; then \
+ skipped="($$skip tests were not run)"; \
+ test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$skipped"; \
+ fi; \
+ report=""; \
+ if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
+ report="Please report to $(PACKAGE_BUGREPORT)"; \
+ test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
+ dashes="$$report"; \
+ fi; \
+ dashes=`echo "$$dashes" | sed s/./=/g`; \
+ echo "$$dashes"; \
+ echo "$$banner"; \
+ test -z "$$skipped" || echo "$$skipped"; \
+ test -z "$$report" || echo "$$report"; \
+ echo "$$dashes"; \
+ test "$$failed" -eq 0; \
+ else :; fi
+
+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 $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$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-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:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_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-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
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-dvi: install-dvi-am
+
+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
+
+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-TESTS 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/parted-1.8.7/tests/t0000-basic.sh b/parted-1.8.7/tests/t0000-basic.sh
new file mode 100755
index 0000000..6049e15
--- /dev/null
+++ b/parted-1.8.7/tests/t0000-basic.sh
Binary files differ
diff --git a/parted-1.8.7/tests/t1000-mkpartfs.sh b/parted-1.8.7/tests/t1000-mkpartfs.sh
new file mode 100755
index 0000000..37dc43a
--- /dev/null
+++ b/parted-1.8.7/tests/t1000-mkpartfs.sh
@@ -0,0 +1,69 @@
+#!/bin/sh
+
+# Copyright (C) 2007 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 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.
+
+test_description='Create some file systems using mkpartfs.'
+
+. $srcdir/test-lib.sh
+
+N=1M
+dev=loop-file
+test_expect_success \
+ 'create a file too small to hold a fat32 file system' \
+ 'dd if=/dev/zero of=$dev bs=$N count=1 2> /dev/null'
+
+test_expect_success \
+ 'label the test disk' \
+ 'parted -s $dev mklabel msdos > out 2>&1'
+test_expect_success 'expect no output' '$compare out /dev/null'
+
+# Expect parted's mkpartfs command to fail.
+test_expect_failure \
+ 'try/fail to create a file system in too small a space' \
+ 'parted -s $dev mkpartfs primary fat32 0 1 > out 2>&1'
+
+test_expect_success \
+ 'create expected output file' \
+ 'echo "Error: Partition too big/small for a fat32 file system." > exp'
+
+test_expect_success \
+ 'check for expected failure diagnostic' \
+ '$compare out exp'
+
+test_expect_success 'clean up, preparing for next test' 'rm $dev out'
+
+#====================================================================
+# Similar, but with a file that's large enough, so mkpartfs succeeds.
+N=40M
+
+test_expect_success \
+ 'create a file large enough to hold a fat32 file system' \
+ 'dd if=/dev/zero of=$dev bs=$N count=1 2> /dev/null'
+
+test_expect_success \
+ 'label the test disk' \
+ 'parted -s $dev mklabel msdos > out 2>&1'
+test_expect_success 'expect no output' '$compare out /dev/null'
+
+test_expect_success \
+ 'create an msdos file system' \
+ 'parted -s $dev mkpartfs primary fat32 1 40 > out 2>&1'
+
+test_expect_success 'expect no output' '$compare out /dev/null'
+
+test_done
diff --git a/parted-1.8.7/tests/t2000-mkfs.sh b/parted-1.8.7/tests/t2000-mkfs.sh
new file mode 100755
index 0000000..e47da8f
--- /dev/null
+++ b/parted-1.8.7/tests/t2000-mkfs.sh
@@ -0,0 +1,45 @@
+#!/bin/sh
+
+# Copyright (C) 2007 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 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.
+
+test_description='Create some file systems using mkfs.'
+
+. $srcdir/test-lib.sh
+
+N=40M
+dev=loop-file
+test_expect_success \
+ 'create a file large enough to hold a fat32 file system' \
+ 'dd if=/dev/zero of=$dev bs=$N count=1 2> /dev/null'
+
+test_expect_success \
+ 'label the test disk' \
+ 'parted -s $dev mklabel msdos > out 2>&1'
+test_expect_success 'expect no output' '$compare out /dev/null'
+
+test_expect_success \
+ 'create an partition' \
+ 'parted -s $dev mkpart primary 1 40 > out 2>&1'
+
+test_expect_success \
+ 'create an msdos file system' \
+ 'parted -s $dev mkfs 1 fat32 > out 2>&1'
+
+test_expect_success 'expect no output' '$compare out /dev/null'
+
+test_done
diff --git a/parted-1.8.7/tests/test-lib.sh b/parted-1.8.7/tests/test-lib.sh
new file mode 100644
index 0000000..d6804cf
--- /dev/null
+++ b/parted-1.8.7/tests/test-lib.sh
@@ -0,0 +1,238 @@
+#!/bin/sh
+# Derived from git's t/test-lib.sh.
+# Copyright (c) 2005 Junio C Hamano
+
+# For repeatability, reset the environment to known value.
+LANG=C
+LC_ALL=C
+TZ=UTC
+export LANG LC_ALL TZ
+
+# Protect ourselves from common misconfiguration to export
+# CDPATH into the environment
+unset CDPATH
+
+# Each test should start with something like this, after copyright notices:
+#
+# test_description='Description of this test...
+# This test checks if command xyzzy does the right thing...
+# '
+# . ./test-lib.sh
+
+error () {
+ echo "* error: $*"
+ trap - exit
+ exit 1
+}
+
+say () {
+ echo "* $*"
+}
+
+test "${test_description}" != "" ||
+error "Test script did not set test_description."
+
+# If $srcdir is not set, set it, if it's ".". Otherwise, fail.
+if test -a "$srcdir"; then
+ if test -f test-lib.sh; then
+ srcdir=.
+ else
+ error '$srcdir is not set; either set it, or run the test' \
+ 'from the source directory'
+ fi
+fi
+
+while test "$#" -ne 0
+do
+ case "$1" in
+ -d|--d|--de|--deb|--debu|--debug)
+ debug=t; shift ;;
+ -i|--i|--im|--imm|--imme|--immed|--immedi|--immedia|--immediat|--immediate)
+ immediate=t; shift ;;
+ -h|--h|--he|--hel|--help)
+ echo "$test_description"
+ exit 0 ;;
+ -v|--v|--ve|--ver|--verb|--verbo|--verbos|--verbose)
+ verbose=t; shift ;;
+ esac
+done
+
+exec 5>&1
+if test "$verbose" = "t"
+then
+ exec 4>&2 3>&1
+else
+ exec 4>/dev/null 3>/dev/null
+fi
+
+test_failure=0
+test_count=0
+
+trap 'echo >&5 "FATAL: Unexpected exit with code $?"; exit 1' exit
+
+# You are not expected to call test_ok_ and test_failure_ directly, use
+# the text_expect_* functions instead.
+
+test_ok_ () {
+ test_count=$(expr "$test_count" + 1)
+ say " ok $test_count: $@"
+}
+
+test_failure_ () {
+ test_count=$(expr "$test_count" + 1)
+ test_failure=$(expr "$test_failure" + 1);
+ say "FAIL $test_count: $1"
+ shift
+ echo "$@" | sed -e 's/^/ /'
+ test "$immediate" = "" || { trap - exit; exit 1; }
+}
+
+test_debug () {
+ test "$debug" = "" || eval "$1"
+}
+
+test_run_ () {
+ eval >&3 2>&4 "$1"
+ eval_ret="$?"
+ return 0
+}
+
+test_skip () {
+ this_test=$(expr "./$0" : '.*/\(t[0-9]*\)-[^/]*$')
+ this_test="$this_test.$(expr "$test_count" + 1)"
+ to_skip=
+ for skp in $SKIP_TESTS
+ do
+ case "$this_test" in
+ $skp)
+ to_skip=t
+ esac
+ done
+ case "$to_skip" in
+ t)
+ say >&3 "skipping test: $@"
+ test_count=$(expr "$test_count" + 1)
+ say "skip $test_count: $1"
+ : true
+ ;;
+ *)
+ false
+ ;;
+ esac
+}
+
+test_expect_failure () {
+ test "$#" = 2 ||
+ error "bug in the test script: not 2 parameters to test-expect-failure"
+ if ! test_skip "$@"
+ then
+ say >&3 "expecting failure: $2"
+ test_run_ "$2"
+ if [ "$?" = 0 -a "$eval_ret" != 0 -a "$eval_ret" -lt 129 ]
+ then
+ test_ok_ "$1"
+ else
+ test_failure_ "$@"
+ fi
+ fi
+ echo >&3 ""
+}
+
+test_expect_success () {
+ test "$#" = 2 ||
+ error "bug in the test script: not 2 parameters to test-expect-success"
+ if ! test_skip "$@"
+ then
+ say >&3 "expecting success: $2"
+ test_run_ "$2"
+ if [ "$?" = 0 -a "$eval_ret" = 0 ]
+ then
+ test_ok_ "$1"
+ else
+ test_failure_ "$@"
+ fi
+ fi
+ echo >&3 ""
+}
+
+test_expect_code () {
+ test "$#" = 3 ||
+ error "bug in the test script: not 3 parameters to test-expect-code"
+ if ! test_skip "$@"
+ then
+ say >&3 "expecting exit code $1: $3"
+ test_run_ "$3"
+ if [ "$?" = 0 -a "$eval_ret" = "$1" ]
+ then
+ test_ok_ "$2"
+ else
+ test_failure_ "$@"
+ fi
+ fi
+ echo >&3 ""
+}
+
+test_done () {
+ case "$test_failure" in
+ 0)
+ # We could:
+ # cd .. && rm -fr trash
+ # but that means we forbid any tests that use their own
+ # subdirectory from calling test_done without coming back
+ # to where they started from.
+ # The Makefile provided will clean this test area so
+ # we will leave things as they are.
+
+ say "passed all $test_count test(s)"
+ exit 0 ;;
+
+ *)
+ say "failed $test_failure among $test_count test(s)"
+ exit 1 ;;
+
+ esac
+}
+
+pwd_=`pwd`
+
+# Test the binaries we have just built. The tests are kept in
+# t/ subdirectory and are run in trash subdirectory.
+PATH=$pwd_/../parted:$PATH
+export PATH
+
+t0=`echo "$0"|sed 's,.*/,,'`.tmp; tmp_=$t0/$$
+trap 'st=$?; cd "$pwd_" && chmod -R u+rwx $t0 && rm -rf $t0 && exit $st' 0
+trap '(exit $?); exit $?' 1 2 13 15
+
+framework_failure=0
+mkdir -p $tmp_ || framework_failure=1
+cd $tmp_ || framework_failure=1
+test $framework_failure = 0 \
+ || error 'failed to create temporary directory'
+
+this_test=$(expr "./$0" : '.*/\(t[0-9]*\)-[^/]*$')
+for skp in $SKIP_TESTS
+do
+ to_skip=
+ for skp in $SKIP_TESTS
+ do
+ case "$this_test" in
+ $skp)
+ to_skip=t
+ esac
+ done
+ case "$to_skip" in
+ t)
+ say >&3 "skipping test $this_test altogether"
+ say "skip all tests in $this_test"
+ test_done
+ esac
+done
+
+if ( diff --version < /dev/null 2>&1 | grep GNU ) 2>&1 > /dev/null; then
+ compare='diff -u'
+elif ( cmp --version < /dev/null 2>&1 | grep GNU ) 2>&1 > /dev/null; then
+ compare='cmp -s'
+else
+ compare=cmp
+fi
diff --git a/parted.patches/parted-50.description b/parted.patches/parted-50.description
new file mode 100644
index 0000000..0b215a5
--- /dev/null
+++ b/parted.patches/parted-50.description
@@ -0,0 +1 @@
+Remove unused workaround for 64-bit PGC compiler that's causing a build error for us.
diff --git a/parted.patches/parted-50.patch b/parted.patches/parted-50.patch
new file mode 100644
index 0000000..ff5e90f
--- /dev/null
+++ b/parted.patches/parted-50.patch
@@ -0,0 +1,13 @@
+--- lib/regex_internal.h 2007-02-14 16:16:55.000000000 -0800
++++ lib/regex_internal.h 2014-04-30 18:34:31.110773635 -0700
+@@ -182,10 +182,6 @@
+ # if BITSET_WORD_BITS <= SBC_MAX
+ # error "Invalid SBC_MAX"
+ # endif
+-#elif BITSET_WORD_MAX == (0xffffffff + 2) * 0xffffffff
+-/* Work around a bug in 64-bit PGC (before version 6.1-2), where the
+- preprocessor mishandles large unsigned values as if they were signed. */
+-# define BITSET_WORD_BITS 64
+ #else
+ # error "Add case for new bitset_word_t size"
+ #endif
diff --git a/parted.patches/parted-51.description b/parted.patches/parted-51.description
new file mode 100644
index 0000000..ae36216
--- /dev/null
+++ b/parted.patches/parted-51.description
@@ -0,0 +1 @@
+Remove inline keyword from function prototype. Function inlined in definition.
diff --git a/parted.patches/parted-51.patch b/parted.patches/parted-51.patch
new file mode 100644
index 0000000..c44823c
--- /dev/null
+++ b/parted.patches/parted-51.patch
@@ -0,0 +1,15 @@
+--- include/parted/natmath.h 2007-04-18 14:12:10.000000000 -0700
++++ include/parted/natmath.h 2014-04-30 18:37:22.487991387 -0700
+@@ -87,10 +87,10 @@
+ extern const PedAlignment* ped_alignment_any;
+ extern const PedAlignment* ped_alignment_none;
+
+-extern inline PedSector
++extern PedSector
+ ped_div_round_up (PedSector numerator, PedSector divisor);
+
+-extern inline PedSector
++extern PedSector
+ ped_div_round_to_nearest (PedSector numerator, PedSector divisor);
+
+ #endif /* PED_NATMATH_H_INCLUDED */
diff --git a/parted.patches/parted-52.description b/parted.patches/parted-52.description
new file mode 100644
index 0000000..ee0bf70
--- /dev/null
+++ b/parted.patches/parted-52.description
@@ -0,0 +1 @@
+Allow FAT fs images without MBRs
diff --git a/parted.patches/parted-52.patch b/parted.patches/parted-52.patch
new file mode 100644
index 0000000..f1d4b6a
--- /dev/null
+++ b/parted.patches/parted-52.patch
@@ -0,0 +1,16 @@
+--- libparted/labels/dos.c 2014-11-13 14:23:10.147494213 -0800
++++ libparted/labels/dos.c 2014-11-13 14:28:54.262031054 -0800
+@@ -173,10 +173,12 @@ msdos_probe (const PedDevice *dev)
+ * Loader (SBML) signature indicates a partition table, not a file
+ * system.
+ */
+- if ((!strncmp (part_table.boot_code + 0x36, "FAT", 3)
++ /* check below commented out to allow FAT fs images without a MBR */
++/* if ((!strncmp (part_table.boot_code + 0x36, "FAT", 3)
+ && strncmp (part_table.boot_code + 0x40, "SBML", 4) != 0)
+ || !strncmp (part_table.boot_code + 0x52, "FAT", 3))
+ return 0;
++*/
+
+ /* If this is a GPT disk, fail here */
+ for (i = 0; i < 4; i++) {
diff --git a/parted.patches/parted-53.description b/parted.patches/parted-53.description
new file mode 100644
index 0000000..2d86718
--- /dev/null
+++ b/parted.patches/parted-53.description
@@ -0,0 +1 @@
+O_DIRECT mode unsupported in Sapphire
diff --git a/parted.patches/parted-53.patch b/parted.patches/parted-53.patch
new file mode 100644
index 0000000..0385e2b
--- /dev/null
+++ b/parted.patches/parted-53.patch
@@ -0,0 +1,11 @@
+--- libparted/arch/linux.c 2014-11-13 14:23:10.147494213 -0800
++++ libparted/arch/linux.c 2014-11-13 15:18:09.673789395 -0800
+@@ -65,6 +65,8 @@
+ #define HDIO_GETGEO 0x0301 /* get device geometry */
+ #define HDIO_GET_IDENTITY 0x030d /* get IDE identification info */
+
++/* O_DIRECT mode not supported in Sapphire */
++#undef O_DIRECT
+ #if defined(O_DIRECT) && (!defined(__s390__) || !defined(__s390x__))
+ #define RD_MODE (O_RDONLY | O_DIRECT)
+ #define WR_MODE (O_WRONLY | O_DIRECT)
diff --git a/parted.tar.gz b/parted.tar.gz
new file mode 100644
index 0000000..8bea1e0
--- /dev/null
+++ b/parted.tar.gz
Binary files differ
diff --git a/parted.url b/parted.url
new file mode 100644
index 0000000..fe8720b
--- /dev/null
+++ b/parted.url
@@ -0,0 +1 @@
+http://ftp.gnu.org/pub/gnu/parted/parted-1.8.7.tar.gz
diff --git a/parted.version b/parted.version
new file mode 100644
index 0000000..88d3ee7
--- /dev/null
+++ b/parted.version
@@ -0,0 +1 @@
+1.8.7