summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Schlemmer <azarah@gentoo.org>2002-01-28 18:27:13 +0000
committerMartin Schlemmer <azarah@gentoo.org>2002-01-28 18:27:13 +0000
commit2a65ddbf8116dc2b9afb9cd62f84f5943639283a (patch)
tree822a7b5f5bf6457cefe45942df9602a2b366db08 /sys-apps/parted
parentversion upgrade and fix to bug #262 (diff)
downloadgentoo-2-2a65ddbf8116dc2b9afb9cd62f84f5943639283a.tar.gz
gentoo-2-2a65ddbf8116dc2b9afb9cd62f84f5943639283a.tar.bz2
gentoo-2-2a65ddbf8116dc2b9afb9cd62f84f5943639283a.zip
new version; removed older
Diffstat (limited to 'sys-apps/parted')
-rw-r--r--sys-apps/parted/files/digest-parted-1.4.141
-rw-r--r--sys-apps/parted/files/digest-parted-1.4.14-r11
-rw-r--r--sys-apps/parted/files/digest-parted-1.4.14-r21
-rw-r--r--sys-apps/parted/files/digest-parted-1.4.171
-rw-r--r--sys-apps/parted/files/digest-parted-1.4.241
-rw-r--r--sys-apps/parted/files/parted-1.4.14-r1-python-gentoo.diff2336
-rw-r--r--sys-apps/parted/files/parted-1.4.14-r2-gentoo.diff2336
-rw-r--r--sys-apps/parted/files/parted-1.4.17-gentoo.diff13318
-rw-r--r--sys-apps/parted/parted-1.4.14-r1.ebuild51
-rw-r--r--sys-apps/parted/parted-1.4.14-r2.ebuild63
-rw-r--r--sys-apps/parted/parted-1.4.14.ebuild29
-rw-r--r--sys-apps/parted/parted-1.4.17.ebuild68
-rw-r--r--sys-apps/parted/parted-1.4.24.ebuild53
13 files changed, 54 insertions, 18205 deletions
diff --git a/sys-apps/parted/files/digest-parted-1.4.14 b/sys-apps/parted/files/digest-parted-1.4.14
deleted file mode 100644
index 626858ba20e9..000000000000
--- a/sys-apps/parted/files/digest-parted-1.4.14
+++ /dev/null
@@ -1 +0,0 @@
-MD5 d8380734aca46a3bb32da867800d01f9 parted-1.4.14.tar.gz 659456
diff --git a/sys-apps/parted/files/digest-parted-1.4.14-r1 b/sys-apps/parted/files/digest-parted-1.4.14-r1
deleted file mode 100644
index 626858ba20e9..000000000000
--- a/sys-apps/parted/files/digest-parted-1.4.14-r1
+++ /dev/null
@@ -1 +0,0 @@
-MD5 d8380734aca46a3bb32da867800d01f9 parted-1.4.14.tar.gz 659456
diff --git a/sys-apps/parted/files/digest-parted-1.4.14-r2 b/sys-apps/parted/files/digest-parted-1.4.14-r2
deleted file mode 100644
index 626858ba20e9..000000000000
--- a/sys-apps/parted/files/digest-parted-1.4.14-r2
+++ /dev/null
@@ -1 +0,0 @@
-MD5 d8380734aca46a3bb32da867800d01f9 parted-1.4.14.tar.gz 659456
diff --git a/sys-apps/parted/files/digest-parted-1.4.17 b/sys-apps/parted/files/digest-parted-1.4.17
deleted file mode 100644
index 4b081d5f5a60..000000000000
--- a/sys-apps/parted/files/digest-parted-1.4.17
+++ /dev/null
@@ -1 +0,0 @@
-MD5 ec35196a50d7d2e5052a986dd1ff149d parted-1.4.17.tar.gz 688128
diff --git a/sys-apps/parted/files/digest-parted-1.4.24 b/sys-apps/parted/files/digest-parted-1.4.24
new file mode 100644
index 000000000000..5407a482fb78
--- /dev/null
+++ b/sys-apps/parted/files/digest-parted-1.4.24
@@ -0,0 +1 @@
+MD5 1a0667bb4f0f167bcfd46bb1b72b8bee parted-1.4.24.tar.gz 880640
diff --git a/sys-apps/parted/files/parted-1.4.14-r1-python-gentoo.diff b/sys-apps/parted/files/parted-1.4.14-r1-python-gentoo.diff
deleted file mode 100644
index 068f351fb0f7..000000000000
--- a/sys-apps/parted/files/parted-1.4.14-r1-python-gentoo.diff
+++ /dev/null
@@ -1,2336 +0,0 @@
-diff -urP parted-1.4.14/Makefile.am parted-1.4.14-python/Makefile.am
---- parted-1.4.14/Makefile.am Sat Apr 7 18:04:37 2001
-+++ parted-1.4.14-python/Makefile.am Tue Jun 5 16:59:14 2001
-@@ -1,4 +1,4 @@
--SUBDIRS = intl po libparted parted include doc debug
-+SUBDIRS = intl po libparted parted include doc debug @PYTHON_SUBDIR@
-
- EXTRA_DIST = ABOUT-NLS \
- AUTHORS \
-diff -urP parted-1.4.14/configure.in parted-1.4.14-python/configure.in
---- parted-1.4.14/configure.in Wed May 30 06:42:20 2001
-+++ parted-1.4.14-python/configure.in Tue Jun 5 17:44:02 2001
-@@ -65,6 +65,12 @@
- fi
- AC_SUBST(PARTED_LDFLAGS)
-
-+AC_ARG_WITH(python,
-+ [ --with-python build python module],
-+ with_python=$withval,
-+ with_python=no
-+)
-+
- dnl make libc threadsafe (not required for us, but useful other users of
- dnl libparted)
- CFLAGS="$CFLAGS -D_REENTRANT"
-@@ -174,6 +180,33 @@
- LIBS="$OLD_LIBS"
- fi
-
-+dnl Check for python
-+if test x$with_python = xyes; then
-+ AC_PATH_PROG(PYTHON, python python2.1 python2.0 python1.6 python1.5, no)
-+ if test x$PYTHON = xno; then
-+ AC_MSG_ERROR(
-+Python version 1.5 or higher could not be found which is required for
-+the --with-python. Either disable readline support with
-+--without-python or downloaded and install it from:
-+ http://www.python.org
-+ )
-+ fi
-+ changequote(<<,>>)dnl
-+ PYTHON_VERSION=`${PYTHON} -c "import sys; print sys.version[:3]"`
-+ PYTHON_PREFIX=`${PYTHON} -c "import sys; print sys.prefix"`
-+ PYTHON_EXEC_PREFIX=`${PYTHON} -c "import sys; print sys.exec_prefix"`
-+ changequote([,])dnl
-+ PYTHON_INCLUDES="-I${PYTHON_PREFIX}/include/python${PYTHON_VERSION} -I${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/config"
-+ pydynmoduledir="${PYTHON_EXEC_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"
-+ PYTHON_SUBDIR=python
-+fi
-+AC_SUBST(PYTHON_PREFIX)
-+AC_SUBST(PYTHON_EXEC_PREFIX)
-+AC_SUBST(PYTHON_VERSION)
-+AC_SUBST(PYTHON_INCLUDES)
-+AC_SUBST(PYTHON_SUBDIR)
-+AC_SUBST(pydynmoduledir)
-+
- AC_SUBST(PARTED_LIBS)
-
- dnl One day, gettext might support libtool...
-@@ -256,7 +289,7 @@
- LIBS="$OLD_LIBS"
- fi
-
--CFLAGS="$CFLAGS -W -Wall -Wno-unused -Wno-switch -Werror"
-+CFLAGS="$CFLAGS -W -Wall -Wno-unused -Wno-switch"
-
- AC_OUTPUT([
- Makefile
-@@ -271,6 +304,7 @@
- libparted/fs_reiserfs/Makefile
- libparted/fs_ufs/Makefile
- parted/Makefile
-+python/Makefile
- intl/Makefile
- doc/Makefile
- debug/Makefile
-diff -urP parted-1.4.14/python/Makefile.am parted-1.4.14-python/python/Makefile.am
---- parted-1.4.14/python/Makefile.am Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14-python/python/Makefile.am Tue Jun 5 15:52:16 2001
-@@ -0,0 +1,29 @@
-+AUTOMAKE_OPTIONS = 1.4 foreign
-+
-+partedincludedir = -I$(top_srcdir)/include
-+INCLUDES = $(partedincludedir) @PYTHON_INCLUDES@ @INTLINCS@
-+
-+noinst_LTLIBRARIES = libpartedmodule.la
-+libpartedmodule_la_SOURCES = partedmodule.c \
-+ pydevice.c \
-+ pydisk.c \
-+ pygeometry.c \
-+ pyexception.c \
-+ pyfilesystem.c \
-+ pyconstraint.c \
-+ partedmodule.h \
-+ pyconstraint.h \
-+ pydevice.h \
-+ pydisk.h \
-+ pyexception.h \
-+ pyfilesystem.h \
-+ pygeometry.h
-+
-+pythondir = $(pydynmoduledir)
-+python_PROGRAMS = partedmodule.so
-+partedmodule_so_SOURCES =
-+partedmodule_so_LDFLAGS = $(top_builddir)/libparted/libparted.la \
-+ -shared -Wl,-soname,partedmodule.so
-+
-+partedmodule.so: $(libpartedmodule_la_OBJECTS)
-+ $(LINK) -g -o $@ $^ $(partedmodule_so_LDFLAGS);
-diff -urP parted-1.4.14/python/partedmodule.c parted-1.4.14-python/python/partedmodule.c
---- parted-1.4.14/python/partedmodule.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14-python/python/partedmodule.c Thu Apr 26 15:12:34 2001
-@@ -0,0 +1,334 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <Python.h>
-+
-+#include "parted/parted.h"
-+
-+#include "partedmodule.h"
-+#include "pydevice.h"
-+#include "pydisk.h"
-+#include "pyexception.h"
-+#include "pygeometry.h"
-+#include "pyfilesystem.h"
-+#include "pyconstraint.h"
-+
-+/* global error object */
-+PyObject *PyPartedError;
-+
-+/* static global variables */
-+static PyObject *PyExceptionHandler;
-+static char *py_exception_string = NULL;
-+
-+/* common functions */
-+int
-+py_ped_exception_string_check (void)
-+{
-+ return (py_exception_string != NULL);
-+}
-+
-+
-+void
-+py_ped_exception_string_clear (void)
-+{
-+ if (py_exception_string != NULL) {
-+ free (py_exception_string);
-+ py_exception_string = NULL;
-+ }
-+}
-+
-+void
-+py_ped_set_error_from_ped_exception (void)
-+{
-+ if (py_exception_string != NULL) {
-+ PyErr_SetString(PyPartedError, py_exception_string);
-+ py_ped_exception_string_clear ();
-+ return;
-+ }
-+ PyErr_SetString(PyPartedError, "unknown error occured");
-+}
-+
-+/* toplevel implementation */
-+
-+static PedExceptionOption
-+py_exception_handler (PedException* ex)
-+{
-+ PyObject * result, * args = NULL;
-+ long rc;
-+ char * type;
-+ char * buf;
-+ int len;
-+
-+ if (py_exception_string != NULL)
-+ free (py_exception_string);
-+
-+ type = ped_exception_get_type_string (ex->type);
-+ len = strlen (type) + strlen (ex->message) + 3;
-+ buf = malloc (len);
-+ snprintf (buf, len, "%s: %s", type, ex->message);
-+ py_exception_string = buf;
-+
-+ if (PyExceptionHandler == NULL) {
-+ return PED_EXCEPTION_UNHANDLED;
-+ }
-+
-+ args = Py_BuildValue("(N)", (PyObject *) py_ped_exception_obj_new (ex));
-+
-+ result = PyEval_CallObject(PyExceptionHandler, args);
-+ Py_XDECREF(args);
-+
-+ if (result == NULL) {
-+ PyErr_Print();
-+ PyErr_Clear();
-+ return PED_EXCEPTION_UNHANDLED;
-+ }
-+
-+ if (!PyInt_Check (result)) {
-+ fprintf (stderr,
-+ "ERROR: python exception handler did not "
-+ "return expected int value\n");
-+ return PED_EXCEPTION_UNHANDLED;
-+ }
-+
-+ rc = PyInt_AsLong (result);
-+ Py_DECREF (result);
-+ return (PedExceptionOption) rc;
-+}
-+
-+static PyObject *
-+py_ped_exception_set_handler (PyObject * self, PyObject * args)
-+{
-+ PyObject *cb;
-+
-+ /* if we already have a callback, releae it */
-+ if (PyExceptionHandler != NULL) {
-+ Py_DECREF (PyExceptionHandler);
-+ PyExceptionHandler = NULL;
-+ }
-+
-+ if (!PyArg_ParseTuple(args, "O", &cb))
-+ return NULL;
-+
-+ if (!PyCallable_Check (cb)) {
-+ PyErr_SetString(PyExc_TypeError, "parameter must be callable");
-+ return NULL;
-+ }
-+ Py_INCREF (cb);
-+ PyExceptionHandler = cb;
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_device_get (PyObject * self, PyObject * args)
-+{
-+ PyPedDevice *d;
-+ PedDevice *dev;
-+ char *path;
-+
-+ if (!PyArg_ParseTuple(args, "s", &path))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if ((dev = ped_device_get (path)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ d = (PyPedDevice *) PyObject_NEW(PyObject, &PyPedDeviceType);
-+ d->dev = dev;
-+ return (PyObject *) d;
-+}
-+
-+static PyObject *
-+py_ped_file_system_type_get (PyObject * self, PyObject * args)
-+{
-+ char *type;
-+ PedFileSystemType *fst;
-+
-+ if (!PyArg_ParseTuple(args, "s", &type)) {
-+ return NULL;
-+ }
-+
-+ if ((fst = ped_file_system_type_get (type)) == NULL) {
-+ PyErr_SetString(PyPartedError, "unknown file system type");
-+ return NULL;
-+ }
-+
-+ return (PyObject *) py_ped_file_system_type_obj_new (fst);
-+}
-+
-+static PyObject *
-+py_ped_file_system_type_get_next (PyObject * self, PyObject * args)
-+{
-+ PyPedFileSystemTypeObj *pyfst = NULL;
-+ PedFileSystemType *fst;
-+
-+ if (!PyArg_ParseTuple(args, "|O!", &PyPedFileSystemTypeType, &pyfst)) {
-+ PyErr_SetString(PyExc_TypeError,
-+ "optional parameter must be a "
-+ "PedFileSystemType");
-+ return NULL;
-+ }
-+
-+ fst = ped_file_system_type_get_next (pyfst ? pyfst->fs_type : NULL);
-+ if (fst)
-+ return (PyObject *) py_ped_file_system_type_obj_new (fst);
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_partition_flag_next (PyObject *obj, PyObject * args)
-+{
-+ int flag, next;
-+
-+ if (!PyArg_ParseTuple(args, "i", &flag))
-+ return NULL;
-+
-+ next = ped_partition_flag_next (flag);
-+
-+ return PyInt_FromLong (next);
-+}
-+
-+static PyObject *
-+py_ped_partition_flag_get_by_name (PyObject *obj, PyObject * args)
-+{
-+ char *name;
-+ int flag;
-+
-+ if (!PyArg_ParseTuple(args, "s", &name))
-+ return NULL;
-+
-+ flag = ped_partition_flag_get_by_name (name);
-+
-+ return PyInt_FromLong (flag);
-+}
-+
-+static PyObject *
-+py_ped_partition_flag_get_name (PyObject *obj, PyObject * args)
-+{
-+ int flag;
-+ const char *name;
-+
-+ if (!PyArg_ParseTuple(args, "i", &flag))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ name = ped_partition_flag_get_name (flag);
-+ if (py_ped_exception_string_check ()) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return PyString_FromString (name);
-+}
-+
-+static struct PyMethodDef PyPedModuleMethods[] = {
-+ { "device_get",
-+ (PyCFunction) py_ped_device_get, METH_VARARGS, NULL },
-+ { "exception_set_handler",
-+ (PyCFunction) py_ped_exception_set_handler,
-+ METH_VARARGS, NULL },
-+ { "file_system_type_get",
-+ (PyCFunction) py_ped_file_system_type_get,
-+ METH_VARARGS, NULL },
-+ { "file_system_type_get_next",
-+ (PyCFunction) py_ped_file_system_type_get_next,
-+ METH_VARARGS, NULL },
-+ { "partition_flag_next",
-+ (PyCFunction) py_ped_partition_flag_next,
-+ METH_VARARGS, NULL },
-+ { "partition_flag_get_by_name",
-+ (PyCFunction) py_ped_partition_flag_get_by_name,
-+ METH_VARARGS, NULL },
-+ { "partition_flag_get_name",
-+ (PyCFunction) py_ped_partition_flag_get_name,
-+ METH_VARARGS, NULL },
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+void initparted(void) {
-+ PyObject *m, *d, *o;
-+
-+ if (!ped_init ())
-+ Py_FatalError("couldn't initialized parted");
-+
-+ m = Py_InitModule("parted", PyPedModuleMethods);
-+ d = PyModule_GetDict(m);
-+
-+ /* enum registration */
-+#define REGISTER_ENUM(val) \
-+ PyDict_SetItemString(d, #val, o=PyInt_FromLong(PED_ ## val)); \
-+ Py_DECREF(o);
-+
-+ REGISTER_ENUM(DEVICE_UNKNOWN);
-+ REGISTER_ENUM(DEVICE_SCSI);
-+ REGISTER_ENUM(DEVICE_IDE);
-+ REGISTER_ENUM(DEVICE_DAC960);
-+ REGISTER_ENUM(DEVICE_CPQARRAY);
-+
-+ REGISTER_ENUM(PARTITION_PRIMARY);
-+ REGISTER_ENUM(PARTITION_LOGICAL);
-+ REGISTER_ENUM(PARTITION_EXTENDED);
-+ REGISTER_ENUM(PARTITION_FREESPACE);
-+ REGISTER_ENUM(PARTITION_METADATA);
-+
-+ REGISTER_ENUM(PARTITION_BOOT);
-+ REGISTER_ENUM(PARTITION_ROOT);
-+ REGISTER_ENUM(PARTITION_SWAP);
-+ REGISTER_ENUM(PARTITION_HIDDEN);
-+ REGISTER_ENUM(PARTITION_RAID);
-+ REGISTER_ENUM(PARTITION_LVM);
-+ REGISTER_ENUM(PARTITION_LBA);
-+
-+ REGISTER_ENUM(PARTITION_FIRST_FLAG);
-+ REGISTER_ENUM(PARTITION_LAST_FLAG);
-+
-+ REGISTER_ENUM(DISK_TYPE_EXTENDED);
-+ REGISTER_ENUM(DISK_TYPE_PARTITION_NAME);
-+
-+ REGISTER_ENUM(EXCEPTION_INFORMATION);
-+ REGISTER_ENUM(EXCEPTION_WARNING);
-+ REGISTER_ENUM(EXCEPTION_ERROR);
-+ REGISTER_ENUM(EXCEPTION_FATAL);
-+ REGISTER_ENUM(EXCEPTION_BUG);
-+ REGISTER_ENUM(EXCEPTION_NO_FEATURE);
-+
-+ REGISTER_ENUM(EXCEPTION_UNHANDLED);
-+ REGISTER_ENUM(EXCEPTION_YES);
-+ REGISTER_ENUM(EXCEPTION_NO);
-+ REGISTER_ENUM(EXCEPTION_OK);
-+ REGISTER_ENUM(EXCEPTION_RETRY);
-+ REGISTER_ENUM(EXCEPTION_IGNORE);
-+ REGISTER_ENUM(EXCEPTION_CANCEL);
-+
-+ REGISTER_ENUM(EXCEPTION_OK_CANCEL);
-+ REGISTER_ENUM(EXCEPTION_YES_NO);
-+ REGISTER_ENUM(EXCEPTION_YES_NO_CANCEL);
-+ REGISTER_ENUM(EXCEPTION_IGNORE_CANCEL);
-+ REGISTER_ENUM(EXCEPTION_RETRY_CANCEL);
-+ REGISTER_ENUM(EXCEPTION_RETRY_IGNORE_CANCEL);
-+ /* end enum registration */
-+
-+ /* register the exception handler marhaller function */
-+ ped_exception_set_handler (py_exception_handler);
-+
-+ /* set up our exception class */
-+ PyPartedError = PyErr_NewException("parted.error", NULL, NULL);
-+ PyDict_SetItemString(d, "error", PyPartedError);
-+ Py_DECREF(PyPartedError);
-+}
-diff -urP parted-1.4.14/python/partedmodule.h parted-1.4.14-python/python/partedmodule.h
---- parted-1.4.14/python/partedmodule.h Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14-python/python/partedmodule.h Thu Dec 7 09:45:26 2000
-@@ -0,0 +1,25 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#ifndef PARTEDMODULE_H_INCLUDED
-+#define PARTEDMODULE_H_INCLUDED
-+
-+#include <Python.h>
-+
-+extern PyObject *PyPartedError;
-+int py_ped_exception_string_check (void);
-+void py_ped_exception_string_clear (void);
-+extern void py_ped_set_error_from_ped_exception (void);
-+
-+#endif /* PARTEDMODULE_H_INCLUDED */
-diff -urP parted-1.4.14/python/pyconstraint.c parted-1.4.14-python/python/pyconstraint.c
---- parted-1.4.14/python/pyconstraint.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14-python/python/pyconstraint.c Fri Apr 27 15:03:38 2001
-@@ -0,0 +1,109 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+*/
-+
-+#include "partedmodule.h"
-+#include "pygeometry.h"
-+#include "pyconstraint.h"
-+
-+static void py_ped_constraint_dealloc (PyPedConstraint * c);
-+static PyObject * py_ped_constraint_getattr (PyPedConstraint * c, char * name);
-+
-+static char PyPedConstraintType__doc__[] = "This is the PartEd constraint "
-+ "object";
-+PyTypeObject PyPedConstraintType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedConstraint", /* tp_name */
-+ sizeof(PyPedConstraint), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_constraint_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_constraint_getattr, /* tp_getattr */
-+ 0, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /* tp_hash */
-+ 0, /* tp_call */
-+ 0, /* tp_str */
-+ 0, /* tp_getattro */
-+ 0, /* tp_setattro */
-+ 0, /* tp_as_buffer */
-+ 0L, /* tp_flags */
-+ PyPedConstraintType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+static PyObject * py_ped_constraint_duplicate (PyPedConstraint * c,
-+ PyObject * args);
-+
-+static struct PyMethodDef PyPedConstraintMethods[] = {
-+ { "duplicate",
-+ (PyCFunction) py_ped_constraint_duplicate,
-+ METH_VARARGS, NULL },
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+static void
-+py_ped_constraint_dealloc (PyPedConstraint * c)
-+{
-+ if (!c->borrowed)
-+ ped_constraint_destroy (c->constraint);
-+ Py_XDECREF (c->disk);
-+ PyMem_DEL(c);
-+}
-+
-+static PyObject *
-+py_ped_constraint_duplicate (PyPedConstraint * c, PyObject * args)
-+{
-+ PedConstraint *cst;
-+
-+ cst = ped_constraint_duplicate (c->constraint);
-+ return (PyObject *) py_ped_constraint_obj_new (cst, c->disk, 0);
-+}
-+
-+static PyObject *
-+py_ped_constraint_getattr (PyPedConstraint * c, char * name)
-+{
-+ if (!strcmp (name, "start_range"))
-+ return (PyObject *)
-+ py_ped_geometry_obj_new (c->constraint->start_range,
-+ c->disk, 1);
-+ if (!strcmp (name, "end_range"))
-+ return (PyObject *)
-+ py_ped_geometry_obj_new (c->constraint->end_range,
-+ c->disk, 1);
-+ if (!strcmp (name, "min_size"))
-+ return (PyObject *)
-+ PyLong_FromLongLong (c->constraint->min_size);
-+
-+ return Py_FindMethod (PyPedConstraintMethods, (PyObject *) c, name);
-+}
-+
-+PyPedConstraint *
-+py_ped_constraint_obj_new (PedConstraint *c, PyPedDisk *disk, int borrowed)
-+{
-+ PyPedConstraint *con;
-+
-+ con = (PyPedConstraint *) PyObject_NEW(PyObject, &PyPedConstraintType);
-+ con->constraint = c;
-+ con->borrowed = borrowed;
-+ con->disk = disk;
-+ Py_INCREF (disk);
-+
-+ return con;
-+}
-diff -urP parted-1.4.14/python/pyconstraint.h parted-1.4.14-python/python/pyconstraint.h
---- parted-1.4.14/python/pyconstraint.h Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14-python/python/pyconstraint.h Thu Dec 7 17:55:09 2000
-@@ -0,0 +1,38 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+*/
-+
-+#ifndef PYCONSTRAINT_H_INCLUDED
-+#define PYCONSTRAINT_H_INCLUDED
-+
-+#include <Python.h>
-+#include "parted/constraint.h"
-+#include "pydisk.h"
-+
-+typedef struct _PyPedConstraint PyPedConstraint;
-+
-+struct _PyPedConstraint {
-+ PyObject_HEAD;
-+ PedConstraint *constraint;
-+ PyPedDisk *disk;
-+ int borrowed;
-+};
-+
-+extern PyTypeObject PyPedConstraintType;
-+
-+extern PyPedConstraint * py_ped_constraint_obj_new (PedConstraint *c,
-+ PyPedDisk *part,
-+ int borrowed);
-+
-+#endif /* PYCONSTRAINT_H_INCLUDED */
-diff -urP parted-1.4.14/python/pydevice.c parted-1.4.14-python/python/pydevice.c
---- parted-1.4.14/python/pydevice.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14-python/python/pydevice.c Thu Dec 7 09:45:26 2000
-@@ -0,0 +1,152 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+#include "partedmodule.h"
-+#include "pydevice.h"
-+#include "pydisk.h"
-+
-+static void py_ped_device_dealloc (PyPedDevice * s);
-+static PyObject * py_ped_device_getattr (PyPedDevice * s, char * name);
-+
-+static char PyPedDeviceType__doc__[] = "This is the PartEd device object";
-+PyTypeObject PyPedDeviceType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedDevice", /* tp_name */
-+ sizeof(PyPedDevice), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_device_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_device_getattr, /* tp_getattr */
-+ 0, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /* tp_hash */
-+ 0, /* tp_call */
-+ 0, /* tp_str */
-+ 0, /* tp_getattro */
-+ 0, /* tp_setattro */
-+ 0, /* tp_as_buffer */
-+ 0L, /* tp_flags */
-+ PyPedDeviceType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+static PyObject * py_ped_device_open (PyPedDevice * s, PyObject * args);
-+static PyObject * py_ped_device_close (PyPedDevice * s, PyObject * args);
-+static PyObject * py_ped_device_sync (PyPedDevice * s, PyObject * args);
-+static PyObject * py_ped_disk_open (PyPedDevice * s, PyObject * args);
-+
-+static struct PyMethodDef PyPedDeviceMethods[] = {
-+ { "open", (PyCFunction) py_ped_device_open, METH_VARARGS, NULL },
-+ { "close", (PyCFunction) py_ped_device_close, METH_VARARGS, NULL },
-+ { "sync", (PyCFunction) py_ped_device_sync, METH_VARARGS, NULL },
-+ { "disk_open", (PyCFunction) py_ped_disk_open, METH_VARARGS, NULL },
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+/* device implementation */
-+
-+PyPedDevice * py_ped_device_new (PedDevice *dev)
-+{
-+ PyPedDevice *d;
-+
-+ d = (PyPedDevice *) PyObject_NEW(PyObject, &PyPedDeviceType);
-+ d->dev = dev;
-+ return d;
-+}
-+
-+static void
-+py_ped_device_dealloc (PyPedDevice * s)
-+{
-+ /* s->dev will be destroyed if ped_device_free_all() is called */
-+ /* ped_device_destroy (s->dev); */
-+ PyMem_DEL(s);
-+}
-+
-+static PyObject *
-+py_ped_device_getattr (PyPedDevice * d, char * name)
-+{
-+ if (!strcmp (name, "length"))
-+ return PyLong_FromLongLong (d->dev->length);
-+ else if (!strcmp (name, "model"))
-+ return PyString_FromString (d->dev->model);
-+ else if (!strcmp (name, "path"))
-+ return PyString_FromString (d->dev->path);
-+ else if (!strcmp (name, "sector_size"))
-+ return PyInt_FromLong (d->dev->sector_size);
-+ else if (!strcmp (name, "type"))
-+ return PyInt_FromLong (d->dev->type);
-+ return Py_FindMethod (PyPedDeviceMethods, (PyObject *) d, name);
-+}
-+
-+static PyObject *
-+py_ped_device_open (PyPedDevice * s, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_device_open (s->dev)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_device_close (PyPedDevice * s, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_device_close (s->dev)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_device_sync (PyPedDevice * s, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_device_sync (s->dev)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_disk_open (PyPedDevice * self, PyObject * args)
-+{
-+ PyPedDevice *dev;
-+ PyPedDisk *d;
-+ PedDisk *disk;
-+
-+ py_ped_exception_string_clear ();
-+ if ((disk = ped_disk_open (self->dev)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ d = (PyPedDisk *) PyObject_NEW(PyObject, &PyPedDiskType);
-+ d->disk = disk;
-+ return (PyObject *) d;
-+}
-+
-diff -urP parted-1.4.14/python/pydevice.h parted-1.4.14-python/python/pydevice.h
---- parted-1.4.14/python/pydevice.h Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14-python/python/pydevice.h Thu Dec 7 09:45:26 2000
-@@ -0,0 +1,33 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#ifndef PYDEVICE_H_INCLUDED
-+#define PYDEVICE_H_INCLUDED
-+
-+#include <Python.h>
-+
-+#include "parted/device.h"
-+
-+extern PyTypeObject PyPedDeviceType;
-+typedef struct _PyPedDevice PyPedDevice;
-+
-+struct _PyPedDevice {
-+ PyObject_HEAD;
-+ PedDevice *dev;
-+};
-+
-+PyPedDevice * py_ped_device_new (PedDevice *dev);
-+
-+#endif /* PYDEVICE_H_INCLUDED */
-+
-diff -urP parted-1.4.14/python/pydisk.c parted-1.4.14-python/python/pydisk.c
---- parted-1.4.14/python/pydisk.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14-python/python/pydisk.c Sun Apr 22 18:42:44 2001
-@@ -0,0 +1,631 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include "partedmodule.h"
-+#include "pydisk.h"
-+#include "pydevice.h"
-+#include "pygeometry.h"
-+#include "pyfilesystem.h"
-+#include "pyconstraint.h"
-+
-+/* disk python object */
-+static void py_ped_disk_dealloc (PyPedDisk * d);
-+static PyObject * py_ped_disk_getattr (PyPedDisk * d, char * name);
-+
-+static char PyPedDiskType__doc__[] = "This is the PartEd disk object";
-+PyTypeObject PyPedDiskType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedDisk", /* tp_name */
-+ sizeof(PyPedDisk), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_disk_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_disk_getattr, /* tp_getattr */
-+ 0, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /* tp_hash */
-+ 0, /* tp_call */
-+ 0, /* tp_str */
-+ 0, /* tp_getattro */
-+ 0, /* tp_setattro */
-+ 0, /* tp_as_buffer */
-+ 0L, /* tp_flags */
-+ PyPedDiskType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+static PyObject * py_ped_disk_next_partition (PyPedDisk * d, PyObject * args);
-+static PyObject * py_ped_disk_write (PyPedDisk * d, PyObject * args);
-+static PyObject * py_ped_disk_read (PyPedDisk * d, PyObject * args);
-+static PyObject * py_ped_disk_delete_partition (PyPedDisk * d, PyObject * args);
-+static PyObject * py_ped_disk_delete_all (PyPedDisk * d, PyObject * args);
-+static PyObject * py_ped_disk_add_partition (PyPedDisk * d, PyObject * args);
-+static PyObject * py_ped_disk_get_partition (PyPedDisk * d, PyObject * args);
-+static PyObject * py_ped_constraint_any (PyPedDisk * self, PyObject * args);
-+static PyObject * py_ped_geometry_new (PyPedDisk * self, PyObject * args);
-+static PyObject * py_ped_partition_new (PyPedDisk * self, PyObject * args);
-+static PyObject * py_ped_disk_minimize_extended_partition (PyPedDisk * self, PyObject * args);
-+static PyObject * py_ped_disk_maximize_partition (PyPedDisk * self, PyObject * args);
-+static PyObject * py_ped_disk_is_busy (PyPedDisk * d, PyObject * args);
-+
-+static struct PyMethodDef PyPedDiskMethods[] = {
-+ { "next_partition", (PyCFunction) py_ped_disk_next_partition, METH_VARARGS, NULL },
-+ { "read", (PyCFunction) py_ped_disk_read, METH_VARARGS, NULL },
-+ { "write", (PyCFunction) py_ped_disk_write, METH_VARARGS, NULL },
-+ { "delete_partition", (PyCFunction) py_ped_disk_delete_partition, METH_VARARGS, NULL },
-+ { "delete_all", (PyCFunction) py_ped_disk_delete_all, METH_VARARGS, NULL },
-+ { "add_partition", (PyCFunction) py_ped_disk_add_partition, METH_VARARGS, NULL },
-+ { "get_partition", (PyCFunction) py_ped_disk_get_partition, METH_VARARGS, NULL },
-+ { "constraint_any", (PyCFunction) py_ped_constraint_any, METH_VARARGS, NULL },
-+ { "geometry_new", (PyCFunction) py_ped_geometry_new, METH_VARARGS, NULL },
-+ { "partition_new", (PyCFunction) py_ped_partition_new, METH_VARARGS, NULL },
-+ { "minimize_extended_partition", (PyCFunction) py_ped_disk_minimize_extended_partition, METH_VARARGS, NULL },
-+ { "maximize_partition", (PyCFunction) py_ped_disk_maximize_partition, METH_VARARGS, NULL },
-+ { "is_busy", (PyCFunction) py_ped_disk_is_busy, METH_VARARGS, NULL },
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+/* partition python object */
-+
-+static void py_ped_partition_dealloc (PyPedPartition * p);
-+static PyObject * py_ped_partition_getattr (PyPedPartition * p, char * name);
-+
-+static char PyPedPartitionType__doc__[] = "This is the PartEd partition object";
-+PyTypeObject PyPedPartitionType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedPartition", /* tp_name */
-+ sizeof(PyPedPartition), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_partition_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_partition_getattr, /* tp_getattr */
-+ 0, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /* tp_hash */
-+ 0, /* tp_call */
-+ 0, /* tp_str */
-+ 0, /* tp_getattro */
-+ 0, /* tp_setattro */
-+ 0, /* tp_as_buffer */
-+ 0L, /* tp_flags */
-+ PyPedPartitionType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+static PyObject * py_ped_partition_is_flag_available (PyPedPartition *p, PyObject * args);
-+static PyObject * py_ped_partition_set_flag (PyPedPartition * self, PyObject * args);
-+static PyObject * py_ped_partition_get_flag (PyPedPartition * self, PyObject * args);
-+static PyObject * py_ped_partition_is_active (PyPedPartition * self, PyObject * args);
-+static PyObject * py_ped_partition_set_system (PyPedPartition * self, PyObject * args);
-+static PyObject * py_ped_partition_set_name (PyPedPartition * self, PyObject * args);
-+static PyObject * py_ped_partition_get_name (PyPedPartition * self, PyObject * args);
-+static PyObject * py_ped_partition_is_busy (PyPedPartition * self, PyObject * args);
-+
-+static struct PyMethodDef PyPedPartitionMethods[] = {
-+ { "is_flag_available", (PyCFunction) py_ped_partition_is_flag_available, METH_VARARGS, NULL },
-+ { "get_flag", (PyCFunction) py_ped_partition_get_flag, METH_VARARGS, NULL },
-+ { "set_flag", (PyCFunction) py_ped_partition_set_flag, METH_VARARGS, NULL },
-+ { "is_active", (PyCFunction) py_ped_partition_is_active, METH_VARARGS, NULL },
-+ { "set_system", (PyCFunction) py_ped_partition_set_system, METH_VARARGS, NULL },
-+ { "set_name", (PyCFunction) py_ped_partition_set_name, METH_VARARGS, NULL },
-+ { "get_name", (PyCFunction) py_ped_partition_get_name, METH_VARARGS, NULL },
-+ { "is_busy", (PyCFunction) py_ped_partition_is_busy, METH_VARARGS, NULL },
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+/* disk implementation */
-+
-+static void
-+py_ped_disk_dealloc (PyPedDisk * d)
-+{
-+ ped_disk_close (d->disk);
-+ PyMem_DEL(d);
-+}
-+
-+static PyObject *
-+py_ped_disk_getattr (PyPedDisk * d, char * name)
-+{
-+ if (!strcmp (name, "dev"))
-+ return (PyObject *) py_ped_device_new (d->disk->dev);
-+ if (!strcmp (name, "max_primary_partition_count")) {
-+ int num;
-+
-+ py_ped_exception_string_clear ();
-+ num = ped_disk_get_max_primary_partition_count (d->disk);
-+ if (num == 0) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+ return PyInt_FromLong (num);
-+ }
-+ if (!strcmp (name, "extended_partition")) {
-+ PedPartition *ppart;
-+
-+ py_ped_exception_string_clear ();
-+ ppart = ped_disk_extended_partition (d->disk);
-+ if (ppart != NULL)
-+ return (PyObject *) py_ped_partition_obj_new (ppart, d, 1);
-+
-+ if (py_ped_exception_string_check ()) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+ }
-+
-+ return Py_FindMethod (PyPedDiskMethods, (PyObject *) d, name);
-+}
-+
-+static PyObject *
-+py_ped_disk_next_partition (PyPedDisk * d, PyObject * args)
-+{
-+ PyPedPartition *part = NULL;
-+ PedPartition *ppart;
-+
-+ if (!PyArg_ParseTuple(args, "|O!", &PyPedPartitionType, &part)) {
-+ PyErr_SetString(PyExc_TypeError,
-+ "optional parameter must be a PedPartition");
-+ return NULL;
-+ }
-+
-+ ppart = ped_disk_next_partition (d->disk, part ? part->part : NULL);
-+ if (ppart != NULL)
-+ return (PyObject *) py_ped_partition_obj_new (ppart, d, 1);
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_disk_read (PyPedDisk * d, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_disk_write (d->disk)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_disk_write (PyPedDisk * d, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_disk_write (d->disk)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_disk_delete_partition (PyPedDisk * d, PyObject * args)
-+{
-+ PyPedPartition *part;
-+
-+ if (!PyArg_ParseTuple(args, "O!", &PyPedPartitionType, &part)) {
-+ PyErr_SetString(PyExc_TypeError, "PedPartition expected");
-+ return NULL;
-+ }
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_disk_delete_partition (d->disk, part->part)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+ /* the partition structure is freed as part of the
-+ delete_partition call. Protect from the double free
-+ by marking it borrowed */
-+ part->borrowed = 1;
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+
-+static PyObject *
-+py_ped_disk_delete_all (PyPedDisk * d, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_disk_delete_all (d->disk)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_disk_add_partition (PyPedDisk * d, PyObject * args)
-+{
-+ PyPedPartition *part;
-+ PyPedConstraint *constraint;
-+
-+ if (!PyArg_ParseTuple(args, "O!O!", &PyPedPartitionType, &part,
-+ &PyPedConstraintType, &constraint)) {
-+ PyErr_SetString(PyExc_TypeError, "bad argument");
-+ return NULL;
-+ }
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_disk_add_partition (d->disk, part->part,
-+ constraint->constraint)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ /* the disk takes ownership of the data in this partition
-+ when added, protect from double free */
-+ part->borrowed = 1;
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_disk_get_partition_by_sector (PyPedDisk * d, PyObject * args)
-+{
-+ PedPartition *part;
-+ PedSector sect;
-+
-+ if (!PyArg_ParseTuple(args, "L", &sect))
-+ return NULL;
-+
-+ if ((part = ped_disk_get_partition_by_sector (d->disk, sect)) == NULL) {
-+ PyErr_SetString(PyPartedError, "partition not found");
-+ return NULL;
-+ }
-+
-+ return (PyObject *) py_ped_partition_obj_new (part, d, 1);
-+}
-+
-+static PyObject *
-+py_ped_disk_get_partition (PyPedDisk * d, PyObject * args)
-+{
-+ PedPartition *part;
-+ int num;
-+
-+ if (!PyArg_ParseTuple(args, "i", &num))
-+ return NULL;
-+
-+ if ((part = ped_disk_get_partition (d->disk, num)) == NULL) {
-+ PyErr_SetString(PyPartedError, "partition not found");
-+ return NULL;
-+ }
-+
-+ return (PyObject *) py_ped_partition_obj_new (part, d, 1);
-+}
-+
-+static PyObject *
-+py_ped_partition_new (PyPedDisk * self, PyObject * args)
-+{
-+ PyPedFileSystemTypeObj *fs_type;
-+ PedSector start, end;
-+ PedPartition *part;
-+ PedPartitionType type;
-+ PyPedPartition *pypart;
-+
-+ if (!PyArg_ParseTuple(args, "iO!LL",
-+ &type,
-+ &PyPedFileSystemTypeType, &fs_type,
-+ &start, &end)) {
-+ return NULL;
-+ }
-+
-+ py_ped_exception_string_clear ();
-+ part = ped_partition_new (self->disk, type, fs_type->fs_type,
-+ start, end);
-+ if (part == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ pypart = py_ped_partition_obj_new (part, self, 0);
-+
-+ return (PyObject *) pypart;
-+}
-+
-+static PyObject *
-+py_ped_constraint_any (PyPedDisk * self, PyObject * args)
-+{
-+ PyPedDisk *disk;
-+ PedConstraint *constraint;
-+ PyPedConstraint *pyconstraint;
-+
-+ py_ped_exception_string_clear ();
-+ constraint = ped_constraint_any (self->disk);
-+ if (constraint == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ pyconstraint = py_ped_constraint_obj_new (constraint, self, 0);
-+
-+ return (PyObject *) pyconstraint;
-+}
-+
-+static PyObject *
-+py_ped_geometry_new (PyPedDisk * self, PyObject * args)
-+{
-+ PedSector start, length;
-+ PedGeometry *geom;
-+ PyPedGeometry *pygeom;
-+
-+ if (!PyArg_ParseTuple(args, "LL", &start, &length)) {
-+ return NULL;
-+ }
-+
-+ py_ped_exception_string_clear ();
-+ geom = ped_geometry_new (self->disk, start, length);
-+ if (geom == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ pygeom = py_ped_geometry_obj_new (geom, self, 0);
-+ pygeom->disk = self;
-+ Py_INCREF (self);
-+
-+ return (PyObject *) pygeom;
-+}
-+
-+static PyObject *
-+py_ped_disk_minimize_extended_partition (PyPedDisk * self, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_disk_minimize_extended_partition (self->disk)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+
-+}
-+
-+static PyObject *
-+py_ped_disk_maximize_partition (PyPedDisk * self, PyObject * args)
-+{
-+ PyPedPartition *part;
-+ PyPedConstraint *constraint;
-+
-+ if (!PyArg_ParseTuple(args, "O!O!", &PyPedPartitionType, &part,
-+ &PyPedConstraintType, &constraint)) {
-+ return NULL;
-+ }
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_disk_maximize_partition (self->disk, part->part,
-+ constraint->constraint)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_disk_is_busy (PyPedDisk *d, PyObject * args)
-+{
-+ int state;
-+
-+ py_ped_exception_string_clear ();
-+ state = ped_disk_is_busy (d->disk);
-+ if (py_ped_exception_string_check ()) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return PyInt_FromLong (state);
-+}
-+
-+/* partition implementation */
-+
-+PyPedPartition *
-+py_ped_partition_obj_new (PedPartition *part, PyPedDisk *disk, int borrowed)
-+{
-+ PyPedPartition *p;
-+
-+ p = (PyPedPartition *) PyObject_NEW(PyObject, &PyPedPartitionType);
-+ p->part = part;
-+ p->borrowed = borrowed;
-+ p->disk = disk;
-+ Py_INCREF (disk);
-+
-+ return p;
-+}
-+
-+static void
-+py_ped_partition_dealloc (PyPedPartition * p)
-+{
-+ if (!p->borrowed)
-+ ped_partition_destroy (p->part);
-+ Py_XDECREF (p->disk);
-+ PyMem_DEL(p);
-+}
-+
-+static PyObject *
-+py_ped_partition_getattr (PyPedPartition * p, char * name)
-+{
-+ if (!strcmp (name, "num"))
-+ return PyInt_FromLong (p->part->num);
-+ if (!strcmp (name, "type"))
-+ return PyInt_FromLong (p->part->type);
-+ if (!strcmp (name, "type_name"))
-+ return PyString_FromString (
-+ ped_partition_type_get_name (p->part->type));
-+ if (!strcmp (name, "geom"))
-+ return (PyObject *) py_ped_geometry_obj_new (&p->part->geom, p->disk, 1);
-+ if (!strcmp (name, "fs_type")) {
-+ if (p->part->fs_type)
-+ return (PyObject *)
-+ py_ped_file_system_type_obj_new (p->part->fs_type);
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+ }
-+ return Py_FindMethod (PyPedPartitionMethods, (PyObject *) p, name);
-+}
-+
-+static PyObject *
-+py_ped_partition_is_flag_available (PyPedPartition *p, PyObject * args)
-+{
-+ int av, flag;
-+
-+ if (!PyArg_ParseTuple(args, "i", &flag))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ av = ped_partition_is_flag_available (p->part, flag);
-+ if (py_ped_exception_string_check ()) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return PyInt_FromLong (av);
-+}
-+
-+static PyObject *
-+py_ped_partition_set_flag (PyPedPartition *p, PyObject * args)
-+{
-+ int flag, state;
-+
-+ if (!PyArg_ParseTuple(args, "ii", &flag, &state))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_partition_set_flag (p->part, flag, state)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_partition_get_flag (PyPedPartition *p, PyObject * args)
-+{
-+ int flag, state;
-+
-+ if (!PyArg_ParseTuple(args, "i", &flag))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ state = ped_partition_get_flag (p->part, flag);
-+ if (py_ped_exception_string_check ()) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return PyInt_FromLong (state);
-+}
-+
-+
-+static PyObject *
-+py_ped_partition_is_active (PyPedPartition *p, PyObject * args)
-+{
-+ int state;
-+
-+ py_ped_exception_string_clear ();
-+ state = ped_partition_is_active (p->part);
-+ if (py_ped_exception_string_check ()) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return PyInt_FromLong (state);
-+}
-+
-+static PyObject *
-+py_ped_partition_set_system (PyPedPartition *p, PyObject * args)
-+{
-+ PyPedFileSystemTypeObj *fs_type;
-+
-+ if (!PyArg_ParseTuple(args, "O!",
-+ &PyPedFileSystemTypeType, &fs_type))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_partition_set_system (p->part, fs_type->fs_type)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+
-+static PyObject *
-+py_ped_partition_set_name (PyPedPartition *p, PyObject * args)
-+{
-+ char *name;
-+
-+ if (!PyArg_ParseTuple(args, "s", &name))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_partition_set_name (p->part, name)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_partition_get_name (PyPedPartition *p, PyObject * args)
-+{
-+ const char *name;
-+
-+ py_ped_exception_string_clear ();
-+ if ((name = ped_partition_get_name (p->part)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return PyString_FromString (name);
-+}
-+
-+
-+static PyObject *
-+py_ped_partition_is_busy (PyPedPartition *p, PyObject * args)
-+{
-+ int state;
-+
-+ py_ped_exception_string_clear ();
-+ state = ped_partition_is_busy (p->part);
-+ if (py_ped_exception_string_check ()) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return PyInt_FromLong (state);
-+}
-diff -urP parted-1.4.14/python/pydisk.h parted-1.4.14-python/python/pydisk.h
---- parted-1.4.14/python/pydisk.h Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14-python/python/pydisk.h Thu Dec 7 17:55:09 2000
-@@ -0,0 +1,45 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#ifndef PYDISK_H_INCLUDED
-+#define PYDISK_H_INCLUDED
-+
-+#include <Python.h>
-+
-+#include "parted/disk.h"
-+
-+typedef struct _PyPedDisk PyPedDisk;
-+
-+struct _PyPedDisk {
-+ PyObject_HEAD;
-+ PedDisk *disk;
-+};
-+
-+extern PyTypeObject PyPedDiskType;
-+
-+typedef struct _PyPedPartition PyPedPartition;
-+
-+struct _PyPedPartition {
-+ PyObject_HEAD;
-+ PedPartition *part;
-+ PyPedDisk *disk;
-+ int borrowed;
-+};
-+
-+extern PyTypeObject PyPedPartitionType;
-+
-+extern PyPedPartition * py_ped_partition_obj_new (PedPartition *part, PyPedDisk *disk,
-+ int borrowed);
-+
-+#endif /* PYDISK_H_INCLUDED */
-diff -urP parted-1.4.14/python/pyexception.c parted-1.4.14-python/python/pyexception.c
---- parted-1.4.14/python/pyexception.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14-python/python/pyexception.c Tue Dec 5 17:31:50 2000
-@@ -0,0 +1,78 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include "pyexception.h"
-+
-+static void py_ped_exception_dealloc (PyPedException * s);
-+static PyObject * py_ped_exception_getattr (PyPedException * s, char * name);
-+
-+static char PyPedExceptionType__doc__[] = "This is the PartEd exception object";
-+PyTypeObject PyPedExceptionType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedException", /* tp_name */
-+ sizeof(PyPedException), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_exception_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_exception_getattr, /* tp_getattr */
-+ 0, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /*tp_hash*/
-+ 0, /*tp_call*/
-+ 0, /*tp_str*/
-+ 0, /*tp_getattro*/
-+ 0, /*tp_setattro*/
-+ 0, /*tp_as_buffer*/
-+ 0L, /*tp_flags*/
-+ PyPedExceptionType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+
-+/* exception implementation */
-+
-+static void
-+py_ped_exception_dealloc (PyPedException * s)
-+{
-+ PyMem_DEL(s);
-+}
-+
-+static PyObject *
-+py_ped_exception_getattr (PyPedException * e, char * name)
-+{
-+ if (!strcmp (name, "message"))
-+ return PyString_FromString (e->ex->message);
-+ else if (!strcmp (name, "type"))
-+ return PyInt_FromLong (e->ex->type);
-+ else if (!strcmp (name, "type_string"))
-+ return PyString_FromString (ped_exception_get_type_string (e->ex->type));
-+ else if (!strcmp (name, "options"))
-+ return PyInt_FromLong (e->ex->options);
-+ return NULL;
-+}
-+
-+PyPedException *
-+py_ped_exception_obj_new (PedException *ex)
-+{
-+ PyPedException *e;
-+
-+ e = (PyPedException *) PyObject_NEW(PyObject, &PyPedExceptionType);
-+ e->ex = ex;
-+ return e;
-+}
-diff -urP parted-1.4.14/python/pyexception.h parted-1.4.14-python/python/pyexception.h
---- parted-1.4.14/python/pyexception.h Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14-python/python/pyexception.h Thu Dec 7 09:45:26 2000
-@@ -0,0 +1,35 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#ifndef PYEXCEPTION_H_INCLUDED
-+#define PYEXCEPTION_H_INCLUDED
-+
-+#include <Python.h>
-+
-+#include "parted/exception.h"
-+
-+extern PyTypeObject PyPedExceptionType;
-+
-+typedef struct _PyPedException PyPedException;
-+
-+struct _PyPedException {
-+ PyObject_HEAD;
-+ PedException *ex;
-+};
-+
-+PyPedException *
-+py_ped_exception_obj_new (PedException *ex);
-+
-+#endif /* PYEXCEPTION_H_INCLUDED */
-+
-diff -urP parted-1.4.14/python/pyfilesystem.c parted-1.4.14-python/python/pyfilesystem.c
---- parted-1.4.14/python/pyfilesystem.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14-python/python/pyfilesystem.c Thu Dec 7 17:55:09 2000
-@@ -0,0 +1,228 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include "partedmodule.h"
-+
-+#include "pyfilesystem.h"
-+#include "pyconstraint.h"
-+#include "pygeometry.h"
-+
-+/* filesystem python object */
-+
-+static void py_ped_file_system_dealloc (PyPedFileSystem* fs);
-+static PyObject * py_ped_file_system_getattr (PyPedFileSystem * fs, char * name);
-+
-+static char PyPedFileSystemType__doc__[] = "This is the PartEd filesystem object";
-+PyTypeObject PyPedFileSystemType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedFileSystem", /* tp_name */
-+ sizeof(PyPedFileSystem), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_file_system_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_file_system_getattr, /* tp_getattr */
-+ 0, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /* tp_hash */
-+ 0, /* tp_call */
-+ 0, /* tp_str */
-+ 0, /* tp_getattro */
-+ 0, /* tp_setattro */
-+ 0, /* tp_as_buffer */
-+ 0L, /* tp_flags */
-+ PyPedFileSystemType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+static PyObject * py_ped_file_system_check (PyPedFileSystem * fs, PyObject * args);
-+static PyObject * py_ped_file_system_copy (PyPedFileSystem * fs, PyObject * args);
-+static PyObject * py_ped_file_system_resize (PyPedFileSystem * fs, PyObject * args);
-+static PyObject * py_ped_file_system_get_resize_constraint (PyPedFileSystem * fs, PyObject * args);
-+
-+static struct PyMethodDef PyPedFileSystemMethods[] = {
-+ { "check", (PyCFunction) py_ped_file_system_check, METH_VARARGS, NULL },
-+ { "copy", (PyCFunction) py_ped_file_system_copy, METH_VARARGS, NULL },
-+ { "resize", (PyCFunction) py_ped_file_system_resize, METH_VARARGS, NULL },
-+ { "get_resize_constraint", (PyCFunction) py_ped_file_system_get_resize_constraint, METH_VARARGS, NULL },
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+
-+/* file system type python object */
-+
-+static void py_ped_file_system_type_dealloc (PyPedFileSystemTypeObj* fst);
-+static PyObject * py_ped_file_system_type_getattr (PyPedFileSystemTypeObj* fst, char * name);
-+
-+static char PyPedFileSystemTypeType__doc__[] = "This is the PartEd filesystem object";
-+PyTypeObject PyPedFileSystemTypeType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedFileSystemType", /* tp_name */
-+ sizeof(PyPedFileSystemType), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_file_system_type_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_file_system_type_getattr, /* tp_getattr */
-+ 0, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /* tp_hash */
-+ 0, /* tp_call */
-+ 0, /* tp_str */
-+ 0, /* tp_getattro */
-+ 0, /* tp_setattro */
-+ 0, /* tp_as_buffer */
-+ 0L, /* tp_flags */
-+ PyPedFileSystemTypeType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+static struct PyMethodDef PyPedFileSystemTypeMethods[] = {
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+/*
-+ * filesystem implementation
-+ */
-+
-+PyPedFileSystem *
-+py_ped_file_system_obj_new (PedFileSystem *filesys,
-+ PyPedGeometry *geom)
-+{
-+ PyPedFileSystem *fs;
-+
-+ fs = (PyPedFileSystem *) PyObject_NEW(PyObject, &PyPedFileSystemType);
-+ fs->fs = filesys;
-+ fs->geom = geom;
-+ Py_INCREF (geom);
-+ return fs;
-+}
-+
-+static void
-+py_ped_file_system_dealloc (PyPedFileSystem * fs)
-+{
-+ ped_file_system_close (fs->fs);
-+ Py_XDECREF (fs->geom);
-+ PyMem_DEL(fs);
-+}
-+
-+static PyObject *
-+py_ped_file_system_getattr (PyPedFileSystem * fs, char * name)
-+{
-+ if (!strcmp (name, "type"))
-+ return PyString_FromString (fs->fs->type->name);
-+ if (!strcmp (name, "geom"))
-+ return (PyObject *) py_ped_geometry_obj_new (fs->fs->geom, fs->geom->disk, 1);
-+ return Py_FindMethod (PyPedFileSystemMethods, (PyObject *) fs, name);
-+}
-+
-+static PyObject *
-+py_ped_file_system_check (PyPedFileSystem * fs, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_file_system_check (fs->fs)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_file_system_copy (PyPedFileSystem * fs, PyObject * args)
-+{
-+ PyPedGeometry *geom;
-+
-+ if (!PyArg_ParseTuple(args, "O!", &PyPedGeometryType, &geom))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_file_system_copy (fs->fs, geom->geom)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_file_system_resize (PyPedFileSystem * fs, PyObject * args)
-+{
-+ PyPedGeometry *geom;
-+
-+ if (!PyArg_ParseTuple(args, "O!", &PyPedGeometryType, &geom))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_file_system_resize (fs->fs, geom->geom)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_file_system_get_resize_constraint (PyPedFileSystem * fs, PyObject * args)
-+{
-+ PedConstraint *constraint;
-+
-+ py_ped_exception_string_clear ();
-+ if ((constraint = ped_file_system_get_resize_constraint (fs->fs)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return (PyObject *) py_ped_constraint_obj_new (constraint, fs->geom->disk, 0);
-+}
-+
-+/*
-+ * file system type implementation
-+ */
-+
-+
-+PyPedFileSystemTypeObj *
-+py_ped_file_system_type_obj_new (const PedFileSystemType *fs_type)
-+{
-+ PyPedFileSystemTypeObj *fst;
-+
-+ fst = (PyPedFileSystemTypeObj *) PyObject_NEW(PyObject, &PyPedFileSystemTypeType);
-+ fst->fs_type = fs_type;
-+ return fst;
-+}
-+
-+static void
-+py_ped_file_system_type_dealloc (PyPedFileSystemTypeObj* fst)
-+{
-+ PyMem_DEL(fst);
-+}
-+
-+static PyObject *
-+py_ped_file_system_type_getattr (PyPedFileSystemTypeObj * fst, char * name)
-+{
-+ if (!strcmp (name, "name"))
-+ return PyString_FromString (fst->fs_type->name);
-+ return NULL;
-+}
-diff -urP parted-1.4.14/python/pyfilesystem.h parted-1.4.14-python/python/pyfilesystem.h
---- parted-1.4.14/python/pyfilesystem.h Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14-python/python/pyfilesystem.h Thu Dec 7 17:55:09 2000
-@@ -0,0 +1,49 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#ifndef PYFILESYSTEM_H_INCLUDED
-+#define PYFILESYSTEM_H_INCLUDED
-+
-+#include <Python.h>
-+#include "parted/disk.h"
-+#include "pygeometry.h"
-+
-+typedef struct _PyPedFileSystem PyPedFileSystem;
-+
-+struct _PyPedFileSystem {
-+ PyObject_HEAD;
-+ PedFileSystem* fs;
-+ PyPedGeometry *geom;
-+};
-+
-+extern PyTypeObject PyPedFileSystemType;
-+
-+PyPedFileSystem *
-+py_ped_file_system_obj_new (PedFileSystem* fs,
-+ PyPedGeometry *geom);
-+
-+typedef struct _PyPedFileSystemTypeObj PyPedFileSystemTypeObj;
-+
-+struct _PyPedFileSystemTypeObj {
-+ PyObject_HEAD;
-+ const PedFileSystemType* fs_type;
-+};
-+
-+extern PyTypeObject PyPedFileSystemTypeType;
-+
-+PyPedFileSystemTypeObj*
-+py_ped_file_system_type_obj_new (const PedFileSystemType* fs_type);
-+
-+#endif /* PYFILESYSTEM_H_INCLUDED */
-+
-diff -urP parted-1.4.14/python/pygeometry.c parted-1.4.14-python/python/pygeometry.c
---- parted-1.4.14/python/pygeometry.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14-python/python/pygeometry.c Thu Apr 26 12:46:24 2001
-@@ -0,0 +1,245 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include "partedmodule.h"
-+#include "pygeometry.h"
-+#include "pyfilesystem.h"
-+
-+static void py_ped_geometry_dealloc (PyPedGeometry * g);
-+static PyObject * py_ped_geometry_getattr (PyPedGeometry * g, char * name);
-+static int py_ped_geometry_setattr (PyPedGeometry * g, char * name, PyObject *value);
-+
-+static char PyPedGeometryType__doc__[] = "This is the PartEd geometry object";
-+PyTypeObject PyPedGeometryType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedGeometry", /* tp_name */
-+ sizeof(PyPedGeometry), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_geometry_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_geometry_getattr, /* tp_getattr */
-+ (setattrfunc) py_ped_geometry_setattr, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /* tp_hash */
-+ 0, /* tp_call */
-+ 0, /* tp_str */
-+ 0, /* tp_getattro */
-+ 0, /* tp_setattro */
-+ 0, /* tp_as_buffer */
-+ 0L, /* tp_flags */
-+ PyPedGeometryType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+/* geometry implementation */
-+
-+PyPedGeometry *
-+py_ped_geometry_obj_new (PedGeometry* geom, PyPedDisk *disk, int borrowed)
-+{
-+ PyPedGeometry *g;
-+
-+ g = (PyPedGeometry *) PyObject_NEW (PyObject, &PyPedGeometryType);
-+ g->geom = geom;
-+ g->borrowed = borrowed;
-+ g->disk = disk;
-+ Py_INCREF (disk);
-+ return g;
-+}
-+
-+static void
-+py_ped_geometry_dealloc (PyPedGeometry * g)
-+{
-+ if (!g->borrowed)
-+ ped_geometry_destroy (g->geom);
-+ Py_XDECREF (g->disk);
-+ PyMem_DEL(g);
-+}
-+
-+static PyObject *
-+py_ped_file_system_open (PyPedGeometry * self, PyObject * args)
-+{
-+ PedFileSystem *fs;
-+ PyPedFileSystem *pyfs;
-+
-+ py_ped_exception_string_clear ();
-+ if ((fs = ped_file_system_open (self->geom)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ pyfs = py_ped_file_system_obj_new (fs, self);
-+ return (PyObject *) pyfs;
-+}
-+
-+static PyObject *
-+py_ped_file_system_probe (PyPedGeometry * self, PyObject * args)
-+{
-+ PedFileSystemType *fst;
-+
-+ py_ped_exception_string_clear ();
-+ if ((fst = ped_file_system_probe (self->geom)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return (PyObject *) py_ped_file_system_type_obj_new (fst);
-+}
-+
-+static PyObject *
-+py_ped_file_system_create (PyPedGeometry * self, PyObject * args)
-+{
-+ PedFileSystem *fs;
-+ PyPedFileSystemTypeObj *fs_type;
-+ PyPedFileSystem *pyfs;
-+
-+ if (!PyArg_ParseTuple(args, "O!",
-+ &PyPedFileSystemTypeType, &fs_type))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if ((fs = ped_file_system_create (self->geom, fs_type->fs_type)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ pyfs = py_ped_file_system_obj_new (fs, self);
-+ return (PyObject *) pyfs;
-+}
-+
-+
-+static PyObject *
-+py_ped_file_system_clobber (PyPedGeometry * self, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_file_system_clobber (self->geom)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_geometry_set_end (PyPedGeometry * self, PyObject * args)
-+{
-+ PedSector end;
-+
-+ if (!PyArg_ParseTuple(args, "L", &end))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_geometry_set_end (self->geom, end)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+
-+static PyObject *
-+py_ped_geometry_set_start (PyPedGeometry * self, PyObject * args)
-+{
-+ PedSector start;
-+
-+ if (!PyArg_ParseTuple(args, "L", &start))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_geometry_set_start (self->geom, start)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_geometry_duplicate (PyPedGeometry * self, PyObject * args)
-+{
-+ PedGeometry *geom;
-+
-+ py_ped_exception_string_clear ();
-+ if ((geom = ped_geometry_duplicate (self->geom)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return (PyObject *) py_ped_geometry_obj_new (geom, self->disk, 0);
-+}
-+
-+static struct PyMethodDef PyPedGeometryMethods[] = {
-+ { "file_system_open",
-+ (PyCFunction) py_ped_file_system_open, METH_VARARGS, NULL },
-+ { "file_system_probe",
-+ (PyCFunction) py_ped_file_system_probe, METH_VARARGS, NULL },
-+ { "file_system_create",
-+ (PyCFunction) py_ped_file_system_create, METH_VARARGS, NULL },
-+ { "file_system_clobber",
-+ (PyCFunction) py_ped_file_system_clobber, METH_VARARGS, NULL },
-+ { "set_start",
-+ (PyCFunction) py_ped_geometry_set_start, METH_VARARGS, NULL },
-+ { "set_end",
-+ (PyCFunction) py_ped_geometry_set_end, METH_VARARGS, NULL },
-+ { "duplicate",
-+ (PyCFunction) py_ped_geometry_duplicate, METH_VARARGS, NULL },
-+
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+static PyObject *
-+py_ped_geometry_getattr (PyPedGeometry * g, char * name)
-+{
-+
-+#define RETURN_GEOM_VALUE(var) \
-+ if (!strcmp (name, #var)) \
-+ return PyLong_FromLongLong (g->geom->var)
-+
-+ RETURN_GEOM_VALUE(start);
-+ RETURN_GEOM_VALUE(end);
-+ RETURN_GEOM_VALUE(length);
-+
-+ return Py_FindMethod (PyPedGeometryMethods, (PyObject *) g, name);
-+}
-+
-+static int
-+py_ped_geometry_setattr (PyPedGeometry * g, char * name, PyObject *value)
-+{
-+#define SET_GEOM_VALUE(var) \
-+ if (!strcmp (name, #var)) { \
-+ if (!PyLong_Check (value)) { \
-+ PyErr_SetString(PyExc_TypeError, \
-+ "expected long long"); \
-+ return -1; \
-+ } \
-+ g->geom->var = PyLong_AsLongLong (value); \
-+ return 0; \
-+ }
-+ SET_GEOM_VALUE(start);
-+ SET_GEOM_VALUE(end);
-+ SET_GEOM_VALUE(length);
-+
-+ PyErr_SetString( PyExc_AttributeError, "unknown attribute" );
-+ return -1;
-+}
-+
-+
-diff -urP parted-1.4.14/python/pygeometry.h parted-1.4.14-python/python/pygeometry.h
---- parted-1.4.14/python/pygeometry.h Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14-python/python/pygeometry.h Thu Dec 7 17:55:09 2000
-@@ -0,0 +1,37 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#ifndef PYGEOMETRY_H_INCLUDED
-+#define PYGEOMETRY_H_INCLUDED
-+
-+#include <Python.h>
-+
-+#include "pydisk.h"
-+
-+typedef struct _PyPedGeometry PyPedGeometry;
-+
-+struct _PyPedGeometry {
-+ PyObject_HEAD;
-+ PedGeometry* geom;
-+ PyPedDisk *disk;
-+ int borrowed;
-+};
-+
-+extern PyTypeObject PyPedGeometryType;
-+
-+PyPedGeometry *
-+py_ped_geometry_obj_new (PedGeometry* geom, PyPedDisk *disk, int borrowed);
-+
-+#endif /* PYGEOMETRY_H_INCLUDED */
-+
-diff -urP parted-1.4.14/python/test.py parted-1.4.14-python/python/test.py
---- parted-1.4.14/python/test.py Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14-python/python/test.py Thu Apr 19 16:10:26 2001
-@@ -0,0 +1,128 @@
-+#!/usr/bin/env python
-+
-+import sys
-+for dir in ('.', ''):
-+ try:
-+ sys.path.remove(dir)
-+ except ValueError:
-+ pass
-+sys.path = [ ".libs" ] + sys.path
-+
-+import parted
-+
-+def get_flags (part):
-+ string=""
-+ if not part.is_active ():
-+ return string
-+ first=1
-+ flag = parted.partition_flag_next (0)
-+ while flag:
-+ if part.get_flag (flag):
-+ string = string + parted.partition_flag_get_name (flag)
-+ if first:
-+ first = 0
-+ else:
-+ string = string + ", "
-+ flag = parted.partition_flag_next (flag)
-+ return string
-+
-+def do_print (disk):
-+ goodparts = { parted.PARTITION_PRIMARY : None,
-+ parted.PARTITION_EXTENDED : None,
-+ parted.PARTITION_LOGICAL : None,
-+ parted.PARTITION_FREESPACE : None }
-+
-+ print ("%s: %s length %ld, maximum "
-+ "primary partitions: %d" % (disk.dev.path, disk.dev.model,
-+ disk.dev.length, disk.max_primary_partition_count))
-+
-+ part = disk.next_partition()
-+ if part:
-+ print "Device Type Filesystem Start End Length Flags"
-+ print "------ ---- ---------- ----- --- ------ -----"
-+ while part:
-+ if goodparts.has_key(part.type):
-+ device = ""
-+ fs_type_name = ""
-+ if part.num > 0:
-+ device = "%s%d" % (disk.dev.path,
-+ part.num)
-+ if part.fs_type:
-+ fs_type_name = part.fs_type.name
-+ flags = get_flags (part)
-+ print ("%-9s %-12s %-12s %-10ld %-10ld %-10ld %7s"
-+ % (device, part.type_name, fs_type_name,
-+ part.geom.start, part.geom.end, part.geom.length,
-+ flags))
-+ part = disk.next_partition(part)
-+ print
-+
-+def exception_handler(exception):
-+ print "%s: %s" % (exception.type_string, exception.message)
-+ return parted.EXCEPTION_UNHANDLED
-+
-+parted.exception_set_handler (exception_handler)
-+dev = parted.device_get ('/tmp/fstest')
-+disk = dev.disk_open ()
-+
-+do_print (disk)
-+part = disk.get_partition (0)
-+fst = part.geom.file_system_probe ()
-+print "%s filesystem probed on device %s%d" % (fst.name,
-+ disk.dev.path,
-+ part.num)
-+
-+fs = part.geom.file_system_open ()
-+fs.check()
-+const = fs.get_resize_constraint()
-+print "minimum size for this filesystem is %d sectors" % const.min_size
-+print "start range from %d to %d" % (const.start_range.start, const.start_range.end)
-+print "end range from %d to %d" % (const.end_range.start, const.end_range.end)
-+
-+new_end = fs.geom.duplicate()
-+#new_end.set_end (const.min_size + 512)
-+new_end.set_end (const.end_range.end)
-+fs.resize (new_end)
-+
-+def foo():
-+ disk.delete_all ()
-+ do_print (disk)
-+
-+ fs_type = parted.file_system_type_get ("ext2")
-+
-+ sections = disk.dev.length / 4
-+
-+ # add a partition
-+ newp = disk.partition_new (parted.PARTITION_PRIMARY,
-+ fs_type, 0L, sections - 1)
-+ newp.set_flag (parted.PARTITION_RAID, 1)
-+ constraint = disk.constraint_any ()
-+ disk.add_partition (newp, constraint)
-+ do_print (disk)
-+
-+ # add another...
-+ newp = disk.partition_new (parted.PARTITION_PRIMARY,
-+ fs_type, sections, 2 * sections - 1)
-+ newp.set_flag (parted.PARTITION_RAID, 1)
-+ constraint = disk.constraint_any ()
-+ disk.add_partition (newp, constraint)
-+ do_print (disk)
-+
-+ # another
-+ newp = disk.partition_new (parted.PARTITION_PRIMARY,
-+ fs_type, 2 * sections, 3 * sections - 1)
-+ newp.set_flag (parted.PARTITION_RAID, 1)
-+ constraint = disk.constraint_any ()
-+ disk.add_partition (newp, constraint)
-+ do_print (disk)
-+
-+ # another...
-+ newp = disk.partition_new (parted.PARTITION_PRIMARY,
-+ fs_type, 3 * sections, 4 * sections - 1)
-+ newp.set_flag (parted.PARTITION_RAID, 1)
-+ constraint = disk.constraint_any ()
-+ disk.add_partition (newp, constraint)
-+ do_print (disk)
-+
-+ disk.write()
-+
diff --git a/sys-apps/parted/files/parted-1.4.14-r2-gentoo.diff b/sys-apps/parted/files/parted-1.4.14-r2-gentoo.diff
deleted file mode 100644
index db4dd1b881ca..000000000000
--- a/sys-apps/parted/files/parted-1.4.14-r2-gentoo.diff
+++ /dev/null
@@ -1,2336 +0,0 @@
-diff -urP parted-1.4.14.orig/Makefile.am parted-1.4.14/Makefile.am
---- parted-1.4.14.orig/Makefile.am Sat Apr 7 18:04:37 2001
-+++ parted-1.4.14/Makefile.am Wed Aug 1 19:26:25 2001
-@@ -1,4 +1,4 @@
--SUBDIRS = intl po libparted parted include doc debug
-+SUBDIRS = intl po libparted parted include doc debug @PYTHON_SUBDIR@
-
- EXTRA_DIST = ABOUT-NLS \
- AUTHORS \
-diff -urP parted-1.4.14.orig/configure.in parted-1.4.14/configure.in
---- parted-1.4.14.orig/configure.in Wed May 30 06:42:20 2001
-+++ parted-1.4.14/configure.in Wed Aug 1 20:22:53 2001
-@@ -65,6 +65,12 @@
- fi
- AC_SUBST(PARTED_LDFLAGS)
-
-+AC_ARG_WITH(python,
-+ [ --with-python build python module],
-+ with_python=$withval,
-+ with_python=no
-+)
-+
- dnl make libc threadsafe (not required for us, but useful other users of
- dnl libparted)
- CFLAGS="$CFLAGS -D_REENTRANT"
-@@ -174,6 +180,33 @@
- LIBS="$OLD_LIBS"
- fi
-
-+dnl Check for python
-+if test x$with_python = xyes; then
-+ AC_PATH_PROG(PYTHON, python python2.1 python2.0 python1.6 python1.5, no)
-+ if test x$PYTHON = xno; then
-+ AC_MSG_ERROR(
-+Python version 1.5 or higher could not be found which is required for
-+the --with-python. Either disable readline support with
-+--without-python or downloaded and install it from:
-+ http://www.python.org
-+ )
-+ fi
-+ changequote(<<,>>)dnl
-+ PYTHON_VERSION=`${PYTHON} -c "import sys; print sys.version[:3]"`
-+ PYTHON_PREFIX=`${PYTHON} -c "import sys; print sys.prefix"`
-+ PYTHON_EXEC_PREFIX=`${PYTHON} -c "import sys; print sys.exec_prefix"`
-+ changequote([,])dnl
-+ PYTHON_INCLUDES="-I${PYTHON_PREFIX}/include/python${PYTHON_VERSION} -I${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/config"
-+ pydynmoduledir="${PYTHON_EXEC_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"
-+ PYTHON_SUBDIR=python
-+fi
-+AC_SUBST(PYTHON_PREFIX)
-+AC_SUBST(PYTHON_EXEC_PREFIX)
-+AC_SUBST(PYTHON_VERSION)
-+AC_SUBST(PYTHON_INCLUDES)
-+AC_SUBST(PYTHON_SUBDIR)
-+AC_SUBST(pydynmoduledir)
-+
- AC_SUBST(PARTED_LIBS)
-
- dnl One day, gettext might support libtool...
-@@ -256,7 +289,7 @@
- LIBS="$OLD_LIBS"
- fi
-
--CFLAGS="$CFLAGS -W -Wall -Wno-unused -Wno-switch -Werror"
-+CFLAGS="$CFLAGS -W -Wall -Wno-unused -Wno-switch"
-
- AC_OUTPUT([
- Makefile
-@@ -271,6 +304,7 @@
- libparted/fs_reiserfs/Makefile
- libparted/fs_ufs/Makefile
- parted/Makefile
-+python/Makefile
- intl/Makefile
- doc/Makefile
- debug/Makefile
-diff -urP parted-1.4.14.orig/python/Makefile.am parted-1.4.14/python/Makefile.am
---- parted-1.4.14.orig/python/Makefile.am Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14/python/Makefile.am Wed Aug 1 19:26:25 2001
-@@ -0,0 +1,29 @@
-+AUTOMAKE_OPTIONS = 1.4 foreign
-+
-+partedincludedir = -I$(top_srcdir)/include
-+INCLUDES = $(partedincludedir) @PYTHON_INCLUDES@ @INTLINCS@
-+
-+noinst_LTLIBRARIES = libpartedmodule.la
-+libpartedmodule_la_SOURCES = partedmodule.c \
-+ pydevice.c \
-+ pydisk.c \
-+ pygeometry.c \
-+ pyexception.c \
-+ pyfilesystem.c \
-+ pyconstraint.c \
-+ partedmodule.h \
-+ pyconstraint.h \
-+ pydevice.h \
-+ pydisk.h \
-+ pyexception.h \
-+ pyfilesystem.h \
-+ pygeometry.h
-+
-+pythondir = $(pydynmoduledir)
-+python_PROGRAMS = partedmodule.so
-+partedmodule_so_SOURCES =
-+partedmodule_so_LDFLAGS = $(top_builddir)/libparted/libparted.la \
-+ -shared -Wl,-soname,partedmodule.so
-+
-+partedmodule.so: $(libpartedmodule_la_OBJECTS)
-+ $(LINK) -g -o $@ $^ $(partedmodule_so_LDFLAGS);
-diff -urP parted-1.4.14.orig/python/partedmodule.c parted-1.4.14/python/partedmodule.c
---- parted-1.4.14.orig/python/partedmodule.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14/python/partedmodule.c Wed Aug 1 19:26:25 2001
-@@ -0,0 +1,334 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <Python.h>
-+
-+#include "parted/parted.h"
-+
-+#include "partedmodule.h"
-+#include "pydevice.h"
-+#include "pydisk.h"
-+#include "pyexception.h"
-+#include "pygeometry.h"
-+#include "pyfilesystem.h"
-+#include "pyconstraint.h"
-+
-+/* global error object */
-+PyObject *PyPartedError;
-+
-+/* static global variables */
-+static PyObject *PyExceptionHandler;
-+static char *py_exception_string = NULL;
-+
-+/* common functions */
-+int
-+py_ped_exception_string_check (void)
-+{
-+ return (py_exception_string != NULL);
-+}
-+
-+
-+void
-+py_ped_exception_string_clear (void)
-+{
-+ if (py_exception_string != NULL) {
-+ free (py_exception_string);
-+ py_exception_string = NULL;
-+ }
-+}
-+
-+void
-+py_ped_set_error_from_ped_exception (void)
-+{
-+ if (py_exception_string != NULL) {
-+ PyErr_SetString(PyPartedError, py_exception_string);
-+ py_ped_exception_string_clear ();
-+ return;
-+ }
-+ PyErr_SetString(PyPartedError, "unknown error occured");
-+}
-+
-+/* toplevel implementation */
-+
-+static PedExceptionOption
-+py_exception_handler (PedException* ex)
-+{
-+ PyObject * result, * args = NULL;
-+ long rc;
-+ char * type;
-+ char * buf;
-+ int len;
-+
-+ if (py_exception_string != NULL)
-+ free (py_exception_string);
-+
-+ type = ped_exception_get_type_string (ex->type);
-+ len = strlen (type) + strlen (ex->message) + 3;
-+ buf = malloc (len);
-+ snprintf (buf, len, "%s: %s", type, ex->message);
-+ py_exception_string = buf;
-+
-+ if (PyExceptionHandler == NULL) {
-+ return PED_EXCEPTION_UNHANDLED;
-+ }
-+
-+ args = Py_BuildValue("(N)", (PyObject *) py_ped_exception_obj_new (ex));
-+
-+ result = PyEval_CallObject(PyExceptionHandler, args);
-+ Py_XDECREF(args);
-+
-+ if (result == NULL) {
-+ PyErr_Print();
-+ PyErr_Clear();
-+ return PED_EXCEPTION_UNHANDLED;
-+ }
-+
-+ if (!PyInt_Check (result)) {
-+ fprintf (stderr,
-+ "ERROR: python exception handler did not "
-+ "return expected int value\n");
-+ return PED_EXCEPTION_UNHANDLED;
-+ }
-+
-+ rc = PyInt_AsLong (result);
-+ Py_DECREF (result);
-+ return (PedExceptionOption) rc;
-+}
-+
-+static PyObject *
-+py_ped_exception_set_handler (PyObject * self, PyObject * args)
-+{
-+ PyObject *cb;
-+
-+ /* if we already have a callback, releae it */
-+ if (PyExceptionHandler != NULL) {
-+ Py_DECREF (PyExceptionHandler);
-+ PyExceptionHandler = NULL;
-+ }
-+
-+ if (!PyArg_ParseTuple(args, "O", &cb))
-+ return NULL;
-+
-+ if (!PyCallable_Check (cb)) {
-+ PyErr_SetString(PyExc_TypeError, "parameter must be callable");
-+ return NULL;
-+ }
-+ Py_INCREF (cb);
-+ PyExceptionHandler = cb;
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_device_get (PyObject * self, PyObject * args)
-+{
-+ PyPedDevice *d;
-+ PedDevice *dev;
-+ char *path;
-+
-+ if (!PyArg_ParseTuple(args, "s", &path))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if ((dev = ped_device_get (path)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ d = (PyPedDevice *) PyObject_NEW(PyObject, &PyPedDeviceType);
-+ d->dev = dev;
-+ return (PyObject *) d;
-+}
-+
-+static PyObject *
-+py_ped_file_system_type_get (PyObject * self, PyObject * args)
-+{
-+ char *type;
-+ PedFileSystemType *fst;
-+
-+ if (!PyArg_ParseTuple(args, "s", &type)) {
-+ return NULL;
-+ }
-+
-+ if ((fst = ped_file_system_type_get (type)) == NULL) {
-+ PyErr_SetString(PyPartedError, "unknown file system type");
-+ return NULL;
-+ }
-+
-+ return (PyObject *) py_ped_file_system_type_obj_new (fst);
-+}
-+
-+static PyObject *
-+py_ped_file_system_type_get_next (PyObject * self, PyObject * args)
-+{
-+ PyPedFileSystemTypeObj *pyfst = NULL;
-+ PedFileSystemType *fst;
-+
-+ if (!PyArg_ParseTuple(args, "|O!", &PyPedFileSystemTypeType, &pyfst)) {
-+ PyErr_SetString(PyExc_TypeError,
-+ "optional parameter must be a "
-+ "PedFileSystemType");
-+ return NULL;
-+ }
-+
-+ fst = ped_file_system_type_get_next (pyfst ? pyfst->fs_type : NULL);
-+ if (fst)
-+ return (PyObject *) py_ped_file_system_type_obj_new (fst);
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_partition_flag_next (PyObject *obj, PyObject * args)
-+{
-+ int flag, next;
-+
-+ if (!PyArg_ParseTuple(args, "i", &flag))
-+ return NULL;
-+
-+ next = ped_partition_flag_next (flag);
-+
-+ return PyInt_FromLong (next);
-+}
-+
-+static PyObject *
-+py_ped_partition_flag_get_by_name (PyObject *obj, PyObject * args)
-+{
-+ char *name;
-+ int flag;
-+
-+ if (!PyArg_ParseTuple(args, "s", &name))
-+ return NULL;
-+
-+ flag = ped_partition_flag_get_by_name (name);
-+
-+ return PyInt_FromLong (flag);
-+}
-+
-+static PyObject *
-+py_ped_partition_flag_get_name (PyObject *obj, PyObject * args)
-+{
-+ int flag;
-+ const char *name;
-+
-+ if (!PyArg_ParseTuple(args, "i", &flag))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ name = ped_partition_flag_get_name (flag);
-+ if (py_ped_exception_string_check ()) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return PyString_FromString (name);
-+}
-+
-+static struct PyMethodDef PyPedModuleMethods[] = {
-+ { "device_get",
-+ (PyCFunction) py_ped_device_get, METH_VARARGS, NULL },
-+ { "exception_set_handler",
-+ (PyCFunction) py_ped_exception_set_handler,
-+ METH_VARARGS, NULL },
-+ { "file_system_type_get",
-+ (PyCFunction) py_ped_file_system_type_get,
-+ METH_VARARGS, NULL },
-+ { "file_system_type_get_next",
-+ (PyCFunction) py_ped_file_system_type_get_next,
-+ METH_VARARGS, NULL },
-+ { "partition_flag_next",
-+ (PyCFunction) py_ped_partition_flag_next,
-+ METH_VARARGS, NULL },
-+ { "partition_flag_get_by_name",
-+ (PyCFunction) py_ped_partition_flag_get_by_name,
-+ METH_VARARGS, NULL },
-+ { "partition_flag_get_name",
-+ (PyCFunction) py_ped_partition_flag_get_name,
-+ METH_VARARGS, NULL },
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+void initparted(void) {
-+ PyObject *m, *d, *o;
-+
-+ if (!ped_init ())
-+ Py_FatalError("couldn't initialized parted");
-+
-+ m = Py_InitModule("parted", PyPedModuleMethods);
-+ d = PyModule_GetDict(m);
-+
-+ /* enum registration */
-+#define REGISTER_ENUM(val) \
-+ PyDict_SetItemString(d, #val, o=PyInt_FromLong(PED_ ## val)); \
-+ Py_DECREF(o);
-+
-+ REGISTER_ENUM(DEVICE_UNKNOWN);
-+ REGISTER_ENUM(DEVICE_SCSI);
-+ REGISTER_ENUM(DEVICE_IDE);
-+ REGISTER_ENUM(DEVICE_DAC960);
-+ REGISTER_ENUM(DEVICE_CPQARRAY);
-+
-+ REGISTER_ENUM(PARTITION_PRIMARY);
-+ REGISTER_ENUM(PARTITION_LOGICAL);
-+ REGISTER_ENUM(PARTITION_EXTENDED);
-+ REGISTER_ENUM(PARTITION_FREESPACE);
-+ REGISTER_ENUM(PARTITION_METADATA);
-+
-+ REGISTER_ENUM(PARTITION_BOOT);
-+ REGISTER_ENUM(PARTITION_ROOT);
-+ REGISTER_ENUM(PARTITION_SWAP);
-+ REGISTER_ENUM(PARTITION_HIDDEN);
-+ REGISTER_ENUM(PARTITION_RAID);
-+ REGISTER_ENUM(PARTITION_LVM);
-+ REGISTER_ENUM(PARTITION_LBA);
-+
-+ REGISTER_ENUM(PARTITION_FIRST_FLAG);
-+ REGISTER_ENUM(PARTITION_LAST_FLAG);
-+
-+ REGISTER_ENUM(DISK_TYPE_EXTENDED);
-+ REGISTER_ENUM(DISK_TYPE_PARTITION_NAME);
-+
-+ REGISTER_ENUM(EXCEPTION_INFORMATION);
-+ REGISTER_ENUM(EXCEPTION_WARNING);
-+ REGISTER_ENUM(EXCEPTION_ERROR);
-+ REGISTER_ENUM(EXCEPTION_FATAL);
-+ REGISTER_ENUM(EXCEPTION_BUG);
-+ REGISTER_ENUM(EXCEPTION_NO_FEATURE);
-+
-+ REGISTER_ENUM(EXCEPTION_UNHANDLED);
-+ REGISTER_ENUM(EXCEPTION_YES);
-+ REGISTER_ENUM(EXCEPTION_NO);
-+ REGISTER_ENUM(EXCEPTION_OK);
-+ REGISTER_ENUM(EXCEPTION_RETRY);
-+ REGISTER_ENUM(EXCEPTION_IGNORE);
-+ REGISTER_ENUM(EXCEPTION_CANCEL);
-+
-+ REGISTER_ENUM(EXCEPTION_OK_CANCEL);
-+ REGISTER_ENUM(EXCEPTION_YES_NO);
-+ REGISTER_ENUM(EXCEPTION_YES_NO_CANCEL);
-+ REGISTER_ENUM(EXCEPTION_IGNORE_CANCEL);
-+ REGISTER_ENUM(EXCEPTION_RETRY_CANCEL);
-+ REGISTER_ENUM(EXCEPTION_RETRY_IGNORE_CANCEL);
-+ /* end enum registration */
-+
-+ /* register the exception handler marhaller function */
-+ ped_exception_set_handler (py_exception_handler);
-+
-+ /* set up our exception class */
-+ PyPartedError = PyErr_NewException("parted.error", NULL, NULL);
-+ PyDict_SetItemString(d, "error", PyPartedError);
-+ Py_DECREF(PyPartedError);
-+}
-diff -urP parted-1.4.14.orig/python/partedmodule.h parted-1.4.14/python/partedmodule.h
---- parted-1.4.14.orig/python/partedmodule.h Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14/python/partedmodule.h Wed Aug 1 19:26:25 2001
-@@ -0,0 +1,25 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#ifndef PARTEDMODULE_H_INCLUDED
-+#define PARTEDMODULE_H_INCLUDED
-+
-+#include <Python.h>
-+
-+extern PyObject *PyPartedError;
-+int py_ped_exception_string_check (void);
-+void py_ped_exception_string_clear (void);
-+extern void py_ped_set_error_from_ped_exception (void);
-+
-+#endif /* PARTEDMODULE_H_INCLUDED */
-diff -urP parted-1.4.14.orig/python/pyconstraint.c parted-1.4.14/python/pyconstraint.c
---- parted-1.4.14.orig/python/pyconstraint.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14/python/pyconstraint.c Wed Aug 1 19:26:25 2001
-@@ -0,0 +1,109 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+*/
-+
-+#include "partedmodule.h"
-+#include "pygeometry.h"
-+#include "pyconstraint.h"
-+
-+static void py_ped_constraint_dealloc (PyPedConstraint * c);
-+static PyObject * py_ped_constraint_getattr (PyPedConstraint * c, char * name);
-+
-+static char PyPedConstraintType__doc__[] = "This is the PartEd constraint "
-+ "object";
-+PyTypeObject PyPedConstraintType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedConstraint", /* tp_name */
-+ sizeof(PyPedConstraint), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_constraint_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_constraint_getattr, /* tp_getattr */
-+ 0, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /* tp_hash */
-+ 0, /* tp_call */
-+ 0, /* tp_str */
-+ 0, /* tp_getattro */
-+ 0, /* tp_setattro */
-+ 0, /* tp_as_buffer */
-+ 0L, /* tp_flags */
-+ PyPedConstraintType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+static PyObject * py_ped_constraint_duplicate (PyPedConstraint * c,
-+ PyObject * args);
-+
-+static struct PyMethodDef PyPedConstraintMethods[] = {
-+ { "duplicate",
-+ (PyCFunction) py_ped_constraint_duplicate,
-+ METH_VARARGS, NULL },
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+static void
-+py_ped_constraint_dealloc (PyPedConstraint * c)
-+{
-+ if (!c->borrowed)
-+ ped_constraint_destroy (c->constraint);
-+ Py_XDECREF (c->disk);
-+ PyMem_DEL(c);
-+}
-+
-+static PyObject *
-+py_ped_constraint_duplicate (PyPedConstraint * c, PyObject * args)
-+{
-+ PedConstraint *cst;
-+
-+ cst = ped_constraint_duplicate (c->constraint);
-+ return (PyObject *) py_ped_constraint_obj_new (cst, c->disk, 0);
-+}
-+
-+static PyObject *
-+py_ped_constraint_getattr (PyPedConstraint * c, char * name)
-+{
-+ if (!strcmp (name, "start_range"))
-+ return (PyObject *)
-+ py_ped_geometry_obj_new (c->constraint->start_range,
-+ c->disk, 1);
-+ if (!strcmp (name, "end_range"))
-+ return (PyObject *)
-+ py_ped_geometry_obj_new (c->constraint->end_range,
-+ c->disk, 1);
-+ if (!strcmp (name, "min_size"))
-+ return (PyObject *)
-+ PyLong_FromLongLong (c->constraint->min_size);
-+
-+ return Py_FindMethod (PyPedConstraintMethods, (PyObject *) c, name);
-+}
-+
-+PyPedConstraint *
-+py_ped_constraint_obj_new (PedConstraint *c, PyPedDisk *disk, int borrowed)
-+{
-+ PyPedConstraint *con;
-+
-+ con = (PyPedConstraint *) PyObject_NEW(PyObject, &PyPedConstraintType);
-+ con->constraint = c;
-+ con->borrowed = borrowed;
-+ con->disk = disk;
-+ Py_INCREF (disk);
-+
-+ return con;
-+}
-diff -urP parted-1.4.14.orig/python/pyconstraint.h parted-1.4.14/python/pyconstraint.h
---- parted-1.4.14.orig/python/pyconstraint.h Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14/python/pyconstraint.h Wed Aug 1 19:26:25 2001
-@@ -0,0 +1,38 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+*/
-+
-+#ifndef PYCONSTRAINT_H_INCLUDED
-+#define PYCONSTRAINT_H_INCLUDED
-+
-+#include <Python.h>
-+#include "parted/constraint.h"
-+#include "pydisk.h"
-+
-+typedef struct _PyPedConstraint PyPedConstraint;
-+
-+struct _PyPedConstraint {
-+ PyObject_HEAD;
-+ PedConstraint *constraint;
-+ PyPedDisk *disk;
-+ int borrowed;
-+};
-+
-+extern PyTypeObject PyPedConstraintType;
-+
-+extern PyPedConstraint * py_ped_constraint_obj_new (PedConstraint *c,
-+ PyPedDisk *part,
-+ int borrowed);
-+
-+#endif /* PYCONSTRAINT_H_INCLUDED */
-diff -urP parted-1.4.14.orig/python/pydevice.c parted-1.4.14/python/pydevice.c
---- parted-1.4.14.orig/python/pydevice.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14/python/pydevice.c Wed Aug 1 19:26:25 2001
-@@ -0,0 +1,152 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+#include "partedmodule.h"
-+#include "pydevice.h"
-+#include "pydisk.h"
-+
-+static void py_ped_device_dealloc (PyPedDevice * s);
-+static PyObject * py_ped_device_getattr (PyPedDevice * s, char * name);
-+
-+static char PyPedDeviceType__doc__[] = "This is the PartEd device object";
-+PyTypeObject PyPedDeviceType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedDevice", /* tp_name */
-+ sizeof(PyPedDevice), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_device_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_device_getattr, /* tp_getattr */
-+ 0, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /* tp_hash */
-+ 0, /* tp_call */
-+ 0, /* tp_str */
-+ 0, /* tp_getattro */
-+ 0, /* tp_setattro */
-+ 0, /* tp_as_buffer */
-+ 0L, /* tp_flags */
-+ PyPedDeviceType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+static PyObject * py_ped_device_open (PyPedDevice * s, PyObject * args);
-+static PyObject * py_ped_device_close (PyPedDevice * s, PyObject * args);
-+static PyObject * py_ped_device_sync (PyPedDevice * s, PyObject * args);
-+static PyObject * py_ped_disk_open (PyPedDevice * s, PyObject * args);
-+
-+static struct PyMethodDef PyPedDeviceMethods[] = {
-+ { "open", (PyCFunction) py_ped_device_open, METH_VARARGS, NULL },
-+ { "close", (PyCFunction) py_ped_device_close, METH_VARARGS, NULL },
-+ { "sync", (PyCFunction) py_ped_device_sync, METH_VARARGS, NULL },
-+ { "disk_open", (PyCFunction) py_ped_disk_open, METH_VARARGS, NULL },
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+/* device implementation */
-+
-+PyPedDevice * py_ped_device_new (PedDevice *dev)
-+{
-+ PyPedDevice *d;
-+
-+ d = (PyPedDevice *) PyObject_NEW(PyObject, &PyPedDeviceType);
-+ d->dev = dev;
-+ return d;
-+}
-+
-+static void
-+py_ped_device_dealloc (PyPedDevice * s)
-+{
-+ /* s->dev will be destroyed if ped_device_free_all() is called */
-+ /* ped_device_destroy (s->dev); */
-+ PyMem_DEL(s);
-+}
-+
-+static PyObject *
-+py_ped_device_getattr (PyPedDevice * d, char * name)
-+{
-+ if (!strcmp (name, "length"))
-+ return PyLong_FromLongLong (d->dev->length);
-+ else if (!strcmp (name, "model"))
-+ return PyString_FromString (d->dev->model);
-+ else if (!strcmp (name, "path"))
-+ return PyString_FromString (d->dev->path);
-+ else if (!strcmp (name, "sector_size"))
-+ return PyInt_FromLong (d->dev->sector_size);
-+ else if (!strcmp (name, "type"))
-+ return PyInt_FromLong (d->dev->type);
-+ return Py_FindMethod (PyPedDeviceMethods, (PyObject *) d, name);
-+}
-+
-+static PyObject *
-+py_ped_device_open (PyPedDevice * s, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_device_open (s->dev)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_device_close (PyPedDevice * s, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_device_close (s->dev)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_device_sync (PyPedDevice * s, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_device_sync (s->dev)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_disk_open (PyPedDevice * self, PyObject * args)
-+{
-+ PyPedDevice *dev;
-+ PyPedDisk *d;
-+ PedDisk *disk;
-+
-+ py_ped_exception_string_clear ();
-+ if ((disk = ped_disk_open (self->dev)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ d = (PyPedDisk *) PyObject_NEW(PyObject, &PyPedDiskType);
-+ d->disk = disk;
-+ return (PyObject *) d;
-+}
-+
-diff -urP parted-1.4.14.orig/python/pydevice.h parted-1.4.14/python/pydevice.h
---- parted-1.4.14.orig/python/pydevice.h Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14/python/pydevice.h Wed Aug 1 19:26:25 2001
-@@ -0,0 +1,33 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#ifndef PYDEVICE_H_INCLUDED
-+#define PYDEVICE_H_INCLUDED
-+
-+#include <Python.h>
-+
-+#include "parted/device.h"
-+
-+extern PyTypeObject PyPedDeviceType;
-+typedef struct _PyPedDevice PyPedDevice;
-+
-+struct _PyPedDevice {
-+ PyObject_HEAD;
-+ PedDevice *dev;
-+};
-+
-+PyPedDevice * py_ped_device_new (PedDevice *dev);
-+
-+#endif /* PYDEVICE_H_INCLUDED */
-+
-diff -urP parted-1.4.14.orig/python/pydisk.c parted-1.4.14/python/pydisk.c
---- parted-1.4.14.orig/python/pydisk.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14/python/pydisk.c Wed Aug 1 19:26:25 2001
-@@ -0,0 +1,631 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include "partedmodule.h"
-+#include "pydisk.h"
-+#include "pydevice.h"
-+#include "pygeometry.h"
-+#include "pyfilesystem.h"
-+#include "pyconstraint.h"
-+
-+/* disk python object */
-+static void py_ped_disk_dealloc (PyPedDisk * d);
-+static PyObject * py_ped_disk_getattr (PyPedDisk * d, char * name);
-+
-+static char PyPedDiskType__doc__[] = "This is the PartEd disk object";
-+PyTypeObject PyPedDiskType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedDisk", /* tp_name */
-+ sizeof(PyPedDisk), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_disk_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_disk_getattr, /* tp_getattr */
-+ 0, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /* tp_hash */
-+ 0, /* tp_call */
-+ 0, /* tp_str */
-+ 0, /* tp_getattro */
-+ 0, /* tp_setattro */
-+ 0, /* tp_as_buffer */
-+ 0L, /* tp_flags */
-+ PyPedDiskType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+static PyObject * py_ped_disk_next_partition (PyPedDisk * d, PyObject * args);
-+static PyObject * py_ped_disk_write (PyPedDisk * d, PyObject * args);
-+static PyObject * py_ped_disk_read (PyPedDisk * d, PyObject * args);
-+static PyObject * py_ped_disk_delete_partition (PyPedDisk * d, PyObject * args);
-+static PyObject * py_ped_disk_delete_all (PyPedDisk * d, PyObject * args);
-+static PyObject * py_ped_disk_add_partition (PyPedDisk * d, PyObject * args);
-+static PyObject * py_ped_disk_get_partition (PyPedDisk * d, PyObject * args);
-+static PyObject * py_ped_constraint_any (PyPedDisk * self, PyObject * args);
-+static PyObject * py_ped_geometry_new (PyPedDisk * self, PyObject * args);
-+static PyObject * py_ped_partition_new (PyPedDisk * self, PyObject * args);
-+static PyObject * py_ped_disk_minimize_extended_partition (PyPedDisk * self, PyObject * args);
-+static PyObject * py_ped_disk_maximize_partition (PyPedDisk * self, PyObject * args);
-+static PyObject * py_ped_disk_is_busy (PyPedDisk * d, PyObject * args);
-+
-+static struct PyMethodDef PyPedDiskMethods[] = {
-+ { "next_partition", (PyCFunction) py_ped_disk_next_partition, METH_VARARGS, NULL },
-+ { "read", (PyCFunction) py_ped_disk_read, METH_VARARGS, NULL },
-+ { "write", (PyCFunction) py_ped_disk_write, METH_VARARGS, NULL },
-+ { "delete_partition", (PyCFunction) py_ped_disk_delete_partition, METH_VARARGS, NULL },
-+ { "delete_all", (PyCFunction) py_ped_disk_delete_all, METH_VARARGS, NULL },
-+ { "add_partition", (PyCFunction) py_ped_disk_add_partition, METH_VARARGS, NULL },
-+ { "get_partition", (PyCFunction) py_ped_disk_get_partition, METH_VARARGS, NULL },
-+ { "constraint_any", (PyCFunction) py_ped_constraint_any, METH_VARARGS, NULL },
-+ { "geometry_new", (PyCFunction) py_ped_geometry_new, METH_VARARGS, NULL },
-+ { "partition_new", (PyCFunction) py_ped_partition_new, METH_VARARGS, NULL },
-+ { "minimize_extended_partition", (PyCFunction) py_ped_disk_minimize_extended_partition, METH_VARARGS, NULL },
-+ { "maximize_partition", (PyCFunction) py_ped_disk_maximize_partition, METH_VARARGS, NULL },
-+ { "is_busy", (PyCFunction) py_ped_disk_is_busy, METH_VARARGS, NULL },
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+/* partition python object */
-+
-+static void py_ped_partition_dealloc (PyPedPartition * p);
-+static PyObject * py_ped_partition_getattr (PyPedPartition * p, char * name);
-+
-+static char PyPedPartitionType__doc__[] = "This is the PartEd partition object";
-+PyTypeObject PyPedPartitionType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedPartition", /* tp_name */
-+ sizeof(PyPedPartition), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_partition_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_partition_getattr, /* tp_getattr */
-+ 0, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /* tp_hash */
-+ 0, /* tp_call */
-+ 0, /* tp_str */
-+ 0, /* tp_getattro */
-+ 0, /* tp_setattro */
-+ 0, /* tp_as_buffer */
-+ 0L, /* tp_flags */
-+ PyPedPartitionType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+static PyObject * py_ped_partition_is_flag_available (PyPedPartition *p, PyObject * args);
-+static PyObject * py_ped_partition_set_flag (PyPedPartition * self, PyObject * args);
-+static PyObject * py_ped_partition_get_flag (PyPedPartition * self, PyObject * args);
-+static PyObject * py_ped_partition_is_active (PyPedPartition * self, PyObject * args);
-+static PyObject * py_ped_partition_set_system (PyPedPartition * self, PyObject * args);
-+static PyObject * py_ped_partition_set_name (PyPedPartition * self, PyObject * args);
-+static PyObject * py_ped_partition_get_name (PyPedPartition * self, PyObject * args);
-+static PyObject * py_ped_partition_is_busy (PyPedPartition * self, PyObject * args);
-+
-+static struct PyMethodDef PyPedPartitionMethods[] = {
-+ { "is_flag_available", (PyCFunction) py_ped_partition_is_flag_available, METH_VARARGS, NULL },
-+ { "get_flag", (PyCFunction) py_ped_partition_get_flag, METH_VARARGS, NULL },
-+ { "set_flag", (PyCFunction) py_ped_partition_set_flag, METH_VARARGS, NULL },
-+ { "is_active", (PyCFunction) py_ped_partition_is_active, METH_VARARGS, NULL },
-+ { "set_system", (PyCFunction) py_ped_partition_set_system, METH_VARARGS, NULL },
-+ { "set_name", (PyCFunction) py_ped_partition_set_name, METH_VARARGS, NULL },
-+ { "get_name", (PyCFunction) py_ped_partition_get_name, METH_VARARGS, NULL },
-+ { "is_busy", (PyCFunction) py_ped_partition_is_busy, METH_VARARGS, NULL },
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+/* disk implementation */
-+
-+static void
-+py_ped_disk_dealloc (PyPedDisk * d)
-+{
-+ ped_disk_close (d->disk);
-+ PyMem_DEL(d);
-+}
-+
-+static PyObject *
-+py_ped_disk_getattr (PyPedDisk * d, char * name)
-+{
-+ if (!strcmp (name, "dev"))
-+ return (PyObject *) py_ped_device_new (d->disk->dev);
-+ if (!strcmp (name, "max_primary_partition_count")) {
-+ int num;
-+
-+ py_ped_exception_string_clear ();
-+ num = ped_disk_get_max_primary_partition_count (d->disk);
-+ if (num == 0) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+ return PyInt_FromLong (num);
-+ }
-+ if (!strcmp (name, "extended_partition")) {
-+ PedPartition *ppart;
-+
-+ py_ped_exception_string_clear ();
-+ ppart = ped_disk_extended_partition (d->disk);
-+ if (ppart != NULL)
-+ return (PyObject *) py_ped_partition_obj_new (ppart, d, 1);
-+
-+ if (py_ped_exception_string_check ()) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+ }
-+
-+ return Py_FindMethod (PyPedDiskMethods, (PyObject *) d, name);
-+}
-+
-+static PyObject *
-+py_ped_disk_next_partition (PyPedDisk * d, PyObject * args)
-+{
-+ PyPedPartition *part = NULL;
-+ PedPartition *ppart;
-+
-+ if (!PyArg_ParseTuple(args, "|O!", &PyPedPartitionType, &part)) {
-+ PyErr_SetString(PyExc_TypeError,
-+ "optional parameter must be a PedPartition");
-+ return NULL;
-+ }
-+
-+ ppart = ped_disk_next_partition (d->disk, part ? part->part : NULL);
-+ if (ppart != NULL)
-+ return (PyObject *) py_ped_partition_obj_new (ppart, d, 1);
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_disk_read (PyPedDisk * d, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_disk_write (d->disk)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_disk_write (PyPedDisk * d, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_disk_write (d->disk)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_disk_delete_partition (PyPedDisk * d, PyObject * args)
-+{
-+ PyPedPartition *part;
-+
-+ if (!PyArg_ParseTuple(args, "O!", &PyPedPartitionType, &part)) {
-+ PyErr_SetString(PyExc_TypeError, "PedPartition expected");
-+ return NULL;
-+ }
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_disk_delete_partition (d->disk, part->part)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+ /* the partition structure is freed as part of the
-+ delete_partition call. Protect from the double free
-+ by marking it borrowed */
-+ part->borrowed = 1;
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+
-+static PyObject *
-+py_ped_disk_delete_all (PyPedDisk * d, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_disk_delete_all (d->disk)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_disk_add_partition (PyPedDisk * d, PyObject * args)
-+{
-+ PyPedPartition *part;
-+ PyPedConstraint *constraint;
-+
-+ if (!PyArg_ParseTuple(args, "O!O!", &PyPedPartitionType, &part,
-+ &PyPedConstraintType, &constraint)) {
-+ PyErr_SetString(PyExc_TypeError, "bad argument");
-+ return NULL;
-+ }
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_disk_add_partition (d->disk, part->part,
-+ constraint->constraint)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ /* the disk takes ownership of the data in this partition
-+ when added, protect from double free */
-+ part->borrowed = 1;
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_disk_get_partition_by_sector (PyPedDisk * d, PyObject * args)
-+{
-+ PedPartition *part;
-+ PedSector sect;
-+
-+ if (!PyArg_ParseTuple(args, "L", &sect))
-+ return NULL;
-+
-+ if ((part = ped_disk_get_partition_by_sector (d->disk, sect)) == NULL) {
-+ PyErr_SetString(PyPartedError, "partition not found");
-+ return NULL;
-+ }
-+
-+ return (PyObject *) py_ped_partition_obj_new (part, d, 1);
-+}
-+
-+static PyObject *
-+py_ped_disk_get_partition (PyPedDisk * d, PyObject * args)
-+{
-+ PedPartition *part;
-+ int num;
-+
-+ if (!PyArg_ParseTuple(args, "i", &num))
-+ return NULL;
-+
-+ if ((part = ped_disk_get_partition (d->disk, num)) == NULL) {
-+ PyErr_SetString(PyPartedError, "partition not found");
-+ return NULL;
-+ }
-+
-+ return (PyObject *) py_ped_partition_obj_new (part, d, 1);
-+}
-+
-+static PyObject *
-+py_ped_partition_new (PyPedDisk * self, PyObject * args)
-+{
-+ PyPedFileSystemTypeObj *fs_type;
-+ PedSector start, end;
-+ PedPartition *part;
-+ PedPartitionType type;
-+ PyPedPartition *pypart;
-+
-+ if (!PyArg_ParseTuple(args, "iO!LL",
-+ &type,
-+ &PyPedFileSystemTypeType, &fs_type,
-+ &start, &end)) {
-+ return NULL;
-+ }
-+
-+ py_ped_exception_string_clear ();
-+ part = ped_partition_new (self->disk, type, fs_type->fs_type,
-+ start, end);
-+ if (part == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ pypart = py_ped_partition_obj_new (part, self, 0);
-+
-+ return (PyObject *) pypart;
-+}
-+
-+static PyObject *
-+py_ped_constraint_any (PyPedDisk * self, PyObject * args)
-+{
-+ PyPedDisk *disk;
-+ PedConstraint *constraint;
-+ PyPedConstraint *pyconstraint;
-+
-+ py_ped_exception_string_clear ();
-+ constraint = ped_constraint_any (self->disk);
-+ if (constraint == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ pyconstraint = py_ped_constraint_obj_new (constraint, self, 0);
-+
-+ return (PyObject *) pyconstraint;
-+}
-+
-+static PyObject *
-+py_ped_geometry_new (PyPedDisk * self, PyObject * args)
-+{
-+ PedSector start, length;
-+ PedGeometry *geom;
-+ PyPedGeometry *pygeom;
-+
-+ if (!PyArg_ParseTuple(args, "LL", &start, &length)) {
-+ return NULL;
-+ }
-+
-+ py_ped_exception_string_clear ();
-+ geom = ped_geometry_new (self->disk, start, length);
-+ if (geom == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ pygeom = py_ped_geometry_obj_new (geom, self, 0);
-+ pygeom->disk = self;
-+ Py_INCREF (self);
-+
-+ return (PyObject *) pygeom;
-+}
-+
-+static PyObject *
-+py_ped_disk_minimize_extended_partition (PyPedDisk * self, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_disk_minimize_extended_partition (self->disk)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+
-+}
-+
-+static PyObject *
-+py_ped_disk_maximize_partition (PyPedDisk * self, PyObject * args)
-+{
-+ PyPedPartition *part;
-+ PyPedConstraint *constraint;
-+
-+ if (!PyArg_ParseTuple(args, "O!O!", &PyPedPartitionType, &part,
-+ &PyPedConstraintType, &constraint)) {
-+ return NULL;
-+ }
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_disk_maximize_partition (self->disk, part->part,
-+ constraint->constraint)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_disk_is_busy (PyPedDisk *d, PyObject * args)
-+{
-+ int state;
-+
-+ py_ped_exception_string_clear ();
-+ state = ped_disk_is_busy (d->disk);
-+ if (py_ped_exception_string_check ()) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return PyInt_FromLong (state);
-+}
-+
-+/* partition implementation */
-+
-+PyPedPartition *
-+py_ped_partition_obj_new (PedPartition *part, PyPedDisk *disk, int borrowed)
-+{
-+ PyPedPartition *p;
-+
-+ p = (PyPedPartition *) PyObject_NEW(PyObject, &PyPedPartitionType);
-+ p->part = part;
-+ p->borrowed = borrowed;
-+ p->disk = disk;
-+ Py_INCREF (disk);
-+
-+ return p;
-+}
-+
-+static void
-+py_ped_partition_dealloc (PyPedPartition * p)
-+{
-+ if (!p->borrowed)
-+ ped_partition_destroy (p->part);
-+ Py_XDECREF (p->disk);
-+ PyMem_DEL(p);
-+}
-+
-+static PyObject *
-+py_ped_partition_getattr (PyPedPartition * p, char * name)
-+{
-+ if (!strcmp (name, "num"))
-+ return PyInt_FromLong (p->part->num);
-+ if (!strcmp (name, "type"))
-+ return PyInt_FromLong (p->part->type);
-+ if (!strcmp (name, "type_name"))
-+ return PyString_FromString (
-+ ped_partition_type_get_name (p->part->type));
-+ if (!strcmp (name, "geom"))
-+ return (PyObject *) py_ped_geometry_obj_new (&p->part->geom, p->disk, 1);
-+ if (!strcmp (name, "fs_type")) {
-+ if (p->part->fs_type)
-+ return (PyObject *)
-+ py_ped_file_system_type_obj_new (p->part->fs_type);
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+ }
-+ return Py_FindMethod (PyPedPartitionMethods, (PyObject *) p, name);
-+}
-+
-+static PyObject *
-+py_ped_partition_is_flag_available (PyPedPartition *p, PyObject * args)
-+{
-+ int av, flag;
-+
-+ if (!PyArg_ParseTuple(args, "i", &flag))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ av = ped_partition_is_flag_available (p->part, flag);
-+ if (py_ped_exception_string_check ()) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return PyInt_FromLong (av);
-+}
-+
-+static PyObject *
-+py_ped_partition_set_flag (PyPedPartition *p, PyObject * args)
-+{
-+ int flag, state;
-+
-+ if (!PyArg_ParseTuple(args, "ii", &flag, &state))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_partition_set_flag (p->part, flag, state)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_partition_get_flag (PyPedPartition *p, PyObject * args)
-+{
-+ int flag, state;
-+
-+ if (!PyArg_ParseTuple(args, "i", &flag))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ state = ped_partition_get_flag (p->part, flag);
-+ if (py_ped_exception_string_check ()) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return PyInt_FromLong (state);
-+}
-+
-+
-+static PyObject *
-+py_ped_partition_is_active (PyPedPartition *p, PyObject * args)
-+{
-+ int state;
-+
-+ py_ped_exception_string_clear ();
-+ state = ped_partition_is_active (p->part);
-+ if (py_ped_exception_string_check ()) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return PyInt_FromLong (state);
-+}
-+
-+static PyObject *
-+py_ped_partition_set_system (PyPedPartition *p, PyObject * args)
-+{
-+ PyPedFileSystemTypeObj *fs_type;
-+
-+ if (!PyArg_ParseTuple(args, "O!",
-+ &PyPedFileSystemTypeType, &fs_type))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_partition_set_system (p->part, fs_type->fs_type)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+
-+static PyObject *
-+py_ped_partition_set_name (PyPedPartition *p, PyObject * args)
-+{
-+ char *name;
-+
-+ if (!PyArg_ParseTuple(args, "s", &name))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_partition_set_name (p->part, name)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_partition_get_name (PyPedPartition *p, PyObject * args)
-+{
-+ const char *name;
-+
-+ py_ped_exception_string_clear ();
-+ if ((name = ped_partition_get_name (p->part)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return PyString_FromString (name);
-+}
-+
-+
-+static PyObject *
-+py_ped_partition_is_busy (PyPedPartition *p, PyObject * args)
-+{
-+ int state;
-+
-+ py_ped_exception_string_clear ();
-+ state = ped_partition_is_busy (p->part);
-+ if (py_ped_exception_string_check ()) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return PyInt_FromLong (state);
-+}
-diff -urP parted-1.4.14.orig/python/pydisk.h parted-1.4.14/python/pydisk.h
---- parted-1.4.14.orig/python/pydisk.h Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14/python/pydisk.h Wed Aug 1 19:26:25 2001
-@@ -0,0 +1,45 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#ifndef PYDISK_H_INCLUDED
-+#define PYDISK_H_INCLUDED
-+
-+#include <Python.h>
-+
-+#include "parted/disk.h"
-+
-+typedef struct _PyPedDisk PyPedDisk;
-+
-+struct _PyPedDisk {
-+ PyObject_HEAD;
-+ PedDisk *disk;
-+};
-+
-+extern PyTypeObject PyPedDiskType;
-+
-+typedef struct _PyPedPartition PyPedPartition;
-+
-+struct _PyPedPartition {
-+ PyObject_HEAD;
-+ PedPartition *part;
-+ PyPedDisk *disk;
-+ int borrowed;
-+};
-+
-+extern PyTypeObject PyPedPartitionType;
-+
-+extern PyPedPartition * py_ped_partition_obj_new (PedPartition *part, PyPedDisk *disk,
-+ int borrowed);
-+
-+#endif /* PYDISK_H_INCLUDED */
-diff -urP parted-1.4.14.orig/python/pyexception.c parted-1.4.14/python/pyexception.c
---- parted-1.4.14.orig/python/pyexception.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14/python/pyexception.c Wed Aug 1 19:26:26 2001
-@@ -0,0 +1,78 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include "pyexception.h"
-+
-+static void py_ped_exception_dealloc (PyPedException * s);
-+static PyObject * py_ped_exception_getattr (PyPedException * s, char * name);
-+
-+static char PyPedExceptionType__doc__[] = "This is the PartEd exception object";
-+PyTypeObject PyPedExceptionType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedException", /* tp_name */
-+ sizeof(PyPedException), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_exception_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_exception_getattr, /* tp_getattr */
-+ 0, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /*tp_hash*/
-+ 0, /*tp_call*/
-+ 0, /*tp_str*/
-+ 0, /*tp_getattro*/
-+ 0, /*tp_setattro*/
-+ 0, /*tp_as_buffer*/
-+ 0L, /*tp_flags*/
-+ PyPedExceptionType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+
-+/* exception implementation */
-+
-+static void
-+py_ped_exception_dealloc (PyPedException * s)
-+{
-+ PyMem_DEL(s);
-+}
-+
-+static PyObject *
-+py_ped_exception_getattr (PyPedException * e, char * name)
-+{
-+ if (!strcmp (name, "message"))
-+ return PyString_FromString (e->ex->message);
-+ else if (!strcmp (name, "type"))
-+ return PyInt_FromLong (e->ex->type);
-+ else if (!strcmp (name, "type_string"))
-+ return PyString_FromString (ped_exception_get_type_string (e->ex->type));
-+ else if (!strcmp (name, "options"))
-+ return PyInt_FromLong (e->ex->options);
-+ return NULL;
-+}
-+
-+PyPedException *
-+py_ped_exception_obj_new (PedException *ex)
-+{
-+ PyPedException *e;
-+
-+ e = (PyPedException *) PyObject_NEW(PyObject, &PyPedExceptionType);
-+ e->ex = ex;
-+ return e;
-+}
-diff -urP parted-1.4.14.orig/python/pyexception.h parted-1.4.14/python/pyexception.h
---- parted-1.4.14.orig/python/pyexception.h Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14/python/pyexception.h Wed Aug 1 19:26:26 2001
-@@ -0,0 +1,35 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#ifndef PYEXCEPTION_H_INCLUDED
-+#define PYEXCEPTION_H_INCLUDED
-+
-+#include <Python.h>
-+
-+#include "parted/exception.h"
-+
-+extern PyTypeObject PyPedExceptionType;
-+
-+typedef struct _PyPedException PyPedException;
-+
-+struct _PyPedException {
-+ PyObject_HEAD;
-+ PedException *ex;
-+};
-+
-+PyPedException *
-+py_ped_exception_obj_new (PedException *ex);
-+
-+#endif /* PYEXCEPTION_H_INCLUDED */
-+
-diff -urP parted-1.4.14.orig/python/pyfilesystem.c parted-1.4.14/python/pyfilesystem.c
---- parted-1.4.14.orig/python/pyfilesystem.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14/python/pyfilesystem.c Wed Aug 1 19:26:26 2001
-@@ -0,0 +1,228 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include "partedmodule.h"
-+
-+#include "pyfilesystem.h"
-+#include "pyconstraint.h"
-+#include "pygeometry.h"
-+
-+/* filesystem python object */
-+
-+static void py_ped_file_system_dealloc (PyPedFileSystem* fs);
-+static PyObject * py_ped_file_system_getattr (PyPedFileSystem * fs, char * name);
-+
-+static char PyPedFileSystemType__doc__[] = "This is the PartEd filesystem object";
-+PyTypeObject PyPedFileSystemType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedFileSystem", /* tp_name */
-+ sizeof(PyPedFileSystem), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_file_system_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_file_system_getattr, /* tp_getattr */
-+ 0, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /* tp_hash */
-+ 0, /* tp_call */
-+ 0, /* tp_str */
-+ 0, /* tp_getattro */
-+ 0, /* tp_setattro */
-+ 0, /* tp_as_buffer */
-+ 0L, /* tp_flags */
-+ PyPedFileSystemType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+static PyObject * py_ped_file_system_check (PyPedFileSystem * fs, PyObject * args);
-+static PyObject * py_ped_file_system_copy (PyPedFileSystem * fs, PyObject * args);
-+static PyObject * py_ped_file_system_resize (PyPedFileSystem * fs, PyObject * args);
-+static PyObject * py_ped_file_system_get_resize_constraint (PyPedFileSystem * fs, PyObject * args);
-+
-+static struct PyMethodDef PyPedFileSystemMethods[] = {
-+ { "check", (PyCFunction) py_ped_file_system_check, METH_VARARGS, NULL },
-+ { "copy", (PyCFunction) py_ped_file_system_copy, METH_VARARGS, NULL },
-+ { "resize", (PyCFunction) py_ped_file_system_resize, METH_VARARGS, NULL },
-+ { "get_resize_constraint", (PyCFunction) py_ped_file_system_get_resize_constraint, METH_VARARGS, NULL },
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+
-+/* file system type python object */
-+
-+static void py_ped_file_system_type_dealloc (PyPedFileSystemTypeObj* fst);
-+static PyObject * py_ped_file_system_type_getattr (PyPedFileSystemTypeObj* fst, char * name);
-+
-+static char PyPedFileSystemTypeType__doc__[] = "This is the PartEd filesystem object";
-+PyTypeObject PyPedFileSystemTypeType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedFileSystemType", /* tp_name */
-+ sizeof(PyPedFileSystemType), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_file_system_type_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_file_system_type_getattr, /* tp_getattr */
-+ 0, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /* tp_hash */
-+ 0, /* tp_call */
-+ 0, /* tp_str */
-+ 0, /* tp_getattro */
-+ 0, /* tp_setattro */
-+ 0, /* tp_as_buffer */
-+ 0L, /* tp_flags */
-+ PyPedFileSystemTypeType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+static struct PyMethodDef PyPedFileSystemTypeMethods[] = {
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+/*
-+ * filesystem implementation
-+ */
-+
-+PyPedFileSystem *
-+py_ped_file_system_obj_new (PedFileSystem *filesys,
-+ PyPedGeometry *geom)
-+{
-+ PyPedFileSystem *fs;
-+
-+ fs = (PyPedFileSystem *) PyObject_NEW(PyObject, &PyPedFileSystemType);
-+ fs->fs = filesys;
-+ fs->geom = geom;
-+ Py_INCREF (geom);
-+ return fs;
-+}
-+
-+static void
-+py_ped_file_system_dealloc (PyPedFileSystem * fs)
-+{
-+ ped_file_system_close (fs->fs);
-+ Py_XDECREF (fs->geom);
-+ PyMem_DEL(fs);
-+}
-+
-+static PyObject *
-+py_ped_file_system_getattr (PyPedFileSystem * fs, char * name)
-+{
-+ if (!strcmp (name, "type"))
-+ return PyString_FromString (fs->fs->type->name);
-+ if (!strcmp (name, "geom"))
-+ return (PyObject *) py_ped_geometry_obj_new (fs->fs->geom, fs->geom->disk, 1);
-+ return Py_FindMethod (PyPedFileSystemMethods, (PyObject *) fs, name);
-+}
-+
-+static PyObject *
-+py_ped_file_system_check (PyPedFileSystem * fs, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_file_system_check (fs->fs)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_file_system_copy (PyPedFileSystem * fs, PyObject * args)
-+{
-+ PyPedGeometry *geom;
-+
-+ if (!PyArg_ParseTuple(args, "O!", &PyPedGeometryType, &geom))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_file_system_copy (fs->fs, geom->geom)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_file_system_resize (PyPedFileSystem * fs, PyObject * args)
-+{
-+ PyPedGeometry *geom;
-+
-+ if (!PyArg_ParseTuple(args, "O!", &PyPedGeometryType, &geom))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_file_system_resize (fs->fs, geom->geom)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_file_system_get_resize_constraint (PyPedFileSystem * fs, PyObject * args)
-+{
-+ PedConstraint *constraint;
-+
-+ py_ped_exception_string_clear ();
-+ if ((constraint = ped_file_system_get_resize_constraint (fs->fs)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return (PyObject *) py_ped_constraint_obj_new (constraint, fs->geom->disk, 0);
-+}
-+
-+/*
-+ * file system type implementation
-+ */
-+
-+
-+PyPedFileSystemTypeObj *
-+py_ped_file_system_type_obj_new (const PedFileSystemType *fs_type)
-+{
-+ PyPedFileSystemTypeObj *fst;
-+
-+ fst = (PyPedFileSystemTypeObj *) PyObject_NEW(PyObject, &PyPedFileSystemTypeType);
-+ fst->fs_type = fs_type;
-+ return fst;
-+}
-+
-+static void
-+py_ped_file_system_type_dealloc (PyPedFileSystemTypeObj* fst)
-+{
-+ PyMem_DEL(fst);
-+}
-+
-+static PyObject *
-+py_ped_file_system_type_getattr (PyPedFileSystemTypeObj * fst, char * name)
-+{
-+ if (!strcmp (name, "name"))
-+ return PyString_FromString (fst->fs_type->name);
-+ return NULL;
-+}
-diff -urP parted-1.4.14.orig/python/pyfilesystem.h parted-1.4.14/python/pyfilesystem.h
---- parted-1.4.14.orig/python/pyfilesystem.h Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14/python/pyfilesystem.h Wed Aug 1 19:26:26 2001
-@@ -0,0 +1,49 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#ifndef PYFILESYSTEM_H_INCLUDED
-+#define PYFILESYSTEM_H_INCLUDED
-+
-+#include <Python.h>
-+#include "parted/disk.h"
-+#include "pygeometry.h"
-+
-+typedef struct _PyPedFileSystem PyPedFileSystem;
-+
-+struct _PyPedFileSystem {
-+ PyObject_HEAD;
-+ PedFileSystem* fs;
-+ PyPedGeometry *geom;
-+};
-+
-+extern PyTypeObject PyPedFileSystemType;
-+
-+PyPedFileSystem *
-+py_ped_file_system_obj_new (PedFileSystem* fs,
-+ PyPedGeometry *geom);
-+
-+typedef struct _PyPedFileSystemTypeObj PyPedFileSystemTypeObj;
-+
-+struct _PyPedFileSystemTypeObj {
-+ PyObject_HEAD;
-+ const PedFileSystemType* fs_type;
-+};
-+
-+extern PyTypeObject PyPedFileSystemTypeType;
-+
-+PyPedFileSystemTypeObj*
-+py_ped_file_system_type_obj_new (const PedFileSystemType* fs_type);
-+
-+#endif /* PYFILESYSTEM_H_INCLUDED */
-+
-diff -urP parted-1.4.14.orig/python/pygeometry.c parted-1.4.14/python/pygeometry.c
---- parted-1.4.14.orig/python/pygeometry.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14/python/pygeometry.c Wed Aug 1 19:26:26 2001
-@@ -0,0 +1,245 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include "partedmodule.h"
-+#include "pygeometry.h"
-+#include "pyfilesystem.h"
-+
-+static void py_ped_geometry_dealloc (PyPedGeometry * g);
-+static PyObject * py_ped_geometry_getattr (PyPedGeometry * g, char * name);
-+static int py_ped_geometry_setattr (PyPedGeometry * g, char * name, PyObject *value);
-+
-+static char PyPedGeometryType__doc__[] = "This is the PartEd geometry object";
-+PyTypeObject PyPedGeometryType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedGeometry", /* tp_name */
-+ sizeof(PyPedGeometry), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_geometry_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_geometry_getattr, /* tp_getattr */
-+ (setattrfunc) py_ped_geometry_setattr, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /* tp_hash */
-+ 0, /* tp_call */
-+ 0, /* tp_str */
-+ 0, /* tp_getattro */
-+ 0, /* tp_setattro */
-+ 0, /* tp_as_buffer */
-+ 0L, /* tp_flags */
-+ PyPedGeometryType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+/* geometry implementation */
-+
-+PyPedGeometry *
-+py_ped_geometry_obj_new (PedGeometry* geom, PyPedDisk *disk, int borrowed)
-+{
-+ PyPedGeometry *g;
-+
-+ g = (PyPedGeometry *) PyObject_NEW (PyObject, &PyPedGeometryType);
-+ g->geom = geom;
-+ g->borrowed = borrowed;
-+ g->disk = disk;
-+ Py_INCREF (disk);
-+ return g;
-+}
-+
-+static void
-+py_ped_geometry_dealloc (PyPedGeometry * g)
-+{
-+ if (!g->borrowed)
-+ ped_geometry_destroy (g->geom);
-+ Py_XDECREF (g->disk);
-+ PyMem_DEL(g);
-+}
-+
-+static PyObject *
-+py_ped_file_system_open (PyPedGeometry * self, PyObject * args)
-+{
-+ PedFileSystem *fs;
-+ PyPedFileSystem *pyfs;
-+
-+ py_ped_exception_string_clear ();
-+ if ((fs = ped_file_system_open (self->geom)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ pyfs = py_ped_file_system_obj_new (fs, self);
-+ return (PyObject *) pyfs;
-+}
-+
-+static PyObject *
-+py_ped_file_system_probe (PyPedGeometry * self, PyObject * args)
-+{
-+ PedFileSystemType *fst;
-+
-+ py_ped_exception_string_clear ();
-+ if ((fst = ped_file_system_probe (self->geom)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return (PyObject *) py_ped_file_system_type_obj_new (fst);
-+}
-+
-+static PyObject *
-+py_ped_file_system_create (PyPedGeometry * self, PyObject * args)
-+{
-+ PedFileSystem *fs;
-+ PyPedFileSystemTypeObj *fs_type;
-+ PyPedFileSystem *pyfs;
-+
-+ if (!PyArg_ParseTuple(args, "O!",
-+ &PyPedFileSystemTypeType, &fs_type))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if ((fs = ped_file_system_create (self->geom, fs_type->fs_type)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ pyfs = py_ped_file_system_obj_new (fs, self);
-+ return (PyObject *) pyfs;
-+}
-+
-+
-+static PyObject *
-+py_ped_file_system_clobber (PyPedGeometry * self, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_file_system_clobber (self->geom)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_geometry_set_end (PyPedGeometry * self, PyObject * args)
-+{
-+ PedSector end;
-+
-+ if (!PyArg_ParseTuple(args, "L", &end))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_geometry_set_end (self->geom, end)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+
-+static PyObject *
-+py_ped_geometry_set_start (PyPedGeometry * self, PyObject * args)
-+{
-+ PedSector start;
-+
-+ if (!PyArg_ParseTuple(args, "L", &start))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_geometry_set_start (self->geom, start)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_geometry_duplicate (PyPedGeometry * self, PyObject * args)
-+{
-+ PedGeometry *geom;
-+
-+ py_ped_exception_string_clear ();
-+ if ((geom = ped_geometry_duplicate (self->geom)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return (PyObject *) py_ped_geometry_obj_new (geom, self->disk, 0);
-+}
-+
-+static struct PyMethodDef PyPedGeometryMethods[] = {
-+ { "file_system_open",
-+ (PyCFunction) py_ped_file_system_open, METH_VARARGS, NULL },
-+ { "file_system_probe",
-+ (PyCFunction) py_ped_file_system_probe, METH_VARARGS, NULL },
-+ { "file_system_create",
-+ (PyCFunction) py_ped_file_system_create, METH_VARARGS, NULL },
-+ { "file_system_clobber",
-+ (PyCFunction) py_ped_file_system_clobber, METH_VARARGS, NULL },
-+ { "set_start",
-+ (PyCFunction) py_ped_geometry_set_start, METH_VARARGS, NULL },
-+ { "set_end",
-+ (PyCFunction) py_ped_geometry_set_end, METH_VARARGS, NULL },
-+ { "duplicate",
-+ (PyCFunction) py_ped_geometry_duplicate, METH_VARARGS, NULL },
-+
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+static PyObject *
-+py_ped_geometry_getattr (PyPedGeometry * g, char * name)
-+{
-+
-+#define RETURN_GEOM_VALUE(var) \
-+ if (!strcmp (name, #var)) \
-+ return PyLong_FromLongLong (g->geom->var)
-+
-+ RETURN_GEOM_VALUE(start);
-+ RETURN_GEOM_VALUE(end);
-+ RETURN_GEOM_VALUE(length);
-+
-+ return Py_FindMethod (PyPedGeometryMethods, (PyObject *) g, name);
-+}
-+
-+static int
-+py_ped_geometry_setattr (PyPedGeometry * g, char * name, PyObject *value)
-+{
-+#define SET_GEOM_VALUE(var) \
-+ if (!strcmp (name, #var)) { \
-+ if (!PyLong_Check (value)) { \
-+ PyErr_SetString(PyExc_TypeError, \
-+ "expected long long"); \
-+ return -1; \
-+ } \
-+ g->geom->var = PyLong_AsLongLong (value); \
-+ return 0; \
-+ }
-+ SET_GEOM_VALUE(start);
-+ SET_GEOM_VALUE(end);
-+ SET_GEOM_VALUE(length);
-+
-+ PyErr_SetString( PyExc_AttributeError, "unknown attribute" );
-+ return -1;
-+}
-+
-+
-diff -urP parted-1.4.14.orig/python/pygeometry.h parted-1.4.14/python/pygeometry.h
---- parted-1.4.14.orig/python/pygeometry.h Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14/python/pygeometry.h Wed Aug 1 19:26:26 2001
-@@ -0,0 +1,37 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#ifndef PYGEOMETRY_H_INCLUDED
-+#define PYGEOMETRY_H_INCLUDED
-+
-+#include <Python.h>
-+
-+#include "pydisk.h"
-+
-+typedef struct _PyPedGeometry PyPedGeometry;
-+
-+struct _PyPedGeometry {
-+ PyObject_HEAD;
-+ PedGeometry* geom;
-+ PyPedDisk *disk;
-+ int borrowed;
-+};
-+
-+extern PyTypeObject PyPedGeometryType;
-+
-+PyPedGeometry *
-+py_ped_geometry_obj_new (PedGeometry* geom, PyPedDisk *disk, int borrowed);
-+
-+#endif /* PYGEOMETRY_H_INCLUDED */
-+
-diff -urP parted-1.4.14.orig/python/test.py parted-1.4.14/python/test.py
---- parted-1.4.14.orig/python/test.py Wed Dec 31 19:00:00 1969
-+++ parted-1.4.14/python/test.py Wed Aug 1 19:26:26 2001
-@@ -0,0 +1,128 @@
-+#!/usr/bin/env python
-+
-+import sys
-+for dir in ('.', ''):
-+ try:
-+ sys.path.remove(dir)
-+ except ValueError:
-+ pass
-+sys.path = [ ".libs" ] + sys.path
-+
-+import parted
-+
-+def get_flags (part):
-+ string=""
-+ if not part.is_active ():
-+ return string
-+ first=1
-+ flag = parted.partition_flag_next (0)
-+ while flag:
-+ if part.get_flag (flag):
-+ string = string + parted.partition_flag_get_name (flag)
-+ if first:
-+ first = 0
-+ else:
-+ string = string + ", "
-+ flag = parted.partition_flag_next (flag)
-+ return string
-+
-+def do_print (disk):
-+ goodparts = { parted.PARTITION_PRIMARY : None,
-+ parted.PARTITION_EXTENDED : None,
-+ parted.PARTITION_LOGICAL : None,
-+ parted.PARTITION_FREESPACE : None }
-+
-+ print ("%s: %s length %ld, maximum "
-+ "primary partitions: %d" % (disk.dev.path, disk.dev.model,
-+ disk.dev.length, disk.max_primary_partition_count))
-+
-+ part = disk.next_partition()
-+ if part:
-+ print "Device Type Filesystem Start End Length Flags"
-+ print "------ ---- ---------- ----- --- ------ -----"
-+ while part:
-+ if goodparts.has_key(part.type):
-+ device = ""
-+ fs_type_name = ""
-+ if part.num > 0:
-+ device = "%s%d" % (disk.dev.path,
-+ part.num)
-+ if part.fs_type:
-+ fs_type_name = part.fs_type.name
-+ flags = get_flags (part)
-+ print ("%-9s %-12s %-12s %-10ld %-10ld %-10ld %7s"
-+ % (device, part.type_name, fs_type_name,
-+ part.geom.start, part.geom.end, part.geom.length,
-+ flags))
-+ part = disk.next_partition(part)
-+ print
-+
-+def exception_handler(exception):
-+ print "%s: %s" % (exception.type_string, exception.message)
-+ return parted.EXCEPTION_UNHANDLED
-+
-+parted.exception_set_handler (exception_handler)
-+dev = parted.device_get ('/tmp/fstest')
-+disk = dev.disk_open ()
-+
-+do_print (disk)
-+part = disk.get_partition (0)
-+fst = part.geom.file_system_probe ()
-+print "%s filesystem probed on device %s%d" % (fst.name,
-+ disk.dev.path,
-+ part.num)
-+
-+fs = part.geom.file_system_open ()
-+fs.check()
-+const = fs.get_resize_constraint()
-+print "minimum size for this filesystem is %d sectors" % const.min_size
-+print "start range from %d to %d" % (const.start_range.start, const.start_range.end)
-+print "end range from %d to %d" % (const.end_range.start, const.end_range.end)
-+
-+new_end = fs.geom.duplicate()
-+#new_end.set_end (const.min_size + 512)
-+new_end.set_end (const.end_range.end)
-+fs.resize (new_end)
-+
-+def foo():
-+ disk.delete_all ()
-+ do_print (disk)
-+
-+ fs_type = parted.file_system_type_get ("ext2")
-+
-+ sections = disk.dev.length / 4
-+
-+ # add a partition
-+ newp = disk.partition_new (parted.PARTITION_PRIMARY,
-+ fs_type, 0L, sections - 1)
-+ newp.set_flag (parted.PARTITION_RAID, 1)
-+ constraint = disk.constraint_any ()
-+ disk.add_partition (newp, constraint)
-+ do_print (disk)
-+
-+ # add another...
-+ newp = disk.partition_new (parted.PARTITION_PRIMARY,
-+ fs_type, sections, 2 * sections - 1)
-+ newp.set_flag (parted.PARTITION_RAID, 1)
-+ constraint = disk.constraint_any ()
-+ disk.add_partition (newp, constraint)
-+ do_print (disk)
-+
-+ # another
-+ newp = disk.partition_new (parted.PARTITION_PRIMARY,
-+ fs_type, 2 * sections, 3 * sections - 1)
-+ newp.set_flag (parted.PARTITION_RAID, 1)
-+ constraint = disk.constraint_any ()
-+ disk.add_partition (newp, constraint)
-+ do_print (disk)
-+
-+ # another...
-+ newp = disk.partition_new (parted.PARTITION_PRIMARY,
-+ fs_type, 3 * sections, 4 * sections - 1)
-+ newp.set_flag (parted.PARTITION_RAID, 1)
-+ constraint = disk.constraint_any ()
-+ disk.add_partition (newp, constraint)
-+ do_print (disk)
-+
-+ disk.write()
-+
diff --git a/sys-apps/parted/files/parted-1.4.17-gentoo.diff b/sys-apps/parted/files/parted-1.4.17-gentoo.diff
deleted file mode 100644
index fbf2d17e4d22..000000000000
--- a/sys-apps/parted/files/parted-1.4.17-gentoo.diff
+++ /dev/null
@@ -1,13318 +0,0 @@
-diff -urN parted-1.4.17.orig/ABOUT-NLS parted-1.4.17/ABOUT-NLS
---- parted-1.4.17.orig/ABOUT-NLS Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/ABOUT-NLS Thu Aug 2 14:26:15 2001
-@@ -8,7 +8,7 @@
-
- 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*
-+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.
-
-@@ -22,8 +22,8 @@
- `gettext' which is used. The information can be found in the
- `intl/VERSION' file, in internationalized packages.
-
--One advise in advance
--=====================
-+Quick configuration advice
-+==========================
-
- If you want to exploit the full power of internationalization, you
- should configure it using
-@@ -34,13 +34,14 @@
- 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 or message inheritance) 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.
-+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
-+ 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'.
-
-@@ -53,23 +54,20 @@
- 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 provides
--usable `catgets' (if using this is selected by the installer) or
--`gettext' functions. If neither is available, the GNU `gettext' own
-+messages. It will automatically detect whether the system already
-+provides the GNU `gettext' functions. If not, the GNU `gettext' own
- 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
-+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 --with-catgets
- ./configure --disable-nls
-
--will respectively bypass any pre-existing `catgets' or `gettext' to use
--the internationalizing routines provided within this package, enable
--the use of the `catgets' functions (if found on the locale system), or
--else, *totally* disable translation of messages.
-+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
-@@ -83,18 +81,10 @@
-
- to prevent auto-detection.
-
-- By default the configuration process will not test for the `catgets'
--function and therefore they will not be used. The reasons are already
--given above: the emulation on top of `catgets' cannot provide all the
--extensions provided by the GNU `gettext' library. If you nevertheless
--want to use the `catgets' functions use
--
-- ./configure --with-catgets
--
--to enable the test for `catgets' (this causes no harm if `catgets' is
--not available on your system). If you really select this option we
--would like to hear about the reasons because we cannot think of any
--good one ourself.
-+ 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 have usually many `po/LL.po' files, where
- LL gives an ISO 639 two-letter code identifying the language. Unless
-@@ -110,22 +100,35 @@
-
- As a user, if your language has been installed for this package, you
- only have to set the `LANG' environment variable to the appropriate
--ISO 639 `LL' two-letter code prior to using the programs in the
--package. For example, let's suppose that you speak German. At the
--shell prompt, merely execute `setenv LANG de' (in `csh'),
--`export LANG; LANG=de' (in `sh') or `export LANG=de' (in `bash'). This
--can be done from your `.login' or `.profile' file, once and for all.
--
-- An operating system might already offer message localization for
--many of its programs, while other programs have been installed locally
--with the full capabilities of GNU `gettext'. Just using `gettext'
--extended syntax for `LANG' would break proper localization of already
--available operating system programs. In this case, users should set
--both `LANGUAGE' and `LANG' variables in their environment, as programs
--using GNU `gettext' give preference to `LANGUAGE'. For example, some
--Swedish users would rather read translations in German than English for
--when Swedish is not available. This is easily accomplished by setting
--`LANGUAGE' to `sv:de' while leaving `LANG' to `sv'.
-+`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.
-+
-+ 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'.
-+
-+ 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.
-
- Translating Teams
- =================
-@@ -133,33 +136,21 @@
- 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, courtesy of Linux
--International. You may reach your translation team at the address
--`LL@li.org', replacing LL by the two-letter ISO 639 code for your
--language. Language codes are *not* the same as the country codes given
--in ISO 3166. The following translation teams exist, as of December
--1997:
--
-- Chinese `zh', Czech `cs', Danish `da', Dutch `nl', English `en',
-- Esperanto `eo', Finnish `fi', French `fr', German `de', Hungarian
-- `hu', Irish `ga', Italian `it', Indonesian `id', Japanese `ja',
-- Korean `ko', Latin `la', Norwegian `no', Persian `fa', Polish
-- `pl', Portuguese `pt', Russian `ru', Slovenian `sl', Spanish `es',
-- Swedish `sv', and Turkish `tr'.
-+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.
-
--For example, you may reach the Chinese translation team by writing to
--`zh@li.org'.
--
-- If you'd like to volunteer to *work* at translating messages, you
-+ 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
-+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,
-+_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
-@@ -173,42 +164,124 @@
- ==================
-
- Languages are not equally supported in all packages. The following
--matrix shows the current state of internationalization, as of December
--1997. The matrix shows, in regard of each package, for which languages
--PO files have been submitted to translation coordination.
--
-- Ready PO files cs da de en es fi fr it ja ko nl no pl pt ru sl sv
-- .----------------------------------------------------.
-- bash | [] [] [] | 3
-- bison | [] [] [] | 3
-- clisp | [] [] [] [] | 4
-- cpio | [] [] [] [] [] [] | 6
-- diffutils | [] [] [] [] [] | 5
-- enscript | [] [] [] [] [] [] | 6
-- fileutils | [] [] [] [] [] [] [] [] [] [] | 10
-- findutils | [] [] [] [] [] [] [] [] [] | 9
-- flex | [] [] [] [] | 4
-- gcal | [] [] [] [] [] | 5
-- gettext | [] [] [] [] [] [] [] [] [] [] [] | 12
-- grep | [] [] [] [] [] [] [] [] [] [] | 10
-- hello | [] [] [] [] [] [] [] [] [] [] [] | 11
-- id-utils | [] [] [] | 3
-- indent | [] [] [] [] [] | 5
-- libc | [] [] [] [] [] [] [] | 7
-- m4 | [] [] [] [] [] [] | 6
-- make | [] [] [] [] [] [] | 6
-- music | [] [] | 2
-- ptx | [] [] [] [] [] [] [] [] | 8
-- recode | [] [] [] [] [] [] [] [] [] | 9
-- sh-utils | [] [] [] [] [] [] [] [] | 8
-- sharutils | [] [] [] [] [] [] | 6
-- tar | [] [] [] [] [] [] [] [] [] [] [] | 11
-- texinfo | [] [] [] | 3
-- textutils | [] [] [] [] [] [] [] [] [] | 9
-- wdiff | [] [] [] [] [] [] [] [] | 8
-- `----------------------------------------------------'
-- 17 languages cs da de en es fi fr it ja ko nl no pl pt ru sl sv
-- 27 packages 6 4 25 1 18 1 26 2 1 12 20 9 19 7 4 7 17 179
-+matrix shows the current state of internationalization, as of July
-+2001. 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 bg cs da de el en eo es et fi fr gl he hr id it
-+ +-------------------------------------------------+
-+ a2ps | [] [] |
-+ bash | [] [] [] [] |
-+ bfd | |
-+ binutils | |
-+ bison | [] [] [] [] |
-+ clisp | [] [] [] [] |
-+ cpio | [] [] [] [] [] |
-+ diffutils | [] [] [] [] [] [] [] |
-+ enscript | [] [] |
-+ error | [] [] |
-+ fetchmail | |
-+ fileutils | [] [] [] [] [] [] [] |
-+ findutils | [] [] [] [] [] [] [] [] |
-+ flex | [] [] [] |
-+ freetype | |
-+ gas | |
-+ gawk | [] |
-+ gcal | |
-+ gcc | |
-+ gettext | [] [] [] [] [] [] [] [] [] |
-+ gnupg | [] [] [] [] [] [] |
-+ gprof | |
-+ grep | [] [] [] [] [] [] [] |
-+ hello | [] [] [] [] [] [] [] [] [] [] |
-+ id-utils | [] [] [] |
-+ indent | [] [] [] [] [] |
-+ jpilot | [] |
-+ kbd | |
-+ ld | |
-+ libc | [] [] [] [] [] [] [] [] |
-+ lilypond | |
-+ lynx | [] [] [] |
-+ m4 | [] [] [] [] [] [] [] |
-+ make | [] [] [] [] [] |
-+ nano | [] [] |
-+ opcodes | |
-+ parted | [] [] |
-+ ptx | [] [] [] [] [] [] [] |
-+ python | |
-+ recode | [] [] [] [] [] [] [] [] [] |
-+ sed | [] [] [] [] [] [] [] [] [] [] |
-+ sh-utils | [] [] [] [] [] [] [] [] [] |
-+ sharutils | [] [] [] [] [] [] [] |
-+ soundtracker | [] |
-+ sp | |
-+ tar | [] [] [] [] [] [] [] [] |
-+ texinfo | [] [] [] [] [] |
-+ textutils | [] [] [] [] [] [] [] |
-+ util-linux | [] [] |
-+ wdiff | [] [] |
-+ wget | [] [] [] [] [] [] [] [] [] |
-+ +-------------------------------------------------+
-+ bg cs da de el en eo es et fi fr gl he hr id it
-+ 0 13 23 30 11 1 8 21 13 1 29 22 3 0 8 10
-+
-+ ja ko lv nl no pl pt pt_BR ru sk sl sv tr uk zh
-+ +-------------------------------------------------+
-+ a2ps | [] [] [] | 5
-+ bash | | 4
-+ bfd | | 0
-+ binutils | | 0
-+ bison | [] [] [] | 7
-+ clisp | [] | 5
-+ cpio | [] [] [] [] [] | 10
-+ diffutils | [] [] [] | 10
-+ enscript | [] [] [] | 5
-+ error | [] | 3
-+ fetchmail | | 0
-+ fileutils | [] [] [] [] [] [] [] [] [] [] | 17
-+ findutils | [] [] [] [] [] [] [] [] | 16
-+ flex | [] [] [] | 6
-+ freetype | | 0
-+ gas | | 0
-+ gawk | [] | 2
-+ gcal | | 0
-+ gcc | | 0
-+ gettext | [] [] [] [] [] [] [] [] [] | 18
-+ gnupg | [] [] [] [] | 10
-+ gprof | | 0
-+ grep | [] [] [] | 10
-+ hello | [] [] [] [] [] [] [] [] [] [] [] | 21
-+ id-utils | [] [] [] | 6
-+ indent | [] [] [] [] [] [] [] | 12
-+ jpilot | | 1
-+ kbd | [] | 1
-+ ld | | 0
-+ libc | [] [] [] [] [] [] [] [] [] | 17
-+ lilypond | [] [] | 2
-+ lynx | [] [] [] [] [] | 8
-+ m4 | [] [] [] [] [] | 12
-+ make | [] [] [] [] [] [] [] | 12
-+ nano | [] | 3
-+ opcodes | | 0
-+ parted | [] [] [] | 5
-+ ptx | [] [] [] [] [] [] [] | 14
-+ python | | 0
-+ recode | [] [] [] [] | 13
-+ sed | [] [] [] [] [] [] [] [] | 18
-+ sh-utils | [] [] [] [] [] [] [] [] [] [] [] | 20
-+ sharutils | [] [] [] [] | 11
-+ soundtracker | | 1
-+ sp | | 0
-+ tar | [] [] [] [] [] [] [] [] [] | 17
-+ texinfo | [] [] | 7
-+ textutils | [] [] [] [] [] [] [] [] | 15
-+ util-linux | [] [] | 4
-+ wdiff | [] [] [] | 5
-+ wget | [] [] [] [] [] [] [] | 16
-+ +-------------------------------------------------+
-+ 31 teams ja ko lv nl no pl pt pt_BR ru sk sl sv tr uk zh
-+ 51 domains 17 9 1 23 6 17 1 13 26 9 11 20 19 2 2 369
-
- 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
-@@ -221,6 +294,26 @@
- lag between the mere existence a PO file and its wide availability in a
- distribution.
-
-- If December 1997 seems to be old, you may fetch a more recent copy
--of this `ABOUT-NLS' file on most GNU archive sites.
-+ If July 2001 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'.
-+
-+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 the GNU General Public License applies to your
-+sources from then on if you include `gettext' directly in your
-+distribution but since you are writing free software anyway this is no
-+restriction.
-+
-+ Once the sources are changed appropriately and the setup can handle
-+to 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 -urN parted-1.4.17.orig/Makefile.am parted-1.4.17/Makefile.am
---- parted-1.4.17.orig/Makefile.am Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/Makefile.am Thu Aug 2 14:28:17 2001
-@@ -1,7 +1,7 @@
--SUBDIRS = intl po libparted parted include doc debug
-+SUBDIRS = intl libparted parted po include doc debug @PYTHON_SUBDIR@
-+DIST_SUBDIRS = intl libparted parted po include doc debug python
-
--EXTRA_DIST = ABOUT-NLS \
-- AUTHORS \
-+EXTRA_DIST = AUTHORS \
- BUGS \
- COPYING \
- THANKS \
-diff -urN parted-1.4.17.orig/config.guess parted-1.4.17/config.guess
---- parted-1.4.17.orig/config.guess Fri Jul 13 22:37:35 2001
-+++ parted-1.4.17/config.guess Thu Aug 2 14:32:32 2001
-@@ -3,7 +3,7 @@
- # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
- # Free Software Foundation, Inc.
-
--timestamp='2001-07-12'
-+timestamp='2001-04-20'
-
- # 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
-@@ -52,7 +52,7 @@
- GNU config.guess ($timestamp)
-
- Originally written by Per Bothner.
--Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
-+Copyright (C) 1992, 93, 94, 95, 96, 97, 98, 99, 2000
- Free Software Foundation, Inc.
-
- This is free software; see the source for copying conditions. There is NO
-@@ -95,25 +95,25 @@
- # Historically, `CC_FOR_BUILD' used to be named `HOST_CC'. We still
- # use `HOST_CC' if defined, but it is deprecated.
-
--set_cc_for_build='case $CC_FOR_BUILD,$HOST_CC,$CC in
-- ,,) echo "int dummy(){}" > $dummy.c ;
-+case $CC_FOR_BUILD,$HOST_CC,$CC in
-+ ,,) echo "int dummy(){}" > $dummy.c
- for c in cc gcc c89 ; do
-- ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1 ;
-+ ($c $dummy.c -c -o $dummy.o) >/dev/null 2>&1
- if test $? = 0 ; then
-- CC_FOR_BUILD="$c"; break ;
-- fi ;
-- done ;
-- rm -f $dummy.c $dummy.o $dummy.rel ;
-+ CC_FOR_BUILD="$c"; break
-+ fi
-+ done
-+ rm -f $dummy.c $dummy.o $dummy.rel
- if test x"$CC_FOR_BUILD" = x ; then
-- CC_FOR_BUILD=no_compiler_found ;
-+ CC_FOR_BUILD=no_compiler_found
- fi
- ;;
- ,,*) CC_FOR_BUILD=$CC ;;
- ,*,*) CC_FOR_BUILD=$HOST_CC ;;
--esac'
-+esac
-
- # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
--# (ghazi@noc.rutgers.edu 1994-08-24)
-+# (ghazi@noc.rutgers.edu 8/24/94.)
- if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
- PATH=$PATH:/.attbin ; export PATH
- fi
-@@ -150,7 +150,6 @@
- # to ELF recently, or will in the future.
- case "${UNAME_MACHINE}" in
- i386|sparc|amiga|arm*|hp300|mvme68k|vax|atari|luna68k|mac68k|news68k|next68k|pc532|sun3*|x68k)
-- eval $set_cc_for_build
- if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \
- | grep __ELF__ >/dev/null
- then
-@@ -205,7 +204,6 @@
- jsr \$26,exit
- .end main
- EOF
-- eval $set_cc_for_build
- $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
- if test "$?" = 0 ; then
- case `./$dummy` in
-@@ -408,7 +406,6 @@
- exit (-1);
- }
- EOF
-- eval $set_cc_for_build
- $CC_FOR_BUILD $dummy.c -o $dummy \
- && ./$dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
- && rm -f $dummy.c $dummy && exit 0
-@@ -489,7 +486,6 @@
- exit(0);
- }
- EOF
-- eval $set_cc_for_build
- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
- echo rs6000-ibm-aix3.2.5
-@@ -590,7 +586,6 @@
- exit (0);
- }
- EOF
-- eval $set_cc_for_build
- (CCOPTS= $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null ) && HP_ARCH=`./$dummy`
- if test -z "$HP_ARCH"; then HP_ARCH=hppa; fi
- rm -f $dummy.c $dummy
-@@ -628,7 +623,6 @@
- exit (0);
- }
- EOF
-- eval $set_cc_for_build
- $CC_FOR_BUILD $dummy.c -o $dummy && ./$dummy && rm -f $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
- echo unknown-hitachi-hiuxwe2
-@@ -639,7 +633,7 @@
- 9000/8??:4.3bsd:*:*)
- echo hppa1.0-hp-bsd
- exit 0 ;;
-- *9??*:MPE/iX:*:* | *3000*:MPE/iX:*:*)
-+ *9??*:MPE/iX:*:*)
- echo hppa1.0-hp-mpeix
- exit 0 ;;
- hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
-@@ -683,13 +677,12 @@
- echo xmp-cray-unicos
- exit 0 ;;
- CRAY*Y-MP:*:*:*)
-- echo ymp-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-+ echo ymp-cray-unicos${UNAME_RELEASE}
- exit 0 ;;
- 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/'
-+ -e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
- exit 0 ;;
- CRAY*TS:*:*:*)
- echo t90-cray-unicos${UNAME_RELEASE} | sed -e 's/\.[^.]*$/.X/'
-@@ -770,26 +763,97 @@
- echo ${UNAME_MACHINE}-unknown-linux-gnu
- exit 0 ;;
- mips:Linux:*:*)
-- case `sed -n '/^byte/s/^.*: \(.*\) endian/\1/p' < /proc/cpuinfo` in
-- big) echo mips-unknown-linux-gnu && exit 0 ;;
-- little) echo mipsel-unknown-linux-gnu && exit 0 ;;
-- esac
-+ cat >$dummy.c <<EOF
-+#ifdef __cplusplus
-+#include <stdio.h> /* for printf() prototype */
-+int main (int argc, char *argv[]) {
-+#else
-+int main (argc, argv) int argc; char *argv[]; {
-+#endif
-+#ifdef __MIPSEB__
-+ printf ("%s-unknown-linux-gnu\n", argv[1]);
-+#endif
-+#ifdef __MIPSEL__
-+ printf ("%sel-unknown-linux-gnu\n", argv[1]);
-+#endif
-+ return 0;
-+}
-+EOF
-+ $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0
-+ rm -f $dummy.c $dummy
- ;;
- ppc:Linux:*:*)
-- echo powerpc-unknown-linux-gnu
-+ # Determine Lib Version
-+ cat >$dummy.c <<EOF
-+#include <features.h>
-+#if defined(__GLIBC__)
-+extern char __libc_version[];
-+extern char __libc_release[];
-+#endif
-+main(argc, argv)
-+ int argc;
-+ char *argv[];
-+{
-+#if defined(__GLIBC__)
-+ printf("%s %s\n", __libc_version, __libc_release);
-+#else
-+ printf("unknown\n");
-+#endif
-+ return 0;
-+}
-+EOF
-+ LIBC=""
-+ $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null
-+ if test "$?" = 0 ; then
-+ ./$dummy | grep 1\.99 > /dev/null
-+ if test "$?" = 0 ; then LIBC="libc1" ; fi
-+ fi
-+ rm -f $dummy.c $dummy
-+ echo powerpc-unknown-linux-gnu${LIBC}
- exit 0 ;;
- 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=alphaev67 ;;
-- esac
-- objdump --private-headers /bin/sh | grep ld.so.1 >/dev/null
-- if test "$?" = 0 ; then LIBC="libc1" ; else LIBC="" ; fi
-+ cat <<EOF >$dummy.s
-+ .data
-+ \$Lformat:
-+ .byte 37,100,45,37,120,10,0 # "%d-%x\n"
-+ .text
-+ .globl main
-+ .align 4
-+ .ent main
-+ main:
-+ .frame \$30,16,\$26,0
-+ ldgp \$29,0(\$27)
-+ .prologue 1
-+ .long 0x47e03d80 # implver \$0
-+ lda \$2,-1
-+ .long 0x47e20c21 # amask \$2,\$1
-+ lda \$16,\$Lformat
-+ mov \$0,\$17
-+ not \$1,\$18
-+ jsr \$26,printf
-+ ldgp \$29,0(\$26)
-+ mov 0,\$16
-+ jsr \$26,exit
-+ .end main
-+EOF
-+ LIBC=""
-+ $CC_FOR_BUILD $dummy.s -o $dummy 2>/dev/null
-+ if test "$?" = 0 ; then
-+ case `./$dummy` in
-+ 0-0) UNAME_MACHINE="alpha" ;;
-+ 1-0) UNAME_MACHINE="alphaev5" ;;
-+ 1-1) UNAME_MACHINE="alphaev56" ;;
-+ 1-101) UNAME_MACHINE="alphapca56" ;;
-+ 2-303) UNAME_MACHINE="alphaev6" ;;
-+ 2-307) UNAME_MACHINE="alphaev67" ;;
-+ esac
-+ objdump --private-headers $dummy | \
-+ grep ld.so.1 > /dev/null
-+ if test "$?" = 0 ; then
-+ LIBC="libc1"
-+ fi
-+ fi
-+ rm -f $dummy.s $dummy
- echo ${UNAME_MACHINE}-unknown-linux-gnu${LIBC}
- exit 0 ;;
- parisc:Linux:*:* | hppa:Linux:*:*)
-@@ -819,27 +883,38 @@
- # 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.
-- ld_supported_targets=`cd /; ld --help 2>&1 \
-- | sed -ne '/supported targets:/!d
-+ ld_supported_emulations=`cd /; ld --help 2>&1 \
-+ | sed -ne '/supported emulations:/!d
- s/[ ][ ]*/ /g
-- s/.*supported targets: *//
-+ s/.*supported emulations: *//
- s/ .*//
- p'`
-- case "$ld_supported_targets" in
-- elf32-i386)
-+ case "$ld_supported_emulations" in
-+ i*86linux)
-+ echo "${UNAME_MACHINE}-pc-linux-gnuaout"
-+ exit 0
-+ ;;
-+ elf_i*86)
- TENTATIVE="${UNAME_MACHINE}-pc-linux-gnu"
- ;;
-- a.out-i386-linux)
-- echo "${UNAME_MACHINE}-pc-linux-gnuaout"
-- exit 0 ;;
-- coff-i386)
-+ i*86coff)
- echo "${UNAME_MACHINE}-pc-linux-gnucoff"
-- exit 0 ;;
-- "")
-- # 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 0 ;;
-+ exit 0
-+ ;;
-+ esac
-+ # Either a pre-BFD a.out linker (linux-gnuoldld)
-+ # or one that does not give us useful --help.
-+ # GCC wants to distinguish between linux-gnuoldld and linux-gnuaout.
-+ # If ld does not provide *any* "supported emulations:"
-+ # that means it is gnuoldld.
-+ test -z "$ld_supported_emulations" && echo "${UNAME_MACHINE}-pc-linux-gnuoldld" && exit 0
-+ case "${UNAME_MACHINE}" in
-+ i*86)
-+ VENDOR=pc;
-+ ;;
-+ *)
-+ VENDOR=unknown;
-+ ;;
- esac
- # Determine whether the default compiler is a.out or elf
- cat >$dummy.c <<EOF
-@@ -853,28 +928,26 @@
- #ifdef __ELF__
- # ifdef __GLIBC__
- # if __GLIBC__ >= 2
-- printf ("%s-pc-linux-gnu\n", argv[1]);
-+ printf ("%s-${VENDOR}-linux-gnu\n", argv[1]);
- # else
-- printf ("%s-pc-linux-gnulibc1\n", argv[1]);
-+ printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
- # endif
- # else
-- printf ("%s-pc-linux-gnulibc1\n", argv[1]);
-+ printf ("%s-${VENDOR}-linux-gnulibc1\n", argv[1]);
- # endif
- #else
-- printf ("%s-pc-linux-gnuaout\n", argv[1]);
-+ printf ("%s-${VENDOR}-linux-gnuaout\n", argv[1]);
- #endif
- return 0;
- }
- EOF
-- eval $set_cc_for_build
- $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy "${UNAME_MACHINE}" && rm -f $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
- test x"${TENTATIVE}" != x && echo "${TENTATIVE}" && exit 0
- ;;
-+# 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.
- 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 0 ;;
- i*86:UNIX_SV:4.2MP:2.*)
-@@ -893,13 +966,14 @@
- echo ${UNAME_MACHINE}-pc-sysv${UNAME_REL}
- fi
- exit 0 ;;
-- i*86:*:5:[78]*)
-- 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}
-+ i*86:*:5:7*)
-+ # Fixed at (any) Pentium or better
-+ UNAME_MACHINE=i586
-+ if [ ${UNAME_SYSTEM} = "UnixWare" ] ; then
-+ echo ${UNAME_MACHINE}-sco-sysv${UNAME_RELEASE}uw${UNAME_VERSION}
-+ else
-+ echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
-+ fi
- exit 0 ;;
- i*86:*:3.2:*)
- if test -f /usr/options/cb.name; then
-@@ -1217,7 +1291,6 @@
- }
- EOF
-
--eval $set_cc_for_build
- $CC_FOR_BUILD $dummy.c -o $dummy 2>/dev/null && ./$dummy && rm -f $dummy.c $dummy && exit 0
- rm -f $dummy.c $dummy
-
-diff -urN parted-1.4.17.orig/config.sub parted-1.4.17/config.sub
---- parted-1.4.17.orig/config.sub Fri Jul 13 22:37:35 2001
-+++ parted-1.4.17/config.sub Thu Aug 2 14:32:32 2001
-@@ -3,7 +3,7 @@
- # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001
- # Free Software Foundation, Inc.
-
--timestamp='2001-06-08'
-+timestamp='2001-04-20'
-
- # This file is (in principle) common to ALL GNU software.
- # The presence of a machine in this file suggests that SOME GNU software
-@@ -117,7 +117,7 @@
- # 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* | storm-chaos* | os2-emx* | windows32-*)
-+ nto-qnx* | linux-gnu* | storm-chaos* | os2-emx*)
- os=-$maybe_os
- basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
- ;;
-@@ -157,14 +157,6 @@
- os=-vxworks
- basic_machine=$1
- ;;
-- -chorusos*)
-- os=-chorusos
-- basic_machine=$1
-- ;;
-- -chorusrdb)
-- os=-chorusrdb
-- basic_machine=$1
-- ;;
- -hiux*)
- os=-hiuxwe2
- ;;
-@@ -238,11 +230,11 @@
- | mips16 | mips64 | mipsel | mips64el \
- | mips64orion | mips64orionel | mipstx39 | mipstx39el \
- | mips64vr4300 | mips64vr4300el | mips64vr4100 | mips64vr4100el \
-- | mips64vr5000 | mips64vr5000el | mcore | s390 | s390x \
-+ | mips64vr5000 | miprs64vr5000el | mcore | s390 | s390x \
- | sparc | sparclet | sparclite | sparc64 | sparcv9 | sparcv9b \
- | v850 | c4x \
- | thumb | d10v | d30v | fr30 | avr | openrisc | tic80 \
-- | pj | pjl | h8500 | z8k)
-+ | pj | pjl | h8500)
- basic_machine=$basic_machine-unknown
- ;;
- m6811 | m68hc11 | m6812 | m68hc12)
-@@ -250,7 +242,7 @@
- basic_machine=$basic_machine-unknown
- os=-none
- ;;
-- m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k)
-+ m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | z8k | v70 | w65)
- ;;
-
- # We use `pc' rather than `unknown'
-@@ -279,8 +271,8 @@
- | alphaev6[78]-* \
- | we32k-* | cydra-* | ns16k-* | pn-* | np1-* | xps100-* \
- | clipper-* | orion-* \
-- | sparclite-* | pdp10-* | pdp11-* | sh-* | sh[34]-* | sh[34]eb-* \
-- | powerpc-* | powerpcle-* | sparc64-* | sparcv9-* | sparcv9b-* | sparc86x-* \
-+ | sparclite-* | pdp10-* | pdp11-* | sh-* | powerpc-* | powerpcle-* \
-+ | sparc64-* | sparcv9-* | sparcv9b-* | sparc86x-* \
- | mips16-* | mips64-* | mipsel-* \
- | mips64el-* | mips64orion-* | mips64orionel-* \
- | mips64vr4100-* | mips64vr4100el-* | mips64vr4300-* | mips64vr4300el-* \
-@@ -889,10 +881,6 @@
- basic_machine=hppa1.1-winbond
- os=-proelf
- ;;
-- windows32)
-- basic_machine=i386-pc
-- os=-windows32-msvcrt
-- ;;
- xmp)
- basic_machine=xmp-cray
- os=-unicos
-@@ -1030,7 +1018,6 @@
- | -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* | -uxpv* | -beos* | -mpeix* | -udk* \
- | -interix* | -uwin* | -rhapsody* | -darwin* | -opened* \
-diff -urN parted-1.4.17.orig/configure.in parted-1.4.17/configure.in
---- parted-1.4.17.orig/configure.in Sun Jul 22 04:00:48 2001
-+++ parted-1.4.17/configure.in Thu Aug 2 18:21:49 2001
-@@ -73,6 +73,12 @@
- AC_DEFINE(ENABLE_PC98)
- fi
-
-+AC_ARG_WITH(python,
-+ [ --with-python build python module],
-+ with_python=$withval,
-+ with_python=no
-+)
-+
- dnl make libc threadsafe (not required for us, but useful other users of
- dnl libparted)
- CFLAGS="$CFLAGS -D_REENTRANT"
-@@ -110,18 +116,11 @@
- ALL_LINGUAS="de fr gl ja nl pt_BR ru"
- AM_GNU_GETTEXT
- CFLAGS="$CFLAGS -DLOCALEDIR=\"\\\"$datadir/locale\\\"\""
--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
-+if test "$USE_INCLUDED_LIBINTL" = "yes" -o "$USE_NLS" = "no"
-+then
-+ AC_CONFIG_LINKS(intl/libintl.h:intl/libgnuintl.h)
-+ INTLINCS='-I$(top_builddir)/intl -I$(top_srcdir)/intl'
- fi
--CFLAGS="$CFLAGS -DLOCALEDIR=\"\\\"$datadir/locale\\\"\""
-
- dnl Check for libuuid
- PARTED_LIBS=""
-@@ -185,11 +184,39 @@
- AC_SUBST(PARTED_LIBS)
-
- dnl One day, gettext might support libtool...
--dnl if test "$USE_INCLUDED_LIBINTL" = "yes"; then
--dnl INTLINCS='-I$(top_srcdir)/intl'
--dnl fi
-+if test "$USE_INCLUDED_LIBINTL" = "yes"; then
-+ INTLINCS='-I$(top_srcdir)/intl'
-+fi
- AC_SUBST(INTLINCS)
-
-+dnl Check for python
-+if test x$with_python = xyes; then
-+ AC_PATH_PROG(PYTHON, python python2.1 python2.0 python1.6 python1.5, no)
-+ if test x$PYTHON = xno; then
-+ AC_MSG_ERROR(
-+Python version 1.5 or higher could not be found which is required for
-+the --with-python. Either disable readline support with
-+--without-python or downloaded and install it from:
-+ http://www.python.org
-+ )
-+ fi
-+ changequote(<<,>>)dnl
-+ PYTHON_VERSION=`${PYTHON} -c "import sys; print sys.version[:3]"`
-+ PYTHON_PREFIX=`${PYTHON} -c "import sys; print sys.prefix"`
-+ PYTHON_EXEC_PREFIX=`${PYTHON} -c "import sys; print sys.exec_prefix"`
-+ changequote([,])dnl
-+ PYTHON_INCLUDES="-I${PYTHON_PREFIX}/include/python${PYTHON_VERSION} -I${PYTHON_PREFIX}/lib/python${PYTHON_VERSION}/config"
-+ pydynmoduledir="${PYTHON_EXEC_PREFIX}/lib/python${PYTHON_VERSION}/site-packages"
-+ PYTHON_SUBDIR=python
-+fi
-+AC_SUBST(PYTHON_PREFIX)
-+AC_SUBST(PYTHON_EXEC_PREFIX)
-+AC_SUBST(PYTHON_VERSION)
-+AC_SUBST(PYTHON_INCLUDES)
-+AC_SUBST(PYTHON_SUBDIR)
-+AC_SUBST(pydynmoduledir)
-+
-+AC_SUBST(PARTED_LIBS)
-
- dnl Checks for header files.
- AC_CHECK_HEADER(uuid/uuid.h, ,
-@@ -264,12 +291,13 @@
- LIBS="$OLD_LIBS"
- fi
-
--CFLAGS="$CFLAGS -W -Wall -Wno-unused -Wno-switch -Werror"
-+CFLAGS="$CFLAGS -W -Wall -Wno-unused -Wno-switch"
-
- AC_OUTPUT([
- Makefile
- include/Makefile
- include/parted/Makefile
-+intl/Makefile
- libparted/Makefile
- libparted/fs_ext2/Makefile
- libparted/fs_fat/Makefile
-@@ -281,12 +309,12 @@
- libparted/fs_ufs/Makefile
- libparted/fs_xfs/Makefile
- parted/Makefile
--intl/Makefile
-+po/Makefile.in
-+python/Makefile
- doc/Makefile
- debug/Makefile
- debug/clearfat/Makefile
- debug/test/Makefile
--po/Makefile.in
- parted.spec
- ])
-
-diff -urN parted-1.4.17.orig/intl/ChangeLog parted-1.4.17/intl/ChangeLog
---- parted-1.4.17.orig/intl/ChangeLog Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/ChangeLog Thu Aug 2 14:26:15 2001
-@@ -1,1086 +1,4 @@
--1998-04-29 Ulrich Drepper <drepper@cygnus.com>
-+2001-07-24 GNU <bug-gnu-utils@gnu.org>
-
-- * intl/localealias.c (read_alias_file): Use unsigned char for
-- local variables. Remove unused variable tp.
-- * intl/l10nflist.c (_nl_normalize_codeset): Use unsigned char *
-- for type of codeset. For loosing Solaris systems.
-- * intl/loadinfo.h: Adapt prototype of _nl_normalize_codeset.
-- * intl/bindtextdom.c (BINDTEXTDOMAIN): Don't define local variable
-- len if not needed.
-- Patches by Jim Meyering.
-+ * Version 0.10.39 released.
-
--1998-04-28 Ulrich Drepper <drepper@cygnus.com>
--
-- * loadmsgcat.c (_nl_load_domain): Don't assign the element use_mmap if
-- mmap is not supported.
--
-- * hash-string.h: Don't include <values.h>.
--
--1998-04-27 Ulrich Drepper <drepper@cygnus.com>
--
-- * textdomain.c: Use strdup is available.
--
-- * localealias.c: Define HAVE_MEMPCPY so that we can use this
-- function. Define and use semapahores to protect modfication of
-- global objects when compiling for glibc. Add code to allow
-- freeing alias table.
--
-- * l10nflist.c: Don't assume stpcpy not being a macro.
--
-- * gettextP.h: Define internal_function macri if not already done.
-- Use glibc byte-swap macros instead of defining SWAP when compiled
-- for glibc.
-- (struct loaded_domain): Add elements to allow unloading.
--
-- * Makefile.in (distclean): Don't remove libintl.h here.
--
-- * bindtextdomain.c: Carry over changes from glibc. Use strdup if
-- available.
--
-- * dcgettext.c: Don't assume stpcpy not being a macro. Mark internal
-- functions. Add memory freeing code for glibc.
--
-- * dgettext.c: Update copyright.
--
-- * explodename.c: Include stdlib.h and string.h only if they exist.
-- Use strings.h eventually.
--
-- * finddomain.c: Mark internal functions. Use strdup if available.
-- Add memory freeing code for glibc.
--
--1997-10-10 20:00 Ulrich Drepper <drepper@cygnus.com>
--
-- * libgettext.h: Fix dummy textdomain and bindtextdomain macros.
-- They should return reasonable values.
-- Reported by Tom Tromey <tromey@cygnus.com>.
--
--1997-09-16 03:33 Ulrich Drepper <drepper@cygnus.com>
--
-- * libgettext.h: Define PARAMS also to `args' if __cplusplus is defined.
-- * intlh.inst.in: Likewise.
-- Reported by Jean-Marc Lasgouttes <Jean-Marc.Lasgouttes@inria.fr>.
--
-- * libintl.glibc: Update from current glibc version.
--
--1997-09-06 02:10 Ulrich Drepper <drepper@cygnus.com>
--
-- * intlh.inst.in: Reformat copyright.
--
--1997-08-19 15:22 Ulrich Drepper <drepper@cygnus.com>
--
-- * dcgettext.c (DCGETTEXT): Remove wrong comment.
--
--1997-08-16 00:13 Ulrich Drepper <drepper@cygnus.com>
--
-- * Makefile.in (install-data): Don't change directory to install.
--
--1997-08-01 14:30 Ulrich Drepper <drepper@cygnus.com>
--
-- * cat-compat.c: Fix copyright.
--
-- * localealias.c: Don't define strchr unless !HAVE_STRCHR.
--
-- * loadmsgcat.c: Update copyright. Fix typos.
--
-- * l10nflist.c: Don't define strchr unless !HAVE_STRCHR.
-- (_nl_make_l10nflist): Handle sponsor and revision correctly.
--
-- * gettext.c: Update copyright.
-- * gettext.h: Likewise.
-- * hash-string.h: Likewise.
--
-- * finddomain.c: Remoave dead code. Define strchr only if
-- !HAVE_STRCHR.
--
-- * explodename.c: Include <sys/types.h>.
--
-- * explodename.c: Reformat copyright text.
-- (_nl_explode_name): Fix typo.
--
-- * dcgettext.c: Define and use __set_errno.
-- (guess_category_value): Don't use setlocale if HAVE_LC_MESSAGES is
-- not defined.
--
-- * bindtextdom.c: Pretty printing.
--
--1997-05-01 02:25 Ulrich Drepper <drepper@cygnus.com>
--
-- * dcgettext.c (guess_category_value): Don't depend on
-- HAVE_LC_MESSAGES. We don't need the macro here.
-- Patch by Bruno Haible <haible@ilog.fr>.
--
-- * cat-compat.c (textdomain): DoN't refer to HAVE_SETLOCALE_NULL
-- macro. Instead use HAVE_LOCALE_NULL and define it when using
-- glibc, as in dcgettext.c.
-- Patch by Bruno Haible <haible@ilog.fr>.
--
-- * Makefile.in (CPPFLAGS): New variable. Reported by Franc,ois
-- Pinard.
--
--Mon Mar 10 06:51:17 1997 Ulrich Drepper <drepper@cygnus.com>
--
-- * Makefile.in: Implement handling of libtool.
--
-- * gettextP.h: Change data structures for use of generic lowlevel
-- i18n file handling.
--
--Wed Dec 4 20:21:18 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * textdomain.c: Put parentheses around arguments of memcpy macro
-- definition.
-- * localealias.c: Likewise.
-- * l10nflist.c: Likewise.
-- * finddomain.c: Likewise.
-- * bindtextdom.c: Likewise.
-- Reported by Thomas Esken.
--
--Mon Nov 25 22:57:51 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * textdomain.c: Move definition of `memcpy` macro to right
-- position.
--
--Fri Nov 22 04:01:58 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * finddomain.c [!HAVE_STRING_H && !_LIBC]: Define memcpy using
-- bcopy if not already defined. Reported by Thomas Esken.
-- * bindtextdom.c: Likewise.
-- * l10nflist.c: Likewise.
-- * localealias.c: Likewise.
-- * textdomain.c: Likewise.
--
--Tue Oct 29 11:10:27 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * Makefile.in (libdir): Change to use exec_prefix instead of
-- prefix. Reported by Knut-HåvardAksnes <etokna@eto.ericsson.se>.
--
--Sat Aug 31 03:07:09 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * l10nflist.c (_nl_normalize_codeset): We convert to lower case,
-- so don't prepend uppercase `ISO' for only numeric arg.
--
--Fri Jul 19 00:15:46 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * l10nflist.c: Move inclusion of argz.h, ctype.h, stdlib.h after
-- definition of _GNU_SOURCE. Patch by Roland McGrath.
--
-- * Makefile.in (uninstall): Fix another bug with `for' loop and
-- empty arguments. Patch by Jim Meyering. Correct name os
-- uninstalled files: no intl- prefix anymore.
--
-- * Makefile.in (install-data): Again work around shells which
-- cannot handle mpty for list. Reported by Jim Meyering.
--
--Sat Jul 13 18:11:35 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * Makefile.in (install): Split goal. Now depend on install-exec
-- and install-data.
-- (install-exec, install-data): New goals. Created from former
-- install goal.
-- Reported by Karl Berry.
--
--Sat Jun 22 04:58:14 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * Makefile.in (MKINSTALLDIRS): New variable. Path to
-- mkinstalldirs script.
-- (install): use MKINSTALLDIRS variable or if the script is not present
-- try to find it in the $top_scrdir).
--
--Wed Jun 19 02:56:56 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * l10nflist.c: Linux libc *partly* includes the argz_* functions.
-- Grr. Work around by renaming the static version and use macros
-- for renaming.
--
--Tue Jun 18 20:11:17 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * l10nflist.c: Correct presence test macros of __argz_* functions.
--
-- * l10nflist.c: Include <argz.h> based on test of it instead when
-- __argz_* functions are available.
-- Reported by Andreas Schwab.
--
--Thu Jun 13 15:17:44 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * explodename.c, l10nflist.c: Define NULL for dumb systems.
--
--Tue Jun 11 17:05:13 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * intlh.inst.in, libgettext.h (dcgettext): Rename local variable
-- result to __result to prevent name clash.
--
-- * l10nflist.c, localealias.c, dcgettext.c: Define _GNU_SOURCE to
-- get prototype for stpcpy and strcasecmp.
--
-- * intlh.inst.in, libgettext.h: Move declaration of
-- `_nl_msg_cat_cntr' outside __extension__ block to prevent warning
-- from gcc's -Wnested-extern option.
--
--Fri Jun 7 01:58:00 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * Makefile.in (install): Remove comment.
--
--Thu Jun 6 17:28:17 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * Makefile.in (install): Work around for another Buglix stupidity.
-- Always use an `else' close for `if's. Reported by Nelson Beebe.
--
-- * Makefile.in (intlh.inst): Correct typo in phony rule.
-- Reported by Nelson Beebe.
--
--Thu Jun 6 01:49:52 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * dcgettext.c (read_alias_file): Rename variable alloca_list to
-- block_list as the macro calls assume.
-- Patch by Eric Backus.
--
-- * localealias.c [!HAVE_ALLOCA]: Define alloca as macro using
-- malloc.
-- (read_alias_file): Rename varriabe alloca_list to block_list as the
-- macro calls assume.
-- Patch by Eric Backus.
--
-- * l10nflist.c: Correct conditional for <argz.h> inclusion.
-- Reported by Roland McGrath.
--
-- * Makefile.in (all): Depend on all-@USE_INCLUDED_LIBINTL@, not
-- all-@USE_NLS@.
--
-- * Makefile.in (install): intlh.inst comes from local dir, not
-- $(srcdir).
--
-- * Makefile.in (intlh.inst): Special handling of this goal. If
-- used in gettext, this is really a rul to construct this file. If
-- used in any other package it is defined as a .PHONY rule with
-- empty body.
--
-- * finddomain.c: Extract locale file information handling into
-- l10nfile.c. Rename local stpcpy__ function to stpcpy.
--
-- * dcgettext.c (stpcpy): Add local definition.
--
-- * l10nflist.c: Solve some portability problems. Patches partly by
-- Thomas Esken. Add local definition of stpcpy.
--
--Tue Jun 4 02:47:49 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * intlh.inst.in: Don't depend including <locale.h> on
-- HAVE_LOCALE_H. Instead configure must rewrite this fiile
-- depending on the result of the configure run.
--
-- * Makefile.in (install): libintl.inst is now called intlh.inst.
-- Add rules for updating intlh.inst from intlh.inst.in.
--
-- * libintl.inst: Renamed to intlh.inst.in.
--
-- * localealias.c, dcgettext.c [__GNUC__]: Define HAVE_ALLOCA to 1
-- because gcc has __buitlin_alloca.
-- Reported by Roland McGrath.
--
--Mon Jun 3 00:32:16 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * Makefile.in (installcheck): New goal to fulfill needs of
-- automake's distcheck.
--
-- * Makefile.in (install): Reorder commands so that VERSION is
-- found.
--
-- * Makefile.in (gettextsrcdir): Now use subdirectory intl/ in
-- @datadir@/gettext.
-- (COMSRCS): Add l10nfile.c.
-- (OBJECTS): Add l10nfile.o.
-- (DISTFILES): Rename to DISTFILE.normal. Remove $(DISTFILES.common).
-- (DISTFILE.gettext): Remove $(DISTFILES.common).
-- (all-gettext): Remove goal.
-- (install): If $(PACKAGE) = gettext install, otherwose do nothing. No
-- package but gettext itself should install libintl.h + headers.
-- (dist): Extend goal to work for gettext, too.
-- (dist-gettext): Remove goal.
--
-- * dcgettext.c [!HAVE_ALLOCA]: Define macro alloca by using malloc.
--
--Sun Jun 2 17:33:06 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * loadmsgcat.c (_nl_load_domain): Parameter is now comes from
-- find_l10nfile.
--
--Sat Jun 1 02:23:03 1996 Ulrich Drepper <drepper@cygnus.com>
--
-- * l10nflist.c (__argz_next): Add definition.
--
-- * dcgettext.c [!HAVE_ALLOCA]: Add code for handling missing alloca
-- code. Use new l10nfile handling.
--
-- * localealias.c [!HAVE_ALLOCA]: Add code for handling missing
-- alloca code.
--
-- * l10nflist.c: Initial revision.
--
--Tue Apr 2 18:51:18 1996 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (all-gettext): New goal. Same as all-yes.
--
--Thu Mar 28 23:01:22 1996 Karl Eichwalder <ke@ke.central.de>
--
-- * Makefile.in (gettextsrcdir): Define using @datadir@.
--
--Tue Mar 26 12:39:14 1996 Ulrich Drepper <drepper@myware>
--
-- * finddomain.c: Include <ctype.h>. Reported by Roland McGrath.
--
--Sat Mar 23 02:00:35 1996 Ulrich Drepper <drepper@myware>
--
-- * finddomain.c (stpcpy): Rename to stpcpy__ to prevent clashing
-- with external declaration.
--
--Sat Mar 2 00:47:09 1996 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (all-no): Rename from all_no.
--
--Sat Feb 17 00:25:59 1996 Ulrich Drepper <drepper@myware>
--
-- * gettextP.h [loaded_domain]: Array `successor' must now contain up
-- to 63 elements (because of codeset name normalization).
--
-- * finddomain.c: Implement codeset name normalization.
--
--Thu Feb 15 04:39:09 1996 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (all): Define to `all-@USE_NLS@'.
-- (all-yes, all_no): New goals. `all-no' is noop, `all-yes'
-- is former all.
--
--Mon Jan 15 21:46:01 1996 Howard Gayle <howard@hal.com>
--
-- * localealias.c (alias_compare): Increment string pointers in loop
-- of strcasecmp replacement.
--
--Fri Dec 29 21:16:34 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (install-src): Who commented this goal out ? :-)
--
--Fri Dec 29 15:08:16 1995 Ulrich Drepper <drepper@myware>
--
-- * dcgettext.c (DCGETTEXT): Save `errno'. Failing system calls
-- should not effect it because a missing catalog is no error.
-- Reported by Harald K<o:>nig <koenig@tat.physik.uni-tuebingen.de>.
--
--Tue Dec 19 22:09:13 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (Makefile): Explicitly use $(SHELL) for running
-- shell scripts.
--
--Fri Dec 15 17:34:59 1995 Andreas Schwab <schwab@issan.informatik.uni-dortmund.de>
--
-- * Makefile.in (install-src): Only install library and header when
-- we use the own implementation. Don't do it when using the
-- system's gettext or catgets functions.
--
-- * dcgettext.c (find_msg): Must not swap domain->hash_size here.
--
--Sat Dec 9 16:24:37 1995 Ulrich Drepper <drepper@myware>
--
-- * localealias.c, libintl.inst, libgettext.h, hash-string.h,
-- gettextP.h, finddomain.c, dcgettext.c, cat-compat.c:
-- Use PARAMS instead of __P. Suggested by Roland McGrath.
--
--Tue Dec 5 11:39:14 1995 Larry Schwimmer <rosebud@cyclone.stanford.edu>
--
-- * libgettext.h: Use `#if !defined (_LIBINTL_H)' instead of `#if
-- !_LIBINTL_H' because Solaris defines _LIBINTL_H as empty.
--
--Mon Dec 4 15:42:07 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (install-src):
-- Install libintl.inst instead of libintl.h.install.
--
--Sat Dec 2 22:51:38 1995 Marcus Daniels <marcus@sysc.pdx.edu>
--
-- * cat-compat.c (textdomain):
-- Reverse order in which files are tried you load. First
-- try local file, when this failed absolute path.
--
--Wed Nov 29 02:03:53 1995 Nelson H. F. Beebe <beebe@math.utah.edu>
--
-- * cat-compat.c (bindtextdomain): Add missing { }.
--
--Sun Nov 26 18:21:41 1995 Ulrich Drepper <drepper@myware>
--
-- * libintl.inst: Add missing __P definition. Reported by Nelson Beebe.
--
-- * Makefile.in:
-- Add dummy `all' and `dvi' goals. Reported by Tom Tromey.
--
--Sat Nov 25 16:12:01 1995 Franc,ois Pinard <pinard@iro.umontreal.ca>
--
-- * hash-string.h: Capitalize arguments of macros.
--
--Sat Nov 25 12:01:36 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (DISTFILES): Prevent files names longer than 13
-- characters. libintl.h.glibc->libintl.glibc,
-- libintl.h.install->libintl.inst. Reported by Joshua R. Poulson.
--
--Sat Nov 25 11:31:12 1995 Eric Backus <ericb@lsid.hp.com>
--
-- * dcgettext.c: Fix bug in preprocessor conditionals.
--
--Sat Nov 25 02:35:27 1995 Nelson H. F. Beebe <beebe@math.utah.edu>
--
-- * libgettext.h: Solaris cc does not understand
-- #if !SYMBOL1 && !SYMBOL2. Sad but true.
--
--Thu Nov 23 16:22:14 1995 Ulrich Drepper <drepper@myware>
--
-- * hash-string.h (hash_string):
-- Fix for machine with >32 bit `unsigned long's.
--
-- * dcgettext.c (DCGETTEXT):
-- Fix horrible bug in loop for alternative translation.
--
--Thu Nov 23 01:45:29 1995 Ulrich Drepper <drepper@myware>
--
-- * po2tbl.sed.in, linux-msg.sed, xopen-msg.sed:
-- Some further simplifications in message number generation.
--
--Mon Nov 20 21:08:43 1995 Ulrich Drepper <drepper@myware>
--
-- * libintl.h.glibc: Use __const instead of const in prototypes.
--
-- * Makefile.in (install-src):
-- Install libintl.h.install instead of libintl.h. This
-- is a stripped-down version. Suggested by Peter Miller.
--
-- * libintl.h.install, libintl.h.glibc: Initial revision.
--
-- * localealias.c (_nl_expand_alias, read_alias_file):
-- Protect prototypes in type casts by __P.
--
--Tue Nov 14 16:43:58 1995 Ulrich Drepper <drepper@myware>
--
-- * hash-string.h: Correct prototype for hash_string.
--
--Sun Nov 12 12:42:30 1995 Ulrich Drepper <drepper@myware>
--
-- * hash-string.h (hash_string): Add prototype.
--
-- * gettextP.h: Fix copyright.
-- (SWAP): Add prototype.
--
--Wed Nov 8 22:56:33 1995 Ulrich Drepper <drepper@myware>
--
-- * localealias.c (read_alias_file): Forgot sizeof.
-- Avoid calling *printf function. This introduces a big overhead.
-- Patch by Roland McGrath.
--
--Tue Nov 7 14:21:08 1995 Ulrich Drepper <drepper@myware>
--
-- * finddomain.c, cat-compat.c: Wrong indentation in #if for stpcpy.
--
-- * finddomain.c (stpcpy):
-- Define substitution function local. The macro was to flaky.
--
-- * cat-compat.c: Fix typo.
--
-- * xopen-msg.sed, linux-msg.sed:
-- While bringing message number to right place only accept digits.
--
-- * linux-msg.sed, xopen-msg.sed: Now that the counter does not have
-- leading 0s we don't need to remove them. Reported by Marcus
-- Daniels.
--
-- * Makefile.in (../po/cat-id-tbl.o): Use $(top_srdir) in
-- dependency. Reported by Marcus Daniels.
--
-- * cat-compat.c: (stpcpy) [!_LIBC && !HAVE_STPCPY]: Define replacement.
-- Generally cleanup using #if instead of #ifndef.
--
-- * Makefile.in: Correct typos in comment. By Franc,ois Pinard.
--
--Mon Nov 6 00:27:02 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (install-src): Don't install libintl.h and libintl.a
-- if we use an available gettext implementation.
--
--Sun Nov 5 22:02:08 1995 Ulrich Drepper <drepper@myware>
--
-- * libgettext.h: Fix typo: HAVE_CATGETTS -> HAVE_CATGETS. Reported
-- by Franc,ois Pinard.
--
-- * libgettext.h: Use #if instead of #ifdef/#ifndef.
--
-- * finddomain.c:
-- Comments describing what has to be done should start with FIXME.
--
--Sun Nov 5 19:38:01 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (DISTFILES): Split. Use DISTFILES with normal meaning.
-- DISTFILES.common names the files common to both dist goals.
-- DISTFILES.gettext are the files only distributed in GNU gettext.
--
--Sun Nov 5 17:32:54 1995 Ulrich Drepper <drepper@myware>
--
-- * dcgettext.c (DCGETTEXT): Correct searching in derived locales.
-- This was necessary since a change in _nl_find_msg several weeks
-- ago. I really don't know this is still not fixed.
--
--Sun Nov 5 12:43:12 1995 Ulrich Drepper <drepper@myware>
--
-- * loadmsgcat.c (_nl_load_domain): Test for FILENAME == NULL. This
-- might mark a special condition.
--
-- * finddomain.c (make_entry_rec): Don't make illegal entry as decided.
--
-- * Makefile.in (dist): Suppress error message when ln failed.
-- Get files from $(srcdir) explicitly.
--
-- * libgettext.h (gettext_const): Rename to gettext_noop.
--
--Fri Nov 3 07:36:50 1995 Ulrich Drepper <drepper@myware>
--
-- * finddomain.c (make_entry_rec):
-- Protect against wrong locale names by testing mask.
--
-- * libgettext.h (gettext_const): Add macro definition.
-- Capitalize macro arguments.
--
--Thu Nov 2 23:15:51 1995 Ulrich Drepper <drepper@myware>
--
-- * finddomain.c (_nl_find_domain):
-- Test for pointer != NULL before accessing value.
-- Reported by Tom Tromey.
--
-- * gettext.c (NULL):
-- Define as (void*)0 instad of 0. Reported by Franc,ois Pinard.
--
--Mon Oct 30 21:28:52 1995 Ulrich Drepper <drepper@myware>
--
-- * po2tbl.sed.in: Serious typo bug fixed by Jim Meyering.
--
--Sat Oct 28 23:20:47 1995 Ulrich Drepper <drepper@myware>
--
-- * libgettext.h: Disable dcgettext optimization for Solaris 2.3.
--
-- * localealias.c (alias_compare):
-- Peter Miller reported that tolower in some systems is
-- even dumber than I thought. Protect call by `isupper'.
--
--Fri Oct 27 22:22:51 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (libdir, includedir): New variables.
-- (install-src): Install libintl.a and libintl.h in correct dirs.
--
--Fri Oct 27 22:07:29 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (SOURCES): Fix typo: intrl.compat.c -> intl-compat.c.
--
-- * po2tbl.sed.in: Patch for buggy SEDs by Christian von Roques.
--
-- * localealias.c:
-- Fix typo and superflous test. Reported by Christian von Roques.
--
--Fri Oct 6 11:52:05 1995 Ulrich Drepper <drepper@myware>
--
-- * finddomain.c (_nl_find_domain):
-- Correct some remainder from the pre-CEN syntax. Now
-- we don't have a constant number of successors anymore.
--
--Wed Sep 27 21:41:13 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (DISTFILES): Add libintl.h.glibc.
--
-- * Makefile.in (dist-libc): Add goal for packing sources for glibc.
-- (COMSRCS, COMHDRS): Splitted to separate sources shared with glibc.
--
-- * loadmsgcat.c: Forget to continue #if line.
--
-- * localealias.c:
-- [_LIBC]: Rename strcasecmp to __strcasecmp to keep ANSI C name
-- space clean.
--
-- * dcgettext.c, finddomain.c: Better comment to last change.
--
-- * loadmsgcat.c:
-- [_LIBC]: Rename fstat, open, close, read, mmap, and munmap to
-- __fstat, __open, __close, __read, __mmap, and __munmap resp
-- to keep ANSI C name space clean.
--
-- * finddomain.c:
-- [_LIBC]: Rename stpcpy to __stpcpy to keep ANSI C name space clean.
--
-- * dcgettext.c:
-- [_LIBC]: Rename getced and stpcpy to __getcwd and __stpcpy resp to
-- keep ANSI C name space clean.
--
-- * libgettext.h:
-- Include sys/types.h for those old SysV systems out there.
-- Reported by Francesco Potorti`.
--
-- * loadmsgcat.c (use_mmap): Define if compiled for glibc.
--
-- * bindtextdom.c: Include all those standard headers
-- unconditionally if _LIBC is defined.
--
-- * finddomain.c: Fix 2 times defiend -> defined.
--
-- * textdomain.c: Include libintl.h instead of libgettext.h when
-- compiling for glibc. Include all those standard headers
-- unconditionally if _LIBC is defined.
--
-- * localealias.c, loadmsgcat.c: Prepare to be compiled in glibc.
--
-- * gettext.c:
-- Include libintl.h instead of libgettext.h when compiling for glibc.
-- Get NULL from stddef.h if we compile for glibc.
--
-- * finddomain.c: Include libintl.h instead of libgettext.h when
-- compiling for glibc. Include all those standard headers
-- unconditionally if _LIBC is defined.
--
-- * dcgettext.c: Include all those standard headers unconditionally
-- if _LIBC is defined.
--
-- * dgettext.c: If compiled in glibc include libintl.h instead of
-- libgettext.h.
-- (locale.h): Don't rely on HAVE_LOCALE_H when compiling for glibc.
--
-- * dcgettext.c: If compiled in glibc include libintl.h instead of
-- libgettext.h.
-- (getcwd): Don't rely on HAVE_GETCWD when compiling for glibc.
--
-- * bindtextdom.c:
-- If compiled in glibc include libintl.h instead of libgettext.h.
--
--Mon Sep 25 22:23:06 1995 Ulrich Drepper <drepper@myware>
--
-- * localealias.c (_nl_expand_alias): Don't call bsearch if NMAP <= 0.
-- Reported by Marcus Daniels.
--
-- * cat-compat.c (bindtextdomain):
-- String used in putenv must not be recycled.
-- Reported by Marcus Daniels.
--
-- * libgettext.h (__USE_GNU_GETTEXT):
-- Additional symbol to signal that we use GNU gettext
-- library.
--
-- * cat-compat.c (bindtextdomain):
-- Fix bug with the strange stpcpy replacement.
-- Reported by Nelson Beebe.
--
--Sat Sep 23 08:23:51 1995 Ulrich Drepper <drepper@myware>
--
-- * cat-compat.c: Include <string.h> for stpcpy prototype.
--
-- * localealias.c (read_alias_file):
-- While expand strdup code temporary variable `cp' hided
-- higher level variable with same name. Rename to `tp'.
--
-- * textdomain.c (textdomain):
-- Avoid warning by using temporary variable in strdup code.
--
-- * finddomain.c (_nl_find_domain): Remove unused variable `application'.
--
--Thu Sep 21 15:51:44 1995 Ulrich Drepper <drepper@myware>
--
-- * localealias.c (alias_compare):
-- Use strcasecmp() only if available. Else use
-- implementation in place.
--
-- * intl-compat.c:
-- Wrapper functions now call *__ functions instead of __*.
--
-- * libgettext.h: Declare prototypes for *__ functions instead for __*.
--
-- * cat-compat.c, loadmsgcat.c:
-- Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
-- of the standard libc and so prevent libintl.a from being used
-- standalone.
--
-- * bindtextdom.c:
-- Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
-- of the standard libc and so prevent libintl.a from being used
-- standalone.
-- Rename to bindtextdomain__ if not used in GNU C Library.
--
-- * dgettext.c:
-- Rename function to dgettext__ if not used in GNU C Library.
--
-- * gettext.c:
-- Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
-- of the standard libc and so prevent libintl.a from being used
-- standalone.
-- Functions now called gettext__ if not used in GNU C Library.
--
-- * dcgettext.c, localealias.c, textdomain.c, finddomain.c:
-- Don't use xmalloc, xstrdup, and stpcpy. These functions are not part
-- of the standard libc and so prevent libintl.a from being used
-- standalone.
--
--Sun Sep 17 23:14:49 1995 Ulrich Drepper <drepper@myware>
--
-- * finddomain.c: Correct some bugs in handling of CEN standard
-- locale definitions.
--
--Thu Sep 7 01:49:28 1995 Ulrich Drepper <drepper@myware>
--
-- * finddomain.c: Implement CEN syntax.
--
-- * gettextP.h (loaded_domain): Extend number of successors to 31.
--
--Sat Aug 19 19:25:29 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (aliaspath): Remove path to X11 locale dir.
--
-- * Makefile.in: Make install-src depend on install. This helps
-- gettext to install the sources and other packages can use the
-- install goal.
--
--Sat Aug 19 15:19:33 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (uninstall): Remove stuff installed by install-src.
--
--Tue Aug 15 13:13:53 1995 Ulrich Drepper <drepper@myware>
--
-- * VERSION.in: Initial revision.
--
-- * Makefile.in (DISTFILES):
-- Add VERSION file. This is not necessary for gettext, but
-- for other packages using this library.
--
--Tue Aug 15 06:16:44 1995 Ulrich Drepper <drepper@myware>
--
-- * gettextP.h (_nl_find_domain):
-- New prototype after changing search strategy.
--
-- * finddomain.c (_nl_find_domain):
-- We now try only to find a specified catalog. Fall back to other
-- catalogs listed in the locale list is now done in __dcgettext.
--
-- * dcgettext.c (__dcgettext):
-- Now we provide message fall back even to different languages.
-- I.e. if a message is not available in one language all the other
-- in the locale list a tried. Formerly fall back was only possible
-- within one language. Implemented by moving one loop from
-- _nl_find_domain to here.
--
--Mon Aug 14 23:45:50 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (gettextsrcdir):
-- Directory where source of GNU gettext library are made
-- available.
-- (INSTALL, INSTALL_DATA): Programs used for installing sources.
-- (gettext-src): New. Rule to install GNU gettext sources for use in
-- gettextize shell script.
--
--Sun Aug 13 14:40:48 1995 Ulrich Drepper <drepper@myware>
--
-- * loadmsgcat.c (_nl_load_domain):
-- Use mmap for loading only when munmap function is
-- also available.
--
-- * Makefile.in (install): Depend on `all' goal.
--
--Wed Aug 9 11:04:33 1995 Ulrich Drepper <drepper@myware>
--
-- * localealias.c (read_alias_file):
-- Do not overwrite '\n' when terminating alias value string.
--
-- * localealias.c (read_alias_file):
-- Handle long lines. Ignore the rest not fitting in
-- the buffer after the initial `fgets' call.
--
--Wed Aug 9 00:54:29 1995 Ulrich Drepper <drepper@myware>
--
-- * gettextP.h (_nl_load_domain):
-- Add prototype, replacing prototype for _nl_load_msg_cat.
--
-- * finddomain.c (_nl_find_domain):
-- Remove unneeded variable filename and filename_len.
-- (expand_alias): Remove prototype because functions does not
-- exist anymore.
--
-- * localealias.c (read_alias_file):
-- Change type of fname_len parameter to int.
-- (xmalloc): Add prototype.
--
-- * loadmsgcat.c: Better prototypes for xmalloc.
--
--Tue Aug 8 22:30:39 1995 Ulrich Drepper <drepper@myware>
--
-- * finddomain.c (_nl_find_domain):
-- Allow alias name to be constructed from the four components.
--
-- * Makefile.in (aliaspath): New variable. Set to preliminary value.
-- (SOURCES): Add localealias.c.
-- (OBJECTS): Add localealias.o.
--
-- * gettextP.h: Add prototype for _nl_expand_alias.
--
-- * finddomain.c: Aliasing handled in intl/localealias.c.
--
-- * localealias.c: Aliasing for locale names.
--
-- * bindtextdom.c: Better prototypes for xmalloc and xstrdup.
--
--Mon Aug 7 23:47:42 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (DISTFILES): gettext.perl is now found in misc/.
--
-- * cat-compat.c (bindtextdomain):
-- Correct implementation. dirname parameter was not used.
-- Reported by Marcus Daniels.
--
-- * gettextP.h (loaded_domain):
-- New fields `successor' and `decided' for oo, lazy
-- message handling implementation.
--
-- * dcgettext.c:
-- Adopt for oo, lazy message handliing.
-- Now we can inherit translations from less specific locales.
-- (find_msg): New function.
--
-- * loadmsgcat.c, finddomain.c:
-- Complete rewrite. Implement oo, lazy message handling :-).
-- We now have an additional environment variable `LANGUAGE' with
-- a higher priority than LC_ALL for the LC_MESSAGE locale.
-- Here we can set a colon separated list of specifications each
-- of the form `language[_territory[.codeset]][@modifier]'.
--
--Sat Aug 5 09:55:42 1995 Ulrich Drepper <drepper@myware>
--
-- * finddomain.c (unistd.h):
-- Include to get _PC_PATH_MAX defined on system having it.
--
--Fri Aug 4 22:42:00 1995 Ulrich Drepper <drepper@myware>
--
-- * finddomain.c (stpcpy): Include prototype.
--
-- * Makefile.in (dist): Remove `copying instead' message.
--
--Wed Aug 2 18:52:03 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (ID, TAGS): Do not use $^.
--
--Tue Aug 1 20:07:11 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (TAGS, ID): Use $^ as command argument.
-- (TAGS): Give etags -o option t write to current directory,
-- not $(srcdir).
-- (ID): Use $(srcdir) instead os $(top_srcdir)/src.
-- (distclean): Remove ID.
--
--Sun Jul 30 11:51:46 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (gnulocaledir):
-- New variable, always using share/ for data directory.
-- (DEFS): Add GNULOCALEDIR, used in finddomain.c.
--
-- * finddomain.c (_nl_default_dirname):
-- Set to GNULOCALEDIR, because it always has to point
-- to the directory where GNU gettext Library writes it to.
--
-- * intl-compat.c (textdomain, bindtextdomain):
-- Undefine macros before function definition.
--
--Sat Jul 22 01:10:02 1995 Ulrich Drepper <drepper@myware>
--
-- * libgettext.h (_LIBINTL_H):
-- Protect definition in case where this file is included as
-- libgettext.h on Solaris machines. Add comment about this.
--
--Wed Jul 19 02:36:42 1995 Ulrich Drepper <drepper@myware>
--
-- * intl-compat.c (textdomain): Correct typo.
--
--Wed Jul 19 01:51:35 1995 Ulrich Drepper <drepper@myware>
--
-- * dcgettext.c (dcgettext): Function now called __dcgettext.
--
-- * dgettext.c (dgettext): Now called __dgettext and calls
-- __dcgettext.
--
-- * gettext.c (gettext):
-- Function now called __gettext and calls __dgettext.
--
-- * textdomain.c (textdomain): Function now called __textdomain.
--
-- * bindtextdom.c (bindtextdomain): Function now called
-- __bindtextdomain.
--
-- * intl-compat.c: Initial revision.
--
-- * Makefile.in (SOURCES): Add intl-compat.c.
-- (OBJECTS): We always compile the GNU gettext library functions.
-- OBJECTS contains all objects but cat-compat.o, ../po/cat-if-tbl.o,
-- and intl-compat.o.
-- (GETTOBJS): Contains now only intl-compat.o.
--
-- * libgettext.h:
-- Re-include protection matches dualistic character of libgettext.h.
-- For all functions in GNU gettext library define __ counter part.
--
-- * finddomain.c (strchr): Define as index if not found in C library.
-- (_nl_find_domain): For relative paths paste / in between.
--
--Tue Jul 18 16:37:45 1995 Ulrich Drepper <drepper@myware>
--
-- * loadmsgcat.c, finddomain.c: Add inclusion of sys/types.h.
--
-- * xopen-msg.sed: Fix bug with `msgstr ""' lines.
-- A little bit better comments.
--
--Tue Jul 18 01:18:27 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in:
-- po-mode.el, makelinks, combine-sh are now found in ../misc.
--
-- * po-mode.el, makelinks, combine-sh, elisp-comp:
-- Moved to ../misc/.
--
-- * libgettext.h, gettextP.h, gettext.h: Uniform test for __STDC__.
--
--Sun Jul 16 22:33:02 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (INSTALL, INSTALL_DATA): New variables.
-- (install-data, uninstall): Install/uninstall .elc file.
--
-- * po-mode.el (Installation comment):
-- Add .pox as possible extension of .po files.
--
--Sun Jul 16 13:23:27 1995 Ulrich Drepper <drepper@myware>
--
-- * elisp-comp: Complete new version by Franc,ois: This does not
-- fail when not compiling in the source directory.
--
--Sun Jul 16 00:12:17 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (../po/cat-id-tbl.o):
-- Use $(MAKE) instead of make for recursive make.
--
-- * Makefile.in (.el.elc): Use $(SHELL) instead of /bin/sh.
-- (install-exec): Add missing dummy goal.
-- (install-data, uninstall): @ in multi-line shell command at
-- beginning, not in front of echo. Reported by Eric Backus.
--
--Sat Jul 15 00:21:28 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (DISTFILES):
-- Rename libgettext.perl to gettext.perl to fit in 14 chars
-- file systems.
--
-- * gettext.perl:
-- Rename to gettext.perl to fit in 14 chars file systems.
--
--Thu Jul 13 23:17:20 1995 Ulrich Drepper <drepper@myware>
--
-- * cat-compat.c: If !STDC_HEADERS try to include malloc.h.
--
--Thu Jul 13 20:55:02 1995 Ulrich Drepper <drepper@myware>
--
-- * po2tbl.sed.in: Pretty printing.
--
-- * linux-msg.sed, xopen-msg.sed:
-- Correct bugs with handling substitute flags in branches.
--
-- * hash-string.h (hash_string):
-- Old K&R compilers don't under stand `unsigned char'.
--
-- * gettext.h (nls_uint32):
-- Some old K&R compilers (eg HP) don't understand `unsigned int'.
--
-- * cat-compat.c (msg_to_cat_id): De-ANSI-fy prototypes.
--
--Thu Jul 13 01:34:33 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (ELCFILES): New variable.
-- (DISTFILES): Add elisp-comp.
-- Add implicit rule for .el -> .elc compilation.
-- (install-data): install $ELCFILES
-- (clean): renamed po-to-tbl and po-to-msg to po2tbl and po2msg resp.
--
-- * elisp-comp: Initial revision
--
--Wed Jul 12 16:14:52 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in:
-- cat-id-tbl.c is now found in po/. This enables us to use an identical
-- intl/ directory in all packages.
--
-- * dcgettext.c (dcgettext): hashing does not work for table size <= 2.
--
-- * textdomain.c: fix typo (#if def -> #if defined)
--
--Tue Jul 11 18:44:43 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in (stamp-cat-id): use top_srcdir to address source files
-- (DISTFILES,distclean): move tupdate.perl to src/
--
-- * po-to-tbl.sed.in:
-- add additional jump to clear change flag to recognize multiline strings
--
--Tue Jul 11 01:32:50 1995 Ulrich Drepper <drepper@myware>
--
-- * textdomain.c: Protect inclusion of stdlib.h and string.h.
--
-- * loadmsgcat.c: Protect inclusion of stdlib.h.
--
-- * libgettext.h: Protect inclusion of locale.h.
-- Allow use in C++ programs.
-- Define NULL is not happened already.
--
-- * Makefile.in (DISTFILES): ship po-to-tbl.sed.in instead of
-- po-to-tbl.sed.
-- (distclean): remove po-to-tbl.sed and tupdate.perl.
--
-- * tupdate.perl.in: Substitute Perl path even in exec line.
-- Don't include entries without translation from old .po file.
--
--Tue Jul 4 00:41:51 1995 Ulrich Drepper <drepper@myware>
--
-- * tupdate.perl.in: use "Updated: " in msgid "".
--
-- * cat-compat.c: Fix typo (LOCALDIR -> LOCALEDIR).
-- Define getenv if !__STDC__.
--
-- * bindtextdom.c: Protect stdlib.h and string.h inclusion.
-- Define free if !__STDC__.
--
-- * finddomain.c: Change DEF_MSG_DOM_DIR to LOCALEDIR.
-- Define free if !__STDC__.
--
-- * cat-compat.c: Change DEF_MSG_DOM_DIR to LOCALEDIR.
--
--Mon Jul 3 23:56:30 1995 Ulrich Drepper <drepper@myware>
--
-- * Makefile.in: Use LOCALEDIR instead of DEF_MSG_DOM_DIR.
-- Remove unneeded $(srcdir) from Makefile.in dependency.
--
-- * makelinks: Add copyright and short description.
--
-- * po-mode.el: Last version for 0.7.
--
-- * tupdate.perl.in: Fix die message.
--
-- * dcgettext.c: Protect include of string.h.
--
-- * gettext.c: Protect include of stdlib.h and further tries to get NULL.
--
-- * finddomain.c: Some corrections in includes.
--
-- * Makefile.in (INCLUDES): Prune list correct path to Makefile.in.
--
-- * po-to-tbl.sed: Adopt for new .po file format.
--
-- * linux-msg.sed, xopen-msg.sed: Adopt for new .po file format.
--
--Sun Jul 2 23:55:03 1995 Ulrich Drepper <drepper@myware>
--
-- * tupdate.perl.in: Complete rewrite for new .po file format.
--
--Sun Jul 2 02:06:50 1995 Ulrich Drepper <drepper@myware>
--
-- * First official release. This directory contains all the code
-- needed to internationalize own packages. It provides functions
-- which allow to use the X/Open catgets function with an interface
-- like the Uniforum gettext function. For system which does not
-- have neither of those a complete implementation is provided.
-diff -urN parted-1.4.17.orig/intl/Makefile.in parted-1.4.17/intl/Makefile.in
---- parted-1.4.17.orig/intl/Makefile.in Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/Makefile.in Thu Aug 2 14:26:15 2001
-@@ -1,5 +1,5 @@
- # Makefile for directory with message catalog handling in GNU NLS Utilities.
--# Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
-+# Copyright (C) 1995-1998, 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
-@@ -28,75 +28,106 @@
- prefix = @prefix@
- exec_prefix = @exec_prefix@
- transform = @program_transform_name@
--libdir = $(exec_prefix)/lib
--includedir = $(prefix)/include
--datadir = $(prefix)/@DATADIRNAME@
-+libdir = @libdir@
-+includedir = @includedir@
-+datadir = @datadir@
- localedir = $(datadir)/locale
--gnulocaledir = $(prefix)/share/locale
--gettextsrcdir = @datadir@/gettext/intl
--aliaspath = $(localedir):.
-+gettextsrcdir = $(datadir)/gettext/intl
-+aliaspath = $(localedir)
- subdir = intl
-
- INSTALL = @INSTALL@
- INSTALL_DATA = @INSTALL_DATA@
- MKINSTALLDIRS = @MKINSTALLDIRS@
-+mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac`
-
--l = @l@
-+l = @INTL_LIBTOOL_SUFFIX_PREFIX@
-
- AR = ar
- CC = @CC@
- LIBTOOL = @LIBTOOL@
- RANLIB = @RANLIB@
-+YACC = @INTLBISON@ -y -d
-+YFLAGS = --name-prefix=__gettext
-
--DEFS = -DLOCALEDIR=\"$(localedir)\" -DGNULOCALEDIR=\"$(gnulocaledir)\" \
---DLOCALE_ALIAS_PATH=\"$(aliaspath)\" @DEFS@
-+DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \
-+-DLIBDIR=\"$(libdir)\" @DEFS@
- CPPFLAGS = @CPPFLAGS@
- CFLAGS = @CFLAGS@
- LDFLAGS = @LDFLAGS@
-
- COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
-
--HEADERS = $(COMHDRS) libgettext.h loadinfo.h
-+HEADERS = $(COMHDRS) libgnuintl.h libgettext.h loadinfo.h
- COMHDRS = gettext.h gettextP.h hash-string.h
--SOURCES = $(COMSRCS) intl-compat.c cat-compat.c
-+SOURCES = $(COMSRCS) intl-compat.c
- COMSRCS = bindtextdom.c dcgettext.c dgettext.c gettext.c \
- finddomain.c loadmsgcat.c localealias.c textdomain.c l10nflist.c \
--explodename.c
-+explodename.c dcigettext.c dcngettext.c dngettext.c ngettext.c plural.y \
-+localcharset.c
- OBJECTS = @INTLOBJS@ bindtextdom.$lo dcgettext.$lo dgettext.$lo gettext.$lo \
- finddomain.$lo loadmsgcat.$lo localealias.$lo textdomain.$lo l10nflist.$lo \
--explodename.$lo
--CATOBJS = cat-compat.$lo ../po/cat-id-tbl.$lo
-+explodename.$lo dcigettext.$lo dcngettext.$lo dngettext.$lo ngettext.$lo \
-+plural.$lo localcharset.$lo
- GETTOBJS = intl-compat.$lo
--DISTFILES.common = ChangeLog Makefile.in linux-msg.sed po2tbl.sed.in \
--xopen-msg.sed $(HEADERS) $(SOURCES)
-+DISTFILES.common = Makefile.in \
-+config.charset locale.alias ref-add.sin ref-del.sin $(HEADERS) $(SOURCES)
-+DISTFILES.generated = plural.c
- DISTFILES.normal = VERSION
--DISTFILES.gettext = libintl.glibc intlh.inst.in
-+DISTFILES.gettext = libintl.glibc
-+DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c
-+
-+# Libtool's library version information for libintl.
-+# Before making a gettext release, the gettext maintainer must change this
-+# according to the libtool documentation, section "Library interface versions".
-+# Maintainers of other packages that include the intl directory must *not*
-+# change these values.
-+LTV_CURRENT=1
-+LTV_REVISION=1
-+LTV_AGE=0
-
- .SUFFIXES:
--.SUFFIXES: .c .o .lo
-+.SUFFIXES: .c .y .o .lo .sin .sed
- .c.o:
- $(COMPILE) $<
- .c.lo:
- $(LIBTOOL) --mode=compile $(COMPILE) $<
-
--INCLUDES = -I.. -I. -I$(top_srcdir)/intl -I$(top_srcdir)/lib
-+.y.c:
-+ $(YACC) $(YFLAGS) --output $@ $<
-+ rm -f $*.h
-+
-+.sin.sed:
-+ sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $< > t-$@
-+ mv t-$@ $@
-
--all: all-@USE_INCLUDED_LIBINTL@
-+INCLUDES = -I.. -I. -I$(top_srcdir)/intl
-
--all-yes: libintl.$la intlh.inst
--all-no:
-+all: all-@USE_INCLUDED_LIBINTL@
-+all-yes: libintl.$la libintl.h charset.alias ref-add.sed ref-del.sed
-+all-no: all-no-@BUILD_INCLUDED_LIBINTL@
-+all-no-yes: libgnuintl.$la
-+all-no-no:
-
--libintl.a: $(OBJECTS)
-+libintl.a libgnuintl.a: $(OBJECTS)
- rm -f $@
- $(AR) cru $@ $(OBJECTS)
- $(RANLIB) $@
-
--libintl.la: $(OBJECTS)
-- $(LIBTOOL) --mode=link $(CC) $(LDFLAGS) -o $@ $(OBJECTS) \
-- -version-info 1:0 -rpath $(libdir)
--
--../po/cat-id-tbl.$lo: ../po/cat-id-tbl.c $(top_srcdir)/po/$(PACKAGE).pot
-- cd ../po && $(MAKE) cat-id-tbl.$lo
-+libintl.la libgnuintl.la: $(OBJECTS)
-+ $(LIBTOOL) --mode=link \
-+ $(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \
-+ $(OBJECTS) @LIBICONV@ \
-+ -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \
-+ -rpath $(libdir) \
-+ -no-undefined
-+
-+libintl.h: libgnuintl.h
-+ cp $(srcdir)/libgnuintl.h libintl.h
-+
-+charset.alias: config.charset
-+ $(SHELL) $(srcdir)/config.charset '@host@' > t-$@
-+ mv t-$@ $@
-
- check: all
-
-@@ -104,36 +135,70 @@
- # only use the library should use install instead.
-
- # We must not install the libintl.h/libintl.a files if we are on a
--# system which has the gettext() function in its C library or in a
--# separate library or use the catgets interface. A special case is
--# where configure found a previously installed GNU gettext library.
-+# system which has the GNU gettext() function in its C library or in a
-+# separate library.
- # If you want to use the one which comes with this version of the
- # package, you have to use `configure --with-included-gettext'.
- install: install-exec install-data
- install-exec: all
- if test "$(PACKAGE)" = "gettext" \
- && test '@INTLOBJS@' = '$(GETTOBJS)'; then \
-- if test -r $(MKINSTALLDIRS); then \
-- $(MKINSTALLDIRS) $(libdir) $(includedir); \
-+ $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \
-+ $(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \
-+ $(LIBTOOL) --mode=install \
-+ $(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \
-+ else \
-+ : ; \
-+ fi
-+ if test '@USE_INCLUDED_LIBINTL@' = yes; then \
-+ $(mkinstalldirs) $(DESTDIR)$(libdir); \
-+ temp=$(DESTDIR)$(libdir)/t-charset.alias; \
-+ dest=$(DESTDIR)$(libdir)/charset.alias; \
-+ if test -f $(DESTDIR)$(libdir)/charset.alias; then \
-+ orig=$(DESTDIR)$(libdir)/charset.alias; \
-+ sed -f ref-add.sed $$orig > $$temp; \
-+ $(INSTALL_DATA) $$temp $$dest; \
-+ rm -f $$temp; \
- else \
-- $(top_srcdir)/mkinstalldirs $(libdir) $(includedir); \
-+ if test @GLIBC21@ = no; then \
-+ orig=charset.alias; \
-+ sed -f ref-add.sed $$orig > $$temp; \
-+ $(INSTALL_DATA) $$temp $$dest; \
-+ rm -f $$temp; \
-+ fi; \
- fi; \
-- $(INSTALL_DATA) intlh.inst $(includedir)/libintl.h; \
-- $(INSTALL_DATA) libintl.a $(libdir)/libintl.a; \
-+ $(mkinstalldirs) $(DESTDIR)$(localedir); \
-+ test -f $(DESTDIR)$(localedir)/locale.alias \
-+ && orig=$(DESTDIR)$(localedir)/locale.alias \
-+ || orig=$(srcdir)/locale.alias; \
-+ temp=$(DESTDIR)$(localedir)/t-locale.alias; \
-+ dest=$(DESTDIR)$(localedir)/locale.alias; \
-+ sed -f ref-add.sed $$orig > $$temp; \
-+ $(INSTALL_DATA) $$temp $$dest; \
-+ rm -f $$temp; \
- else \
- : ; \
- fi
- install-data: all
- if test "$(PACKAGE)" = "gettext"; then \
-- if test -r $(MKINSTALLDIRS); then \
-- $(MKINSTALLDIRS) $(gettextsrcdir); \
-- else \
-- $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \
-- fi; \
-- $(INSTALL_DATA) VERSION $(gettextsrcdir)/VERSION; \
-+ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
-+ $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \
-+ $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \
- dists="$(DISTFILES.common)"; \
- for file in $$dists; do \
-- $(INSTALL_DATA) $(srcdir)/$$file $(gettextsrcdir)/$$file; \
-+ $(INSTALL_DATA) $(srcdir)/$$file \
-+ $(DESTDIR)$(gettextsrcdir)/$$file; \
-+ done; \
-+ chmod a+x $(DESTDIR)$(gettextsrcdir)/config.charset; \
-+ dists="$(DISTFILES.generated)"; \
-+ for file in $$dists; do \
-+ if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
-+ $(INSTALL_DATA) $$dir/$$file \
-+ $(DESTDIR)$(gettextsrcdir)/$$file; \
-+ done; \
-+ dists="$(DISTFILES.obsolete)"; \
-+ for file in $$dists; do \
-+ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
- done; \
- else \
- : ; \
-@@ -143,14 +208,51 @@
- installcheck:
-
- uninstall:
-- dists="$(DISTFILES.common)"; \
-- for file in $$dists; do \
-- rm -f $(gettextsrcdir)/$$file; \
-- done
-+ if test "$(PACKAGE)" = "gettext" \
-+ && test '@INTLOBJS@' = '$(GETTOBJS)'; then \
-+ rm -f $(DESTDIR)$(includedir)/libintl.h; \
-+ $(LIBTOOL) --mode=uninstall \
-+ rm -f $(DESTDIR)$(libdir)/libintl.$la; \
-+ else \
-+ : ; \
-+ fi
-+ if test '@USE_INCLUDED_LIBINTL@' = yes; then \
-+ if test -f $(DESTDIR)$(libdir)/charset.alias; then \
-+ temp=$(DESTDIR)$(libdir)/t-charset.alias; \
-+ dest=$(DESTDIR)$(libdir)/charset.alias; \
-+ sed -f ref-del.sed $$dest > $$temp; \
-+ if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
-+ rm -f $$dest; \
-+ else \
-+ $(INSTALL_DATA) $$temp $$dest; \
-+ fi; \
-+ rm -f $$temp; \
-+ fi; \
-+ if test -f $(DESTDIR)$(localedir)/locale.alias; then \
-+ temp=$(DESTDIR)$(localedir)/t-locale.alias; \
-+ dest=$(DESTDIR)$(localedir)/locale.alias; \
-+ sed -f ref-del.sed $$dest > $$temp; \
-+ if grep '^# Packages using this file: $$' $$temp > /dev/null; then \
-+ rm -f $$dest; \
-+ else \
-+ $(INSTALL_DATA) $$temp $$dest; \
-+ fi; \
-+ rm -f $$temp; \
-+ fi; \
-+ else \
-+ : ; \
-+ fi
-+ if test "$(PACKAGE)" = "gettext"; then \
-+ for file in VERSION ChangeLog $(DISTFILES.common) $(DISTFILES.generated); do \
-+ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \
-+ done; \
-+ else \
-+ : ; \
-+ fi
-
- info dvi:
-
--$(OBJECTS): ../config.h libgettext.h
-+$(OBJECTS): ../config.h libgnuintl.h
- bindtextdom.$lo finddomain.$lo loadmsgcat.$lo: gettextP.h gettext.h loadinfo.h
- dcgettext.$lo: gettextP.h gettext.h hash-string.h loadinfo.h
-
-@@ -166,12 +268,19 @@
-
-
- mostlyclean:
-- rm -f *.a *.o *.lo core core.*
-+ rm -f *.a *.la *.o *.lo core core.*
-+ rm -f libintl.h charset.alias ref-add.sed ref-del.sed
-+ rm -f -r .libs _libs
-
- clean: mostlyclean
-
- distclean: clean
-- rm -f Makefile ID TAGS po2msg.sed po2tbl.sed
-+ rm -f Makefile ID TAGS
-+ if test "$(PACKAGE)" = gettext; then \
-+ rm -f ChangeLog.inst $(DISTFILES.normal); \
-+ else \
-+ : ; \
-+ fi
-
- maintainer-clean: distclean
- @echo "This command is intended for maintainers to use;"
-@@ -181,33 +290,22 @@
- # GNU gettext needs not contain the file `VERSION' but contains some
- # other files which should not be distributed in other packages.
- distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
--dist distdir: Makefile $(DISTFILES)
-+dist distdir: Makefile
- if test "$(PACKAGE)" = gettext; then \
- additional="$(DISTFILES.gettext)"; \
- else \
- additional="$(DISTFILES.normal)"; \
- fi; \
-- for file in $(DISTFILES.common) $$additional; do \
-- ln $(srcdir)/$$file $(distdir) 2> /dev/null \
-- || cp -p $(srcdir)/$$file $(distdir); \
-+ $(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \
-+ for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \
-+ if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
-+ ln $$dir/$$file $(distdir) 2> /dev/null \
-+ || cp -p $$dir/$$file $(distdir); \
- done
-
--dist-libc:
-- tar zcvf intl-glibc.tar.gz $(COMSRCS) $(COMHDRS) libintl.h.glibc
--
- Makefile: Makefile.in ../config.status
- cd .. \
- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status
--
--# The dependency for intlh.inst is different in gettext and all other
--# packages. Because we cannot you GNU make features we have to solve
--# the problem while rewriting Makefile.in.
--@GT_YES@intlh.inst: intlh.inst.in ../config.status
--@GT_YES@ cd .. \
--@GT_YES@ && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= \
--@GT_YES@ $(SHELL) ./config.status
--@GT_NO@.PHONY: intlh.inst
--@GT_NO@intlh.inst:
-
- # 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.
-diff -urN parted-1.4.17.orig/intl/VERSION parted-1.4.17/intl/VERSION
---- parted-1.4.17.orig/intl/VERSION Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/VERSION Thu Aug 2 14:26:15 2001
-@@ -1 +1 @@
--GNU gettext library from gettext-0.10.35
-+GNU gettext library from gettext-0.10.39
-diff -urN parted-1.4.17.orig/intl/bindtextdom.c parted-1.4.17/intl/bindtextdom.c
---- parted-1.4.17.orig/intl/bindtextdom.c Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/bindtextdom.c Thu Aug 2 14:26:15 2001
-@@ -1,5 +1,5 @@
- /* Implementation of the bindtextdomain(3) function
-- Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-+ Copyright (C) 1995-1998, 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
-@@ -19,32 +19,39 @@
- # include <config.h>
- #endif
-
--#if defined STDC_HEADERS || defined _LIBC
--# include <stdlib.h>
--#else
--# ifdef HAVE_MALLOC_H
--# include <malloc.h>
--# else
--void free ();
--# endif
--#endif
-+#include <stddef.h>
-+#include <stdlib.h>
-+#include <string.h>
-
--#if defined HAVE_STRING_H || defined _LIBC
--# include <string.h>
-+#ifdef _LIBC
-+# include <libintl.h>
- #else
--# include <strings.h>
--# ifndef memcpy
--# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
--# endif
-+# include "libgnuintl.h"
- #endif
-+#include "gettextP.h"
-
- #ifdef _LIBC
--# include <libintl.h>
-+/* We have to handle multi-threaded applications. */
-+# include <bits/libc-lock.h>
- #else
--# include "libgettext.h"
-+/* Provide dummy implementation if this is outside glibc. */
-+# define __libc_rwlock_define(CLASS, NAME)
-+# define __libc_rwlock_wrlock(NAME)
-+# define __libc_rwlock_unlock(NAME)
-+#endif
-+
-+/* The internal variables in the standalone libintl.a must have different
-+ names than the internal variables in GNU libc, otherwise programs
-+ using libintl.a cannot be linked statically. */
-+#if !defined _LIBC
-+# define _nl_default_dirname _nl_default_dirname__
-+# define _nl_domain_bindings _nl_domain_bindings__
-+#endif
-+
-+/* Some compilers, like SunOS4 cc, don't have offsetof in <stddef.h>. */
-+#ifndef offsetof
-+# define offsetof(type,ident) ((size_t)&(((type*)0)->ident))
- #endif
--#include "gettext.h"
--#include "gettextP.h"
-
- /* @@ end of prolog @@ */
-
-@@ -54,6 +61,9 @@
- /* List with bindings of specific domains. */
- extern struct binding *_nl_domain_bindings;
-
-+/* Lock variable to protect the global data in the gettext implementation. */
-+__libc_rwlock_define (extern, _nl_state_lock)
-+
-
- /* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
-@@ -61,25 +71,48 @@
- prefix. So we have to make a difference here. */
- #ifdef _LIBC
- # define BINDTEXTDOMAIN __bindtextdomain
-+# define BIND_TEXTDOMAIN_CODESET __bind_textdomain_codeset
- # ifndef strdup
- # define strdup(str) __strdup (str)
- # endif
- #else
- # define BINDTEXTDOMAIN bindtextdomain__
-+# define BIND_TEXTDOMAIN_CODESET bind_textdomain_codeset__
- #endif
-
--/* Specify that the DOMAINNAME message catalog will be found
-- in DIRNAME rather than in the system locale data base. */
--char *
--BINDTEXTDOMAIN (domainname, dirname)
-+/* Prototypes for local functions. */
-+static void set_binding_values PARAMS ((const char *domainname,
-+ const char **dirnamep,
-+ const char **codesetp));
-+
-+/* Specifies the directory name *DIRNAMEP and the output codeset *CODESETP
-+ to be used for the DOMAINNAME message catalog.
-+ If *DIRNAMEP or *CODESETP is NULL, the corresponding attribute is not
-+ modified, only the current value is returned.
-+ If DIRNAMEP or CODESETP is NULL, the corresponding attribute is neither
-+ modified nor returned. */
-+static void
-+set_binding_values (domainname, dirnamep, codesetp)
- const char *domainname;
-- const char *dirname;
-+ const char **dirnamep;
-+ const char **codesetp;
- {
- struct binding *binding;
-+ int modified;
-
- /* Some sanity checks. */
- if (domainname == NULL || domainname[0] == '\0')
-- return NULL;
-+ {
-+ if (dirnamep)
-+ *dirnamep = NULL;
-+ if (codesetp)
-+ *codesetp = NULL;
-+ return;
-+ }
-+
-+ __libc_rwlock_wrlock (_nl_state_lock);
-+
-+ modified = 0;
-
- for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
- {
-@@ -95,83 +128,173 @@
- }
- }
-
-- if (dirname == NULL)
-- /* The current binding has be to returned. */
-- return binding == NULL ? (char *) _nl_default_dirname : binding->dirname;
--
- if (binding != NULL)
- {
-- /* The domain is already bound. If the new value and the old
-- one are equal we simply do nothing. Otherwise replace the
-- old binding. */
-- if (strcmp (dirname, binding->dirname) != 0)
-+ if (dirnamep)
- {
-- char *new_dirname;
-+ const char *dirname = *dirnamep;
-
-- if (strcmp (dirname, _nl_default_dirname) == 0)
-- new_dirname = (char *) _nl_default_dirname;
-+ if (dirname == NULL)
-+ /* The current binding has be to returned. */
-+ *dirnamep = binding->dirname;
- else
- {
-+ /* The domain is already bound. If the new value and the old
-+ one are equal we simply do nothing. Otherwise replace the
-+ old binding. */
-+ char *result = binding->dirname;
-+ if (strcmp (dirname, result) != 0)
-+ {
-+ if (strcmp (dirname, _nl_default_dirname) == 0)
-+ result = (char *) _nl_default_dirname;
-+ else
-+ {
- #if defined _LIBC || defined HAVE_STRDUP
-- new_dirname = strdup (dirname);
-- if (new_dirname == NULL)
-- return NULL;
--#else
-- size_t len = strlen (dirname) + 1;
-- new_dirname = (char *) malloc (len);
-- if (new_dirname == NULL)
-- return NULL;
--
-- memcpy (new_dirname, dirname, len);
-+ result = strdup (dirname);
-+#else
-+ size_t len = strlen (dirname) + 1;
-+ result = (char *) malloc (len);
-+ if (__builtin_expect (result != NULL, 1))
-+ memcpy (result, dirname, len);
- #endif
-+ }
-+
-+ if (__builtin_expect (result != NULL, 1))
-+ {
-+ if (binding->dirname != _nl_default_dirname)
-+ free (binding->dirname);
-+
-+ binding->dirname = result;
-+ modified = 1;
-+ }
-+ }
-+ *dirnamep = result;
- }
-+ }
-
-- if (binding->dirname != _nl_default_dirname)
-- free (binding->dirname);
-+ if (codesetp)
-+ {
-+ const char *codeset = *codesetp;
-
-- binding->dirname = new_dirname;
-+ if (codeset == NULL)
-+ /* The current binding has be to returned. */
-+ *codesetp = binding->codeset;
-+ else
-+ {
-+ /* The domain is already bound. If the new value and the old
-+ one are equal we simply do nothing. Otherwise replace the
-+ old binding. */
-+ char *result = binding->codeset;
-+ if (result == NULL || strcmp (codeset, result) != 0)
-+ {
-+#if defined _LIBC || defined HAVE_STRDUP
-+ result = strdup (codeset);
-+#else
-+ size_t len = strlen (codeset) + 1;
-+ result = (char *) malloc (len);
-+ if (__builtin_expect (result != NULL, 1))
-+ memcpy (result, codeset, len);
-+#endif
-+
-+ if (__builtin_expect (result != NULL, 1))
-+ {
-+ if (binding->codeset != NULL)
-+ free (binding->codeset);
-+
-+ binding->codeset = result;
-+ binding->codeset_cntr++;
-+ modified = 1;
-+ }
-+ }
-+ *codesetp = result;
-+ }
- }
- }
-+ else if ((dirnamep == NULL || *dirnamep == NULL)
-+ && (codesetp == NULL || *codesetp == NULL))
-+ {
-+ /* Simply return the default values. */
-+ if (dirnamep)
-+ *dirnamep = _nl_default_dirname;
-+ if (codesetp)
-+ *codesetp = NULL;
-+ }
- else
- {
- /* We have to create a new binding. */
--#if !defined _LIBC && !defined HAVE_STRDUP
-- size_t len;
--#endif
-+ size_t len = strlen (domainname) + 1;
- struct binding *new_binding =
-- (struct binding *) malloc (sizeof (*new_binding));
-+ (struct binding *) malloc (offsetof (struct binding, domainname) + len);
-
-- if (new_binding == NULL)
-- return NULL;
-+ if (__builtin_expect (new_binding == NULL, 0))
-+ goto failed;
-
--#if defined _LIBC || defined HAVE_STRDUP
-- new_binding->domainname = strdup (domainname);
-- if (new_binding->domainname == NULL)
-- return NULL;
--#else
-- len = strlen (domainname) + 1;
-- new_binding->domainname = (char *) malloc (len);
-- if (new_binding->domainname == NULL)
-- return NULL;
- memcpy (new_binding->domainname, domainname, len);
--#endif
-
-- if (strcmp (dirname, _nl_default_dirname) == 0)
-- new_binding->dirname = (char *) _nl_default_dirname;
-+ if (dirnamep)
-+ {
-+ const char *dirname = *dirnamep;
-+
-+ if (dirname == NULL)
-+ /* The default value. */
-+ dirname = _nl_default_dirname;
-+ else
-+ {
-+ if (strcmp (dirname, _nl_default_dirname) == 0)
-+ dirname = _nl_default_dirname;
-+ else
-+ {
-+ char *result;
-+#if defined _LIBC || defined HAVE_STRDUP
-+ result = strdup (dirname);
-+ if (__builtin_expect (result == NULL, 0))
-+ goto failed_dirname;
-+#else
-+ size_t len = strlen (dirname) + 1;
-+ result = (char *) malloc (len);
-+ if (__builtin_expect (result == NULL, 0))
-+ goto failed_dirname;
-+ memcpy (result, dirname, len);
-+#endif
-+ dirname = result;
-+ }
-+ }
-+ *dirnamep = dirname;
-+ new_binding->dirname = (char *) dirname;
-+ }
- else
-+ /* The default value. */
-+ new_binding->dirname = (char *) _nl_default_dirname;
-+
-+ new_binding->codeset_cntr = 0;
-+
-+ if (codesetp)
- {
-+ const char *codeset = *codesetp;
-+
-+ if (codeset != NULL)
-+ {
-+ char *result;
-+
- #if defined _LIBC || defined HAVE_STRDUP
-- new_binding->dirname = strdup (dirname);
-- if (new_binding->dirname == NULL)
-- return NULL;
--#else
-- len = strlen (dirname) + 1;
-- new_binding->dirname = (char *) malloc (len);
-- if (new_binding->dirname == NULL)
-- return NULL;
-- memcpy (new_binding->dirname, dirname, len);
-+ result = strdup (codeset);
-+ if (__builtin_expect (result == NULL, 0))
-+ goto failed_codeset;
-+#else
-+ size_t len = strlen (codeset) + 1;
-+ result = (char *) malloc (len);
-+ if (__builtin_expect (result == NULL, 0))
-+ goto failed_codeset;
-+ memcpy (result, codeset, len);
- #endif
-+ codeset = result;
-+ new_binding->codeset_cntr++;
-+ }
-+ *codesetp = codeset;
-+ new_binding->codeset = (char *) codeset;
- }
-+ else
-+ new_binding->codeset = NULL;
-
- /* Now enqueue it. */
- if (_nl_domain_bindings == NULL
-@@ -191,13 +314,55 @@
- binding->next = new_binding;
- }
-
-- binding = new_binding;
-+ modified = 1;
-+
-+ /* Here we deal with memory allocation failures. */
-+ if (0)
-+ {
-+ failed_codeset:
-+ if (new_binding->dirname != _nl_default_dirname)
-+ free (new_binding->dirname);
-+ failed_dirname:
-+ free (new_binding);
-+ failed:
-+ if (dirnamep)
-+ *dirnamep = NULL;
-+ if (codesetp)
-+ *codesetp = NULL;
-+ }
- }
-
-- return binding->dirname;
-+ /* If we modified any binding, we flush the caches. */
-+ if (modified)
-+ ++_nl_msg_cat_cntr;
-+
-+ __libc_rwlock_unlock (_nl_state_lock);
-+}
-+
-+/* Specify that the DOMAINNAME message catalog will be found
-+ in DIRNAME rather than in the system locale data base. */
-+char *
-+BINDTEXTDOMAIN (domainname, dirname)
-+ const char *domainname;
-+ const char *dirname;
-+{
-+ set_binding_values (domainname, &dirname, NULL);
-+ return (char *) dirname;
-+}
-+
-+/* Specify the character encoding in which the messages from the
-+ DOMAINNAME message catalog will be returned. */
-+char *
-+BIND_TEXTDOMAIN_CODESET (domainname, codeset)
-+ const char *domainname;
-+ const char *codeset;
-+{
-+ set_binding_values (domainname, NULL, &codeset);
-+ return (char *) codeset;
- }
-
- #ifdef _LIBC
--/* Alias for function name in GNU C Library. */
-+/* Aliases for function names in GNU C Library. */
- weak_alias (__bindtextdomain, bindtextdomain);
-+weak_alias (__bind_textdomain_codeset, bind_textdomain_codeset);
- #endif
-diff -urN parted-1.4.17.orig/intl/cat-compat.c parted-1.4.17/intl/cat-compat.c
---- parted-1.4.17.orig/intl/cat-compat.c Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/cat-compat.c Wed Dec 31 19:00:00 1969
-@@ -1,262 +0,0 @@
--/* Compatibility code for gettext-using-catgets interface.
-- Copyright (C) 1995, 1997 Free Software Foundation, Inc.
--
-- This program is free software; you can 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
--
--#ifdef HAVE_CONFIG_H
--# include <config.h>
--#endif
--
--#include <stdio.h>
--
--#ifdef STDC_HEADERS
--# include <stdlib.h>
--# include <string.h>
--#else
--char *getenv ();
--# ifdef HAVE_MALLOC_H
--# include <malloc.h>
--# endif
--#endif
--
--#ifdef HAVE_NL_TYPES_H
--# include <nl_types.h>
--#endif
--
--#include "libgettext.h"
--
--/* @@ end of prolog @@ */
--
--/* XPG3 defines the result of `setlocale (category, NULL)' as:
-- ``Directs `setlocale()' to query `category' and return the current
-- setting of `local'.''
-- However it does not specify the exact format. And even worse: POSIX
-- defines this not at all. So we can use this feature only on selected
-- system (e.g. those using GNU C Library). */
--#ifdef _LIBC
--# define HAVE_LOCALE_NULL
--#endif
--
--/* The catalog descriptor. */
--static nl_catd catalog = (nl_catd) -1;
--
--/* Name of the default catalog. */
--static const char default_catalog_name[] = "messages";
--
--/* Name of currently used catalog. */
--static const char *catalog_name = default_catalog_name;
--
--/* Get ID for given string. If not found return -1. */
--static int msg_to_cat_id PARAMS ((const char *msg));
--
--/* Substitution for systems lacking this function in their C library. */
--#if !_LIBC && !HAVE_STPCPY
--static char *stpcpy PARAMS ((char *dest, const char *src));
--#endif
--
--
--/* Set currently used domain/catalog. */
--char *
--textdomain (domainname)
-- const char *domainname;
--{
-- nl_catd new_catalog;
-- char *new_name;
-- size_t new_name_len;
-- char *lang;
--
--#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES \
-- && defined HAVE_LOCALE_NULL
-- lang = setlocale (LC_MESSAGES, NULL);
--#else
-- lang = getenv ("LC_ALL");
-- if (lang == NULL || lang[0] == '\0')
-- {
-- lang = getenv ("LC_MESSAGES");
-- if (lang == NULL || lang[0] == '\0')
-- lang = getenv ("LANG");
-- }
--#endif
-- if (lang == NULL || lang[0] == '\0')
-- lang = "C";
--
-- /* See whether name of currently used domain is asked. */
-- if (domainname == NULL)
-- return (char *) catalog_name;
--
-- if (domainname[0] == '\0')
-- domainname = default_catalog_name;
--
-- /* Compute length of added path element. */
-- new_name_len = sizeof (LOCALEDIR) - 1 + 1 + strlen (lang)
-- + sizeof ("/LC_MESSAGES/") - 1 + sizeof (PACKAGE) - 1
-- + sizeof (".cat");
--
-- new_name = (char *) malloc (new_name_len);
-- if (new_name == NULL)
-- return NULL;
--
-- strcpy (new_name, PACKAGE);
-- new_catalog = catopen (new_name, 0);
--
-- if (new_catalog == (nl_catd) -1)
-- {
-- /* NLSPATH search didn't work, try absolute path */
-- sprintf (new_name, "%s/%s/LC_MESSAGES/%s.cat", LOCALEDIR, lang,
-- PACKAGE);
-- new_catalog = catopen (new_name, 0);
--
-- if (new_catalog == (nl_catd) -1)
-- {
-- free (new_name);
-- return (char *) catalog_name;
-- }
-- }
--
-- /* Close old catalog. */
-- if (catalog != (nl_catd) -1)
-- catclose (catalog);
-- if (catalog_name != default_catalog_name)
-- free ((char *) catalog_name);
--
-- catalog = new_catalog;
-- catalog_name = new_name;
--
-- return (char *) catalog_name;
--}
--
--char *
--bindtextdomain (domainname, dirname)
-- const char *domainname;
-- const char *dirname;
--{
--#if HAVE_SETENV || HAVE_PUTENV
-- char *old_val, *new_val, *cp;
-- size_t new_val_len;
--
-- /* This does not make much sense here but to be compatible do it. */
-- if (domainname == NULL)
-- return NULL;
--
-- /* Compute length of added path element. If we use setenv we don't need
-- the first byts for NLSPATH=, but why complicate the code for this
-- peanuts. */
-- new_val_len = sizeof ("NLSPATH=") - 1 + strlen (dirname)
-- + sizeof ("/%L/LC_MESSAGES/%N.cat");
--
-- old_val = getenv ("NLSPATH");
-- if (old_val == NULL || old_val[0] == '\0')
-- {
-- old_val = NULL;
-- new_val_len += 1 + sizeof (LOCALEDIR) - 1
-- + sizeof ("/%L/LC_MESSAGES/%N.cat");
-- }
-- else
-- new_val_len += strlen (old_val);
--
-- new_val = (char *) malloc (new_val_len);
-- if (new_val == NULL)
-- return NULL;
--
--# if HAVE_SETENV
-- cp = new_val;
--# else
-- cp = stpcpy (new_val, "NLSPATH=");
--# endif
--
-- cp = stpcpy (cp, dirname);
-- cp = stpcpy (cp, "/%L/LC_MESSAGES/%N.cat:");
--
-- if (old_val == NULL)
-- {
--# if __STDC__
-- stpcpy (cp, LOCALEDIR "/%L/LC_MESSAGES/%N.cat");
--# else
--
-- cp = stpcpy (cp, LOCALEDIR);
-- stpcpy (cp, "/%L/LC_MESSAGES/%N.cat");
--# endif
-- }
-- else
-- stpcpy (cp, old_val);
--
--# if HAVE_SETENV
-- setenv ("NLSPATH", new_val, 1);
-- free (new_val);
--# else
-- putenv (new_val);
-- /* Do *not* free the environment entry we just entered. It is used
-- from now on. */
--# endif
--
--#endif
--
-- return (char *) domainname;
--}
--
--#undef gettext
--char *
--gettext (msg)
-- const char *msg;
--{
-- int msgid;
--
-- if (msg == NULL || catalog == (nl_catd) -1)
-- return (char *) msg;
--
-- /* Get the message from the catalog. We always use set number 1.
-- The message ID is computed by the function `msg_to_cat_id'
-- which works on the table generated by `po-to-tbl'. */
-- msgid = msg_to_cat_id (msg);
-- if (msgid == -1)
-- return (char *) msg;
--
-- return catgets (catalog, 1, msgid, (char *) msg);
--}
--
--/* Look through the table `_msg_tbl' which has `_msg_tbl_length' entries
-- for the one equal to msg. If it is found return the ID. In case when
-- the string is not found return -1. */
--static int
--msg_to_cat_id (msg)
-- const char *msg;
--{
-- int cnt;
--
-- for (cnt = 0; cnt < _msg_tbl_length; ++cnt)
-- if (strcmp (msg, _msg_tbl[cnt]._msg) == 0)
-- return _msg_tbl[cnt]._msg_number;
--
-- return -1;
--}
--
--
--/* @@ begin of epilog @@ */
--
--/* We don't want libintl.a to depend on any other library. So we
-- avoid the non-standard function stpcpy. In GNU C Library this
-- function is available, though. Also allow the symbol HAVE_STPCPY
-- to be defined. */
--#if !_LIBC && !HAVE_STPCPY
--static char *
--stpcpy (dest, src)
-- char *dest;
-- const char *src;
--{
-- while ((*dest++ = *src++) != '\0')
-- /* Do nothing. */ ;
-- return dest - 1;
--}
--#endif
-diff -urN parted-1.4.17.orig/intl/config.charset parted-1.4.17/intl/config.charset
---- parted-1.4.17.orig/intl/config.charset Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/intl/config.charset Thu Aug 2 14:26:15 2001
-@@ -0,0 +1,438 @@
-+#! /bin/sh
-+# Output a system dependent table of character encoding aliases.
-+#
-+# Copyright (C) 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 Library 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
-+# Library General Public License for more details.
-+#
-+# You should have received a copy of the GNU Library 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.
-+#
-+# 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 used by which systems a MIME name?
-+# ASCII, ANSI_X3.4-1968 glibc solaris freebsd
-+# ISO-8859-1 glibc aix hpux irix osf solaris freebsd yes
-+# ISO-8859-2 glibc aix hpux irix osf solaris freebsd yes
-+# ISO-8859-3 glibc yes
-+# ISO-8859-4 osf solaris freebsd yes
-+# ISO-8859-5 glibc aix hpux irix osf solaris freebsd yes
-+# ISO-8859-6 glibc aix hpux solaris yes
-+# ISO-8859-7 glibc aix hpux irix osf solaris yes
-+# ISO-8859-8 glibc aix hpux osf solaris yes
-+# ISO-8859-9 glibc aix hpux irix osf solaris yes
-+# ISO-8859-13 glibc
-+# ISO-8859-15 glibc aix osf solaris freebsd
-+# KOI8-R glibc solaris freebsd yes
-+# KOI8-U glibc freebsd yes
-+# 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 dos
-+# CP869 dos
-+# CP874 win32 dos
-+# CP922 aix
-+# CP932 aix win32 dos
-+# CP943 aix
-+# CP949 osf win32 dos
-+# CP950 win32 dos
-+# CP1046 aix
-+# CP1124 aix
-+# CP1129 aix
-+# CP1250 win32
-+# CP1251 glibc win32
-+# CP1252 aix win32
-+# CP1253 win32
-+# CP1254 win32
-+# CP1255 win32
-+# CP1256 win32
-+# CP1257 win32
-+# GB2312 glibc aix hpux irix solaris freebsd yes
-+# EUC-JP glibc aix hpux irix osf solaris freebsd yes
-+# EUC-KR glibc aix hpux irix osf solaris freebsd yes
-+# EUC-TW glibc aix hpux irix osf solaris
-+# BIG5 glibc aix hpux osf solaris freebsd yes
-+# BIG5-HKSCS glibc
-+# GBK aix osf win32 dos
-+# GB18030 glibc
-+# SHIFT_JIS hpux osf solaris freebsd yes
-+# JOHAB glibc win32
-+# TIS-620 glibc aix hpux osf solaris
-+# VISCII glibc yes
-+# 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 glibc aix hpux osf solaris yes
-+#
-+# 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* | *-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-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 "BIG5 BIG5"
-+ echo "gb2312 GB2312"
-+ echo "cns11643 EUC-TW"
-+ echo "5601 EUC-KR"
-+ 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*)
-+ # FreeBSD 4.2 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 "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"
-+ ;;
-+ 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 <st001906@hrz1.hrz.tu-darmstadt.de>"
-+ echo "# and Bruno Haible <haible@clisp.cons.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_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 KOI8-R" # not CP866 ??
-+ echo "ru_RU KOI8-R" # not CP866 ??
-+ # 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 -urN parted-1.4.17.orig/intl/dcgettext.c parted-1.4.17/intl/dcgettext.c
---- parted-1.4.17.orig/intl/dcgettext.c Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/dcgettext.c Thu Aug 2 14:26:15 2001
-@@ -1,5 +1,5 @@
- /* Implementation of the dcgettext(3) function.
-- Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-+ Copyright (C) 1995-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
-@@ -19,202 +19,25 @@
- # include <config.h>
- #endif
-
--#include <sys/types.h>
--
--#ifdef __GNUC__
--# define alloca __builtin_alloca
--# define HAVE_ALLOCA 1
--#else
--# if defined HAVE_ALLOCA_H || defined _LIBC
--# include <alloca.h>
--# else
--# ifdef _AIX
-- #pragma alloca
--# else
--# ifndef alloca
--char *alloca ();
--# endif
--# endif
--# endif
--#endif
--
--#include <errno.h>
--#ifndef errno
--extern int errno;
--#endif
--#ifndef __set_errno
--# define __set_errno(val) errno = (val)
--#endif
--
--#if defined STDC_HEADERS || defined _LIBC
--# include <stdlib.h>
--#else
--char *getenv ();
--# ifdef HAVE_MALLOC_H
--# include <malloc.h>
--# else
--void free ();
--# endif
--#endif
--
--#if defined HAVE_STRING_H || defined _LIBC
--# ifndef _GNU_SOURCE
--# define _GNU_SOURCE 1
--# endif
--# include <string.h>
--#else
--# include <strings.h>
--#endif
--#if !HAVE_STRCHR && !defined _LIBC
--# ifndef strchr
--# define strchr index
--# endif
--#endif
--
--#if defined HAVE_UNISTD_H || defined _LIBC
--# include <unistd.h>
--#endif
--
--#include "gettext.h"
- #include "gettextP.h"
- #ifdef _LIBC
- # include <libintl.h>
- #else
--# include "libgettext.h"
-+# include "libgnuintl.h"
- #endif
--#include "hash-string.h"
-
- /* @@ end of prolog @@ */
-
--#ifdef _LIBC
--/* Rename the non ANSI C functions. This is required by the standard
-- because some ANSI C functions will require linking with this object
-- file and the name space must not be polluted. */
--# define getcwd __getcwd
--# ifndef stpcpy
--# define stpcpy __stpcpy
--# endif
--#else
--# if !defined HAVE_GETCWD
--char *getwd ();
--# define getcwd(buf, max) getwd (buf)
--# else
--char *getcwd ();
--# endif
--# ifndef HAVE_STPCPY
--static char *stpcpy PARAMS ((char *dest, const char *src));
--# endif
--#endif
--
--/* Amount to increase buffer size by in each try. */
--#define PATH_INCR 32
--
--/* The following is from pathmax.h. */
--/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define
-- PATH_MAX but might cause redefinition warnings when sys/param.h is
-- later included (as on MORE/BSD 4.3). */
--#if defined(_POSIX_VERSION) || (defined(HAVE_LIMITS_H) && !defined(__GNUC__))
--# include <limits.h>
--#endif
--
--#ifndef _POSIX_PATH_MAX
--# define _POSIX_PATH_MAX 255
--#endif
--
--#if !defined(PATH_MAX) && defined(_PC_PATH_MAX)
--# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX))
--#endif
--
--/* Don't include sys/param.h if it already has been. */
--#if defined(HAVE_SYS_PARAM_H) && !defined(PATH_MAX) && !defined(MAXPATHLEN)
--# include <sys/param.h>
--#endif
--
--#if !defined(PATH_MAX) && defined(MAXPATHLEN)
--# define PATH_MAX MAXPATHLEN
--#endif
--
--#ifndef PATH_MAX
--# define PATH_MAX _POSIX_PATH_MAX
--#endif
--
--/* XPG3 defines the result of `setlocale (category, NULL)' as:
-- ``Directs `setlocale()' to query `category' and return the current
-- setting of `local'.''
-- However it does not specify the exact format. And even worse: POSIX
-- defines this not at all. So we can use this feature only on selected
-- system (e.g. those using GNU C Library). */
--#ifdef _LIBC
--# define HAVE_LOCALE_NULL
--#endif
--
--/* Name of the default domain used for gettext(3) prior any call to
-- textdomain(3). The default value for this is "messages". */
--const char _nl_default_default_domain[] = "messages";
--
--/* Value used as the default domain for gettext(3). */
--const char *_nl_current_default_domain = _nl_default_default_domain;
--
--/* Contains the default location of the message catalogs. */
--const char _nl_default_dirname[] = GNULOCALEDIR;
--
--/* List with bindings of specific domains created by bindtextdomain()
-- calls. */
--struct binding *_nl_domain_bindings;
--
--/* Prototypes for local functions. */
--static char *find_msg PARAMS ((struct loaded_l10nfile *domain_file,
-- const char *msgid)) internal_function;
--static const char *category_to_name PARAMS ((int category)) internal_function;
--static const char *guess_category_value PARAMS ((int category,
-- const char *categoryname))
-- internal_function;
--
--
--/* For those loosing systems which don't have `alloca' we have to add
-- some additional code emulating it. */
--#ifdef HAVE_ALLOCA
--/* Nothing has to be done. */
--# define ADD_BLOCK(list, address) /* nothing */
--# define FREE_BLOCKS(list) /* nothing */
--#else
--struct block_list
--{
-- void *address;
-- struct block_list *next;
--};
--# define ADD_BLOCK(list, addr) \
-- do { \
-- struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \
-- /* If we cannot get a free block we cannot add the new element to \
-- the list. */ \
-- if (newp != NULL) { \
-- newp->address = (addr); \
-- newp->next = (list); \
-- (list) = newp; \
-- } \
-- } while (0)
--# define FREE_BLOCKS(list) \
-- do { \
-- while (list != NULL) { \
-- struct block_list *old = list; \
-- list = list->next; \
-- free (old); \
-- } \
-- } while (0)
--# undef alloca
--# define alloca(size) (malloc (size))
--#endif /* have alloca */
--
--
- /* Names for the libintl functions are a problem. They must not clash
- with existing names and they should follow ANSI C. But this source
- code is also used in GNU C Library where the names have a __
- prefix. So we have to make a difference here. */
- #ifdef _LIBC
- # define DCGETTEXT __dcgettext
-+# define DCIGETTEXT __dcigettext
- #else
- # define DCGETTEXT dcgettext__
-+# define DCIGETTEXT dcigettext__
- #endif
-
- /* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
-@@ -225,400 +48,10 @@
- const char *msgid;
- int category;
- {
--#ifndef HAVE_ALLOCA
-- struct block_list *block_list = NULL;
--#endif
-- struct loaded_l10nfile *domain;
-- struct binding *binding;
-- const char *categoryname;
-- const char *categoryvalue;
-- char *dirname, *xdomainname;
-- char *single_locale;
-- char *retval;
-- int saved_errno = errno;
--
-- /* If no real MSGID is given return NULL. */
-- if (msgid == NULL)
-- return NULL;
--
-- /* If DOMAINNAME is NULL, we are interested in the default domain. If
-- CATEGORY is not LC_MESSAGES this might not make much sense but the
-- defintion left this undefined. */
-- if (domainname == NULL)
-- domainname = _nl_current_default_domain;
--
-- /* First find matching binding. */
-- for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
-- {
-- int compare = strcmp (domainname, binding->domainname);
-- if (compare == 0)
-- /* We found it! */
-- break;
-- if (compare < 0)
-- {
-- /* It is not in the list. */
-- binding = NULL;
-- break;
-- }
-- }
--
-- if (binding == NULL)
-- dirname = (char *) _nl_default_dirname;
-- else if (binding->dirname[0] == '/')
-- dirname = binding->dirname;
-- else
-- {
-- /* We have a relative path. Make it absolute now. */
-- size_t dirname_len = strlen (binding->dirname) + 1;
-- size_t path_max;
-- char *ret;
--
-- path_max = (unsigned) PATH_MAX;
-- path_max += 2; /* The getcwd docs say to do this. */
--
-- dirname = (char *) alloca (path_max + dirname_len);
-- ADD_BLOCK (block_list, dirname);
--
-- __set_errno (0);
-- while ((ret = getcwd (dirname, path_max)) == NULL && errno == ERANGE)
-- {
-- path_max += PATH_INCR;
-- dirname = (char *) alloca (path_max + dirname_len);
-- ADD_BLOCK (block_list, dirname);
-- __set_errno (0);
-- }
--
-- if (ret == NULL)
-- {
-- /* We cannot get the current working directory. Don't signal an
-- error but simply return the default string. */
-- FREE_BLOCKS (block_list);
-- __set_errno (saved_errno);
-- return (char *) msgid;
-- }
--
-- stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname);
-- }
--
-- /* Now determine the symbolic name of CATEGORY and its value. */
-- categoryname = category_to_name (category);
-- categoryvalue = guess_category_value (category, categoryname);
--
-- xdomainname = (char *) alloca (strlen (categoryname)
-- + strlen (domainname) + 5);
-- ADD_BLOCK (block_list, xdomainname);
--
-- stpcpy (stpcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"),
-- domainname),
-- ".mo");
--
-- /* Creating working area. */
-- single_locale = (char *) alloca (strlen (categoryvalue) + 1);
-- ADD_BLOCK (block_list, single_locale);
--
--
-- /* Search for the given string. This is a loop because we perhaps
-- got an ordered list of languages to consider for th translation. */
-- while (1)
-- {
-- /* Make CATEGORYVALUE point to the next element of the list. */
-- while (categoryvalue[0] != '\0' && categoryvalue[0] == ':')
-- ++categoryvalue;
-- if (categoryvalue[0] == '\0')
-- {
-- /* The whole contents of CATEGORYVALUE has been searched but
-- no valid entry has been found. We solve this situation
-- by implicitly appending a "C" entry, i.e. no translation
-- will take place. */
-- single_locale[0] = 'C';
-- single_locale[1] = '\0';
-- }
-- else
-- {
-- char *cp = single_locale;
-- while (categoryvalue[0] != '\0' && categoryvalue[0] != ':')
-- *cp++ = *categoryvalue++;
-- *cp = '\0';
-- }
--
-- /* If the current locale value is C (or POSIX) we don't load a
-- domain. Return the MSGID. */
-- if (strcmp (single_locale, "C") == 0
-- || strcmp (single_locale, "POSIX") == 0)
-- {
-- FREE_BLOCKS (block_list);
-- __set_errno (saved_errno);
-- return (char *) msgid;
-- }
--
--
-- /* Find structure describing the message catalog matching the
-- DOMAINNAME and CATEGORY. */
-- domain = _nl_find_domain (dirname, single_locale, xdomainname);
--
-- if (domain != NULL)
-- {
-- retval = find_msg (domain, msgid);
--
-- if (retval == NULL)
-- {
-- int cnt;
--
-- for (cnt = 0; domain->successor[cnt] != NULL; ++cnt)
-- {
-- retval = find_msg (domain->successor[cnt], msgid);
--
-- if (retval != NULL)
-- break;
-- }
-- }
--
-- if (retval != NULL)
-- {
-- FREE_BLOCKS (block_list);
-- __set_errno (saved_errno);
-- return retval;
-- }
-- }
-- }
-- /* NOTREACHED */
-+ return DCIGETTEXT (domainname, msgid, NULL, 0, 0, category);
- }
-
- #ifdef _LIBC
- /* Alias for function name in GNU C Library. */
- weak_alias (__dcgettext, dcgettext);
--#endif
--
--
--static char *
--internal_function
--find_msg (domain_file, msgid)
-- struct loaded_l10nfile *domain_file;
-- const char *msgid;
--{
-- size_t top, act, bottom;
-- struct loaded_domain *domain;
--
-- if (domain_file->decided == 0)
-- _nl_load_domain (domain_file);
--
-- if (domain_file->data == NULL)
-- return NULL;
--
-- domain = (struct loaded_domain *) domain_file->data;
--
-- /* Locate the MSGID and its translation. */
-- if (domain->hash_size > 2 && domain->hash_tab != NULL)
-- {
-- /* Use the hashing table. */
-- nls_uint32 len = strlen (msgid);
-- nls_uint32 hash_val = hash_string (msgid);
-- nls_uint32 idx = hash_val % domain->hash_size;
-- nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));
-- nls_uint32 nstr = W (domain->must_swap, domain->hash_tab[idx]);
--
-- if (nstr == 0)
-- /* Hash table entry is empty. */
-- return NULL;
--
-- if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len
-- && strcmp (msgid,
-- domain->data + W (domain->must_swap,
-- domain->orig_tab[nstr - 1].offset)) == 0)
-- return (char *) domain->data + W (domain->must_swap,
-- domain->trans_tab[nstr - 1].offset);
--
-- while (1)
-- {
-- if (idx >= domain->hash_size - incr)
-- idx -= domain->hash_size - incr;
-- else
-- idx += incr;
--
-- nstr = W (domain->must_swap, domain->hash_tab[idx]);
-- if (nstr == 0)
-- /* Hash table entry is empty. */
-- return NULL;
--
-- if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) == len
-- && strcmp (msgid,
-- domain->data + W (domain->must_swap,
-- domain->orig_tab[nstr - 1].offset))
-- == 0)
-- return (char *) domain->data
-- + W (domain->must_swap, domain->trans_tab[nstr - 1].offset);
-- }
-- /* NOTREACHED */
-- }
--
-- /* Now we try the default method: binary search in the sorted
-- array of messages. */
-- bottom = 0;
-- top = domain->nstrings;
-- while (bottom < top)
-- {
-- int cmp_val;
--
-- act = (bottom + top) / 2;
-- cmp_val = strcmp (msgid, domain->data
-- + W (domain->must_swap,
-- domain->orig_tab[act].offset));
-- if (cmp_val < 0)
-- top = act;
-- else if (cmp_val > 0)
-- bottom = act + 1;
-- else
-- break;
-- }
--
-- /* If an translation is found return this. */
-- return bottom >= top ? NULL : (char *) domain->data
-- + W (domain->must_swap,
-- domain->trans_tab[act].offset);
--}
--
--
--/* Return string representation of locale CATEGORY. */
--static const char *
--internal_function
--category_to_name (category)
-- int category;
--{
-- const char *retval;
--
-- switch (category)
-- {
--#ifdef LC_COLLATE
-- case LC_COLLATE:
-- retval = "LC_COLLATE";
-- break;
--#endif
--#ifdef LC_CTYPE
-- case LC_CTYPE:
-- retval = "LC_CTYPE";
-- break;
--#endif
--#ifdef LC_MONETARY
-- case LC_MONETARY:
-- retval = "LC_MONETARY";
-- break;
--#endif
--#ifdef LC_NUMERIC
-- case LC_NUMERIC:
-- retval = "LC_NUMERIC";
-- break;
--#endif
--#ifdef LC_TIME
-- case LC_TIME:
-- retval = "LC_TIME";
-- break;
--#endif
--#ifdef LC_MESSAGES
-- case LC_MESSAGES:
-- retval = "LC_MESSAGES";
-- break;
--#endif
--#ifdef LC_RESPONSE
-- case LC_RESPONSE:
-- retval = "LC_RESPONSE";
-- break;
--#endif
--#ifdef LC_ALL
-- case LC_ALL:
-- /* This might not make sense but is perhaps better than any other
-- value. */
-- retval = "LC_ALL";
-- break;
--#endif
-- default:
-- /* If you have a better idea for a default value let me know. */
-- retval = "LC_XXX";
-- }
--
-- return retval;
--}
--
--/* Guess value of current locale from value of the environment variables. */
--static const char *
--internal_function
--guess_category_value (category, categoryname)
-- int category;
-- const char *categoryname;
--{
-- const char *retval;
--
-- /* The highest priority value is the `LANGUAGE' environment
-- variable. This is a GNU extension. */
-- retval = getenv ("LANGUAGE");
-- if (retval != NULL && retval[0] != '\0')
-- return retval;
--
-- /* `LANGUAGE' is not set. So we have to proceed with the POSIX
-- methods of looking to `LC_ALL', `LC_xxx', and `LANG'. On some
-- systems this can be done by the `setlocale' function itself. */
--#if defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL
-- return setlocale (category, NULL);
--#else
-- /* Setting of LC_ALL overwrites all other. */
-- retval = getenv ("LC_ALL");
-- if (retval != NULL && retval[0] != '\0')
-- return retval;
--
-- /* Next comes the name of the desired category. */
-- retval = getenv (categoryname);
-- if (retval != NULL && retval[0] != '\0')
-- return retval;
--
-- /* Last possibility is the LANG environment variable. */
-- retval = getenv ("LANG");
-- if (retval != NULL && retval[0] != '\0')
-- return retval;
--
-- /* We use C as the default domain. POSIX says this is implementation
-- defined. */
-- return "C";
--#endif
--}
--
--/* @@ begin of epilog @@ */
--
--/* We don't want libintl.a to depend on any other library. So we
-- avoid the non-standard function stpcpy. In GNU C Library this
-- function is available, though. Also allow the symbol HAVE_STPCPY
-- to be defined. */
--#if !_LIBC && !HAVE_STPCPY
--static char *
--stpcpy (dest, src)
-- char *dest;
-- const char *src;
--{
-- while ((*dest++ = *src++) != '\0')
-- /* Do nothing. */ ;
-- return dest - 1;
--}
--#endif
--
--
--#ifdef _LIBC
--/* If we want to free all resources we have to do some work at
-- program's end. */
--static void __attribute__ ((unused))
--free_mem (void)
--{
-- struct binding *runp;
--
-- for (runp = _nl_domain_bindings; runp != NULL; runp = runp->next)
-- {
-- free (runp->domainname);
-- if (runp->dirname != _nl_default_dirname)
-- /* Yes, this is a pointer comparison. */
-- free (runp->dirname);
-- }
--
-- if (_nl_current_default_domain != _nl_default_default_domain)
-- /* Yes, again a pointer comparison. */
-- free ((char *) _nl_current_default_domain);
--}
--
--text_set_element (__libc_subfreeres, free_mem);
- #endif
-diff -urN parted-1.4.17.orig/intl/dcigettext.c parted-1.4.17/intl/dcigettext.c
---- parted-1.4.17.orig/intl/dcigettext.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/intl/dcigettext.c Thu Aug 2 14:26:15 2001
-@@ -0,0 +1,1258 @@
-+/* Implementation of the internal dcigettext function.
-+ Copyright (C) 1995-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, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ GNU General Public License for more details.
-+
-+ You 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. */
-+
-+/* Tell glibc's <string.h> to provide a prototype for mempcpy().
-+ This must come before <config.h> because <config.h> may include
-+ <features.h>, and once <features.h> has been included, it's too late. */
-+#ifndef _GNU_SOURCE
-+# define _GNU_SOURCE 1
-+#endif
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <sys/types.h>
-+
-+#ifdef __GNUC__
-+# define alloca __builtin_alloca
-+# define HAVE_ALLOCA 1
-+#else
-+# if defined HAVE_ALLOCA_H || defined _LIBC
-+# include <alloca.h>
-+# else
-+# ifdef _AIX
-+ #pragma alloca
-+# else
-+# ifndef alloca
-+char *alloca ();
-+# endif
-+# endif
-+# endif
-+#endif
-+
-+#include <errno.h>
-+#ifndef errno
-+extern int errno;
-+#endif
-+#ifndef __set_errno
-+# define __set_errno(val) errno = (val)
-+#endif
-+
-+#include <stddef.h>
-+#include <stdlib.h>
-+
-+#include <string.h>
-+#if !HAVE_STRCHR && !defined _LIBC
-+# ifndef strchr
-+# define strchr index
-+# endif
-+#endif
-+
-+#if defined HAVE_UNISTD_H || defined _LIBC
-+# include <unistd.h>
-+#endif
-+
-+#include <locale.h>
-+
-+#if defined HAVE_SYS_PARAM_H || defined _LIBC
-+# include <sys/param.h>
-+#endif
-+
-+#include "gettextP.h"
-+#ifdef _LIBC
-+# include <libintl.h>
-+#else
-+# include "libgnuintl.h"
-+#endif
-+#include "hash-string.h"
-+
-+/* Thread safetyness. */
-+#ifdef _LIBC
-+# include <bits/libc-lock.h>
-+#else
-+/* Provide dummy implementation if this is outside glibc. */
-+# define __libc_lock_define_initialized(CLASS, NAME)
-+# define __libc_lock_lock(NAME)
-+# define __libc_lock_unlock(NAME)
-+# define __libc_rwlock_define_initialized(CLASS, NAME)
-+# define __libc_rwlock_rdlock(NAME)
-+# define __libc_rwlock_unlock(NAME)
-+#endif
-+
-+/* Alignment of types. */
-+#if defined __GNUC__ && __GNUC__ >= 2
-+# define alignof(TYPE) __alignof__ (TYPE)
-+#else
-+# define alignof(TYPE) \
-+ ((int) &((struct { char dummy1; TYPE dummy2; } *) 0)->dummy2)
-+#endif
-+
-+/* The internal variables in the standalone libintl.a must have different
-+ names than the internal variables in GNU libc, otherwise programs
-+ using libintl.a cannot be linked statically. */
-+#if !defined _LIBC
-+# define _nl_default_default_domain _nl_default_default_domain__
-+# define _nl_current_default_domain _nl_current_default_domain__
-+# define _nl_default_dirname _nl_default_dirname__
-+# define _nl_domain_bindings _nl_domain_bindings__
-+#endif
-+
-+/* Some compilers, like SunOS4 cc, don't have offsetof in <stddef.h>. */
-+#ifndef offsetof
-+# define offsetof(type,ident) ((size_t)&(((type*)0)->ident))
-+#endif
-+
-+/* @@ end of prolog @@ */
-+
-+#ifdef _LIBC
-+/* Rename the non ANSI C functions. This is required by the standard
-+ because some ANSI C functions will require linking with this object
-+ file and the name space must not be polluted. */
-+# define getcwd __getcwd
-+# ifndef stpcpy
-+# define stpcpy __stpcpy
-+# endif
-+# define tfind __tfind
-+#else
-+# if !defined HAVE_GETCWD
-+char *getwd ();
-+# define getcwd(buf, max) getwd (buf)
-+# else
-+char *getcwd ();
-+# endif
-+# ifndef HAVE_STPCPY
-+static char *stpcpy PARAMS ((char *dest, const char *src));
-+# endif
-+# ifndef HAVE_MEMPCPY
-+static void *mempcpy PARAMS ((void *dest, const void *src, size_t n));
-+# endif
-+#endif
-+
-+/* Amount to increase buffer size by in each try. */
-+#define PATH_INCR 32
-+
-+/* The following is from pathmax.h. */
-+/* Non-POSIX BSD systems might have gcc's limits.h, which doesn't define
-+ PATH_MAX but might cause redefinition warnings when sys/param.h is
-+ later included (as on MORE/BSD 4.3). */
-+#if defined _POSIX_VERSION || (defined HAVE_LIMITS_H && !defined __GNUC__)
-+# include <limits.h>
-+#endif
-+
-+#ifndef _POSIX_PATH_MAX
-+# define _POSIX_PATH_MAX 255
-+#endif
-+
-+#if !defined PATH_MAX && defined _PC_PATH_MAX
-+# define PATH_MAX (pathconf ("/", _PC_PATH_MAX) < 1 ? 1024 : pathconf ("/", _PC_PATH_MAX))
-+#endif
-+
-+/* Don't include sys/param.h if it already has been. */
-+#if defined HAVE_SYS_PARAM_H && !defined PATH_MAX && !defined MAXPATHLEN
-+# include <sys/param.h>
-+#endif
-+
-+#if !defined PATH_MAX && defined MAXPATHLEN
-+# define PATH_MAX MAXPATHLEN
-+#endif
-+
-+#ifndef PATH_MAX
-+# define PATH_MAX _POSIX_PATH_MAX
-+#endif
-+
-+/* Pathname support.
-+ ISSLASH(C) tests whether C is a directory separator character.
-+ IS_ABSOLUTE_PATH(P) tests whether P is an absolute path. If it is not,
-+ it may be concatenated to a directory pathname.
-+ IS_PATH_WITH_DIR(P) tests whether P contains a directory specification.
-+ */
-+#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
-+ /* Win32, OS/2, DOS */
-+# define ISSLASH(C) ((C) == '/' || (C) == '\\')
-+# define HAS_DEVICE(P) \
-+ ((((P)[0] >= 'A' && (P)[0] <= 'Z') || ((P)[0] >= 'a' && (P)[0] <= 'z')) \
-+ && (P)[1] == ':')
-+# define IS_ABSOLUTE_PATH(P) (ISSLASH ((P)[0]) || HAS_DEVICE (P))
-+# define IS_PATH_WITH_DIR(P) \
-+ (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P))
-+#else
-+ /* Unix */
-+# define ISSLASH(C) ((C) == '/')
-+# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0])
-+# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL)
-+#endif
-+
-+/* XPG3 defines the result of `setlocale (category, NULL)' as:
-+ ``Directs `setlocale()' to query `category' and return the current
-+ setting of `local'.''
-+ However it does not specify the exact format. Neither do SUSV2 and
-+ ISO C 99. So we can use this feature only on selected systems (e.g.
-+ those using GNU C Library). */
-+#if defined _LIBC || (defined __GNU_LIBRARY__ && __GNU_LIBRARY__ >= 2)
-+# define HAVE_LOCALE_NULL
-+#endif
-+
-+/* This is the type used for the search tree where known translations
-+ are stored. */
-+struct known_translation_t
-+{
-+ /* Domain in which to search. */
-+ char *domainname;
-+
-+ /* The category. */
-+ int category;
-+
-+ /* State of the catalog counter at the point the string was found. */
-+ int counter;
-+
-+ /* Catalog where the string was found. */
-+ struct loaded_l10nfile *domain;
-+
-+ /* And finally the translation. */
-+ const char *translation;
-+ size_t translation_length;
-+
-+ /* Pointer to the string in question. */
-+ char msgid[ZERO];
-+};
-+
-+/* Root of the search tree with known translations. We can use this
-+ only if the system provides the `tsearch' function family. */
-+#if defined HAVE_TSEARCH || defined _LIBC
-+# include <search.h>
-+
-+static void *root;
-+
-+# ifdef _LIBC
-+# define tsearch __tsearch
-+# endif
-+
-+/* Function to compare two entries in the table of known translations. */
-+static int transcmp PARAMS ((const void *p1, const void *p2));
-+static int
-+transcmp (p1, p2)
-+ const void *p1;
-+ const void *p2;
-+{
-+ const struct known_translation_t *s1;
-+ const struct known_translation_t *s2;
-+ int result;
-+
-+ s1 = (const struct known_translation_t *) p1;
-+ s2 = (const struct known_translation_t *) p2;
-+
-+ result = strcmp (s1->msgid, s2->msgid);
-+ if (result == 0)
-+ {
-+ result = strcmp (s1->domainname, s2->domainname);
-+ if (result == 0)
-+ /* We compare the category last (though this is the cheapest
-+ operation) since it is hopefully always the same (namely
-+ LC_MESSAGES). */
-+ result = s1->category - s2->category;
-+ }
-+
-+ return result;
-+}
-+#endif
-+
-+/* Name of the default domain used for gettext(3) prior any call to
-+ textdomain(3). The default value for this is "messages". */
-+const char _nl_default_default_domain[] = "messages";
-+
-+/* Value used as the default domain for gettext(3). */
-+const char *_nl_current_default_domain = _nl_default_default_domain;
-+
-+/* Contains the default location of the message catalogs. */
-+const char _nl_default_dirname[] = LOCALEDIR;
-+
-+/* List with bindings of specific domains created by bindtextdomain()
-+ calls. */
-+struct binding *_nl_domain_bindings;
-+
-+/* Prototypes for local functions. */
-+static char *plural_lookup PARAMS ((struct loaded_l10nfile *domain,
-+ unsigned long int n,
-+ const char *translation,
-+ size_t translation_len))
-+ internal_function;
-+static unsigned long int plural_eval PARAMS ((struct expression *pexp,
-+ unsigned long int n))
-+ internal_function;
-+static const char *category_to_name PARAMS ((int category)) internal_function;
-+static const char *guess_category_value PARAMS ((int category,
-+ const char *categoryname))
-+ internal_function;
-+
-+
-+/* For those loosing systems which don't have `alloca' we have to add
-+ some additional code emulating it. */
-+#ifdef HAVE_ALLOCA
-+/* Nothing has to be done. */
-+# define ADD_BLOCK(list, address) /* nothing */
-+# define FREE_BLOCKS(list) /* nothing */
-+#else
-+struct block_list
-+{
-+ void *address;
-+ struct block_list *next;
-+};
-+# define ADD_BLOCK(list, addr) \
-+ do { \
-+ struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \
-+ /* If we cannot get a free block we cannot add the new element to \
-+ the list. */ \
-+ if (newp != NULL) { \
-+ newp->address = (addr); \
-+ newp->next = (list); \
-+ (list) = newp; \
-+ } \
-+ } while (0)
-+# define FREE_BLOCKS(list) \
-+ do { \
-+ while (list != NULL) { \
-+ struct block_list *old = list; \
-+ list = list->next; \
-+ free (old); \
-+ } \
-+ } while (0)
-+# undef alloca
-+# define alloca(size) (malloc (size))
-+#endif /* have alloca */
-+
-+
-+#ifdef _LIBC
-+/* List of blocks allocated for translations. */
-+typedef struct transmem_list
-+{
-+ struct transmem_list *next;
-+ char data[ZERO];
-+} transmem_block_t;
-+static struct transmem_list *transmem_list;
-+#else
-+typedef unsigned char transmem_block_t;
-+#endif
-+
-+
-+/* Names for the libintl functions are a problem. They must not clash
-+ with existing names and they should follow ANSI C. But this source
-+ code is also used in GNU C Library where the names have a __
-+ prefix. So we have to make a difference here. */
-+#ifdef _LIBC
-+# define DCIGETTEXT __dcigettext
-+#else
-+# define DCIGETTEXT dcigettext__
-+#endif
-+
-+/* Lock variable to protect the global data in the gettext implementation. */
-+#ifdef _LIBC
-+__libc_rwlock_define_initialized (, _nl_state_lock)
-+#endif
-+
-+/* Checking whether the binaries runs SUID must be done and glibc provides
-+ easier methods therefore we make a difference here. */
-+#ifdef _LIBC
-+# define ENABLE_SECURE __libc_enable_secure
-+# define DETERMINE_SECURE
-+#else
-+# ifndef HAVE_GETUID
-+# define getuid() 0
-+# endif
-+# ifndef HAVE_GETGID
-+# define getgid() 0
-+# endif
-+# ifndef HAVE_GETEUID
-+# define geteuid() getuid()
-+# endif
-+# ifndef HAVE_GETEGID
-+# define getegid() getgid()
-+# endif
-+static int enable_secure;
-+# define ENABLE_SECURE (enable_secure == 1)
-+# define DETERMINE_SECURE \
-+ if (enable_secure == 0) \
-+ { \
-+ if (getuid () != geteuid () || getgid () != getegid ()) \
-+ enable_secure = 1; \
-+ else \
-+ enable_secure = -1; \
-+ }
-+#endif
-+
-+/* Look up MSGID in the DOMAINNAME message catalog for the current
-+ CATEGORY locale and, if PLURAL is nonzero, search over string
-+ depending on the plural form determined by N. */
-+char *
-+DCIGETTEXT (domainname, msgid1, msgid2, plural, n, category)
-+ const char *domainname;
-+ const char *msgid1;
-+ const char *msgid2;
-+ int plural;
-+ unsigned long int n;
-+ int category;
-+{
-+#ifndef HAVE_ALLOCA
-+ struct block_list *block_list = NULL;
-+#endif
-+ struct loaded_l10nfile *domain;
-+ struct binding *binding;
-+ const char *categoryname;
-+ const char *categoryvalue;
-+ char *dirname, *xdomainname;
-+ char *single_locale;
-+ char *retval;
-+ size_t retlen;
-+ int saved_errno;
-+#if defined HAVE_TSEARCH || defined _LIBC
-+ struct known_translation_t *search;
-+ struct known_translation_t **foundp = NULL;
-+ size_t msgid_len;
-+#endif
-+ size_t domainname_len;
-+
-+ /* If no real MSGID is given return NULL. */
-+ if (msgid1 == NULL)
-+ return NULL;
-+
-+ __libc_rwlock_rdlock (_nl_state_lock);
-+
-+ /* If DOMAINNAME is NULL, we are interested in the default domain. If
-+ CATEGORY is not LC_MESSAGES this might not make much sense but the
-+ definition left this undefined. */
-+ if (domainname == NULL)
-+ domainname = _nl_current_default_domain;
-+
-+#if defined HAVE_TSEARCH || defined _LIBC
-+ msgid_len = strlen (msgid1) + 1;
-+
-+ /* Try to find the translation among those which we found at
-+ some time. */
-+ search = (struct known_translation_t *)
-+ alloca (offsetof (struct known_translation_t, msgid) + msgid_len);
-+ memcpy (search->msgid, msgid1, msgid_len);
-+ search->domainname = (char *) domainname;
-+ search->category = category;
-+
-+ foundp = (struct known_translation_t **) tfind (search, &root, transcmp);
-+ if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr)
-+ {
-+ /* Now deal with plural. */
-+ if (plural)
-+ retval = plural_lookup ((*foundp)->domain, n, (*foundp)->translation,
-+ (*foundp)->translation_length);
-+ else
-+ retval = (char *) (*foundp)->translation;
-+
-+ __libc_rwlock_unlock (_nl_state_lock);
-+ return retval;
-+ }
-+#endif
-+
-+ /* Preserve the `errno' value. */
-+ saved_errno = errno;
-+
-+ /* See whether this is a SUID binary or not. */
-+ DETERMINE_SECURE;
-+
-+ /* First find matching binding. */
-+ for (binding = _nl_domain_bindings; binding != NULL; binding = binding->next)
-+ {
-+ int compare = strcmp (domainname, binding->domainname);
-+ if (compare == 0)
-+ /* We found it! */
-+ break;
-+ if (compare < 0)
-+ {
-+ /* It is not in the list. */
-+ binding = NULL;
-+ break;
-+ }
-+ }
-+
-+ if (binding == NULL)
-+ dirname = (char *) _nl_default_dirname;
-+ else if (IS_ABSOLUTE_PATH (binding->dirname))
-+ dirname = binding->dirname;
-+ else
-+ {
-+ /* We have a relative path. Make it absolute now. */
-+ size_t dirname_len = strlen (binding->dirname) + 1;
-+ size_t path_max;
-+ char *ret;
-+
-+ path_max = (unsigned int) PATH_MAX;
-+ path_max += 2; /* The getcwd docs say to do this. */
-+
-+ for (;;)
-+ {
-+ dirname = (char *) alloca (path_max + dirname_len);
-+ ADD_BLOCK (block_list, dirname);
-+
-+ __set_errno (0);
-+ ret = getcwd (dirname, path_max);
-+ if (ret != NULL || errno != ERANGE)
-+ break;
-+
-+ path_max += path_max / 2;
-+ path_max += PATH_INCR;
-+ }
-+
-+ if (ret == NULL)
-+ {
-+ /* We cannot get the current working directory. Don't signal an
-+ error but simply return the default string. */
-+ FREE_BLOCKS (block_list);
-+ __libc_rwlock_unlock (_nl_state_lock);
-+ __set_errno (saved_errno);
-+ return (plural == 0
-+ ? (char *) msgid1
-+ /* Use the Germanic plural rule. */
-+ : n == 1 ? (char *) msgid1 : (char *) msgid2);
-+ }
-+
-+ stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname);
-+ }
-+
-+ /* Now determine the symbolic name of CATEGORY and its value. */
-+ categoryname = category_to_name (category);
-+ categoryvalue = guess_category_value (category, categoryname);
-+
-+ domainname_len = strlen (domainname);
-+ xdomainname = (char *) alloca (strlen (categoryname)
-+ + domainname_len + 5);
-+ ADD_BLOCK (block_list, xdomainname);
-+
-+ stpcpy (mempcpy (stpcpy (stpcpy (xdomainname, categoryname), "/"),
-+ domainname, domainname_len),
-+ ".mo");
-+
-+ /* Creating working area. */
-+ single_locale = (char *) alloca (strlen (categoryvalue) + 1);
-+ ADD_BLOCK (block_list, single_locale);
-+
-+
-+ /* Search for the given string. This is a loop because we perhaps
-+ got an ordered list of languages to consider for the translation. */
-+ while (1)
-+ {
-+ /* Make CATEGORYVALUE point to the next element of the list. */
-+ while (categoryvalue[0] != '\0' && categoryvalue[0] == ':')
-+ ++categoryvalue;
-+ if (categoryvalue[0] == '\0')
-+ {
-+ /* The whole contents of CATEGORYVALUE has been searched but
-+ no valid entry has been found. We solve this situation
-+ by implicitly appending a "C" entry, i.e. no translation
-+ will take place. */
-+ single_locale[0] = 'C';
-+ single_locale[1] = '\0';
-+ }
-+ else
-+ {
-+ char *cp = single_locale;
-+ while (categoryvalue[0] != '\0' && categoryvalue[0] != ':')
-+ *cp++ = *categoryvalue++;
-+ *cp = '\0';
-+
-+ /* When this is a SUID binary we must not allow accessing files
-+ outside the dedicated directories. */
-+ if (ENABLE_SECURE && IS_PATH_WITH_DIR (single_locale))
-+ /* Ingore this entry. */
-+ continue;
-+ }
-+
-+ /* If the current locale value is C (or POSIX) we don't load a
-+ domain. Return the MSGID. */
-+ if (strcmp (single_locale, "C") == 0
-+ || strcmp (single_locale, "POSIX") == 0)
-+ {
-+ FREE_BLOCKS (block_list);
-+ __libc_rwlock_unlock (_nl_state_lock);
-+ __set_errno (saved_errno);
-+ return (plural == 0
-+ ? (char *) msgid1
-+ /* Use the Germanic plural rule. */
-+ : n == 1 ? (char *) msgid1 : (char *) msgid2);
-+ }
-+
-+
-+ /* Find structure describing the message catalog matching the
-+ DOMAINNAME and CATEGORY. */
-+ domain = _nl_find_domain (dirname, single_locale, xdomainname, binding);
-+
-+ if (domain != NULL)
-+ {
-+ retval = _nl_find_msg (domain, binding, msgid1, &retlen);
-+
-+ if (retval == NULL)
-+ {
-+ int cnt;
-+
-+ for (cnt = 0; domain->successor[cnt] != NULL; ++cnt)
-+ {
-+ retval = _nl_find_msg (domain->successor[cnt], binding,
-+ msgid1, &retlen);
-+
-+ if (retval != NULL)
-+ {
-+ domain = domain->successor[cnt];
-+ break;
-+ }
-+ }
-+ }
-+
-+ if (retval != NULL)
-+ {
-+ /* Found the translation of MSGID1 in domain DOMAIN:
-+ starting at RETVAL, RETLEN bytes. */
-+ FREE_BLOCKS (block_list);
-+ __set_errno (saved_errno);
-+#if defined HAVE_TSEARCH || defined _LIBC
-+ if (foundp == NULL)
-+ {
-+ /* Create a new entry and add it to the search tree. */
-+ struct known_translation_t *newp;
-+
-+ newp = (struct known_translation_t *)
-+ malloc (offsetof (struct known_translation_t, msgid)
-+ + msgid_len + domainname_len + 1);
-+ if (newp != NULL)
-+ {
-+ newp->domainname =
-+ mempcpy (newp->msgid, msgid1, msgid_len);
-+ memcpy (newp->domainname, domainname, domainname_len + 1);
-+ newp->category = category;
-+ newp->counter = _nl_msg_cat_cntr;
-+ newp->domain = domain;
-+ newp->translation = retval;
-+ newp->translation_length = retlen;
-+
-+ /* Insert the entry in the search tree. */
-+ foundp = (struct known_translation_t **)
-+ tsearch (newp, &root, transcmp);
-+ if (foundp == NULL
-+ || __builtin_expect (*foundp != newp, 0))
-+ /* The insert failed. */
-+ free (newp);
-+ }
-+ }
-+ else
-+ {
-+ /* We can update the existing entry. */
-+ (*foundp)->counter = _nl_msg_cat_cntr;
-+ (*foundp)->domain = domain;
-+ (*foundp)->translation = retval;
-+ (*foundp)->translation_length = retlen;
-+ }
-+#endif
-+ /* Now deal with plural. */
-+ if (plural)
-+ retval = plural_lookup (domain, n, retval, retlen);
-+
-+ __libc_rwlock_unlock (_nl_state_lock);
-+ return retval;
-+ }
-+ }
-+ }
-+ /* NOTREACHED */
-+}
-+
-+
-+char *
-+internal_function
-+_nl_find_msg (domain_file, domainbinding, msgid, lengthp)
-+ struct loaded_l10nfile *domain_file;
-+ struct binding *domainbinding;
-+ const char *msgid;
-+ size_t *lengthp;
-+{
-+ struct loaded_domain *domain;
-+ size_t act;
-+ char *result;
-+ size_t resultlen;
-+
-+ if (domain_file->decided == 0)
-+ _nl_load_domain (domain_file, domainbinding);
-+
-+ if (domain_file->data == NULL)
-+ return NULL;
-+
-+ domain = (struct loaded_domain *) domain_file->data;
-+
-+ /* Locate the MSGID and its translation. */
-+ if (domain->hash_size > 2 && domain->hash_tab != NULL)
-+ {
-+ /* Use the hashing table. */
-+ nls_uint32 len = strlen (msgid);
-+ nls_uint32 hash_val = hash_string (msgid);
-+ nls_uint32 idx = hash_val % domain->hash_size;
-+ nls_uint32 incr = 1 + (hash_val % (domain->hash_size - 2));
-+
-+ while (1)
-+ {
-+ nls_uint32 nstr = W (domain->must_swap, domain->hash_tab[idx]);
-+
-+ if (nstr == 0)
-+ /* Hash table entry is empty. */
-+ return NULL;
-+
-+ /* Compare msgid with the original string at index nstr-1.
-+ We compare the lengths with >=, not ==, because plural entries
-+ are represented by strings with an embedded NUL. */
-+ if (W (domain->must_swap, domain->orig_tab[nstr - 1].length) >= len
-+ && (strcmp (msgid,
-+ domain->data + W (domain->must_swap,
-+ domain->orig_tab[nstr - 1].offset))
-+ == 0))
-+ {
-+ act = nstr - 1;
-+ goto found;
-+ }
-+
-+ if (idx >= domain->hash_size - incr)
-+ idx -= domain->hash_size - incr;
-+ else
-+ idx += incr;
-+ }
-+ /* NOTREACHED */
-+ }
-+ else
-+ {
-+ /* Try the default method: binary search in the sorted array of
-+ messages. */
-+ size_t top, bottom;
-+
-+ bottom = 0;
-+ top = domain->nstrings;
-+ while (bottom < top)
-+ {
-+ int cmp_val;
-+
-+ act = (bottom + top) / 2;
-+ cmp_val = strcmp (msgid, (domain->data
-+ + W (domain->must_swap,
-+ domain->orig_tab[act].offset)));
-+ if (cmp_val < 0)
-+ top = act;
-+ else if (cmp_val > 0)
-+ bottom = act + 1;
-+ else
-+ goto found;
-+ }
-+ /* No translation was found. */
-+ return NULL;
-+ }
-+
-+ found:
-+ /* The translation was found at index ACT. If we have to convert the
-+ string to use a different character set, this is the time. */
-+ result = ((char *) domain->data
-+ + W (domain->must_swap, domain->trans_tab[act].offset));
-+ resultlen = W (domain->must_swap, domain->trans_tab[act].length) + 1;
-+
-+#if defined _LIBC || HAVE_ICONV
-+ if (domain->codeset_cntr
-+ != (domainbinding != NULL ? domainbinding->codeset_cntr : 0))
-+ {
-+ /* The domain's codeset has changed through bind_textdomain_codeset()
-+ since the message catalog was initialized or last accessed. We
-+ have to reinitialize the converter. */
-+ _nl_free_domain_conv (domain);
-+ _nl_init_domain_conv (domain_file, domain, domainbinding);
-+ }
-+
-+ if (
-+# ifdef _LIBC
-+ domain->conv != (__gconv_t) -1
-+# else
-+# if HAVE_ICONV
-+ domain->conv != (iconv_t) -1
-+# endif
-+# endif
-+ )
-+ {
-+ /* We are supposed to do a conversion. First allocate an
-+ appropriate table with the same structure as the table
-+ of translations in the file, where we can put the pointers
-+ to the converted strings in.
-+ There is a slight complication with plural entries. They
-+ are represented by consecutive NUL terminated strings. We
-+ handle this case by converting RESULTLEN bytes, including
-+ NULs. */
-+
-+ if (domain->conv_tab == NULL
-+ && ((domain->conv_tab = (char **) calloc (domain->nstrings,
-+ sizeof (char *)))
-+ == NULL))
-+ /* Mark that we didn't succeed allocating a table. */
-+ domain->conv_tab = (char **) -1;
-+
-+ if (__builtin_expect (domain->conv_tab == (char **) -1, 0))
-+ /* Nothing we can do, no more memory. */
-+ goto converted;
-+
-+ if (domain->conv_tab[act] == NULL)
-+ {
-+ /* We haven't used this string so far, so it is not
-+ translated yet. Do this now. */
-+ /* We use a bit more efficient memory handling.
-+ We allocate always larger blocks which get used over
-+ time. This is faster than many small allocations. */
-+ __libc_lock_define_initialized (static, lock)
-+# define INITIAL_BLOCK_SIZE 4080
-+ static unsigned char *freemem;
-+ static size_t freemem_size;
-+
-+ const unsigned char *inbuf;
-+ unsigned char *outbuf;
-+ int malloc_count;
-+# ifndef _LIBC
-+ transmem_block_t *transmem_list = NULL;
-+# endif
-+
-+ __libc_lock_lock (lock);
-+
-+ inbuf = (const unsigned char *) result;
-+ outbuf = freemem + sizeof (size_t);
-+
-+ malloc_count = 0;
-+ while (1)
-+ {
-+ transmem_block_t *newmem;
-+# ifdef _LIBC
-+ size_t non_reversible;
-+ int res;
-+
-+ if (freemem_size < sizeof (size_t))
-+ goto resize_freemem;
-+
-+ res = __gconv (domain->conv,
-+ &inbuf, inbuf + resultlen,
-+ &outbuf,
-+ outbuf + freemem_size - sizeof (size_t),
-+ &non_reversible);
-+
-+ if (res == __GCONV_OK || res == __GCONV_EMPTY_INPUT)
-+ break;
-+
-+ if (res != __GCONV_FULL_OUTPUT)
-+ {
-+ __libc_lock_unlock (lock);
-+ goto converted;
-+ }
-+
-+ inbuf = result;
-+# else
-+# if HAVE_ICONV
-+ const char *inptr = (const char *) inbuf;
-+ size_t inleft = resultlen;
-+ char *outptr = (char *) outbuf;
-+ size_t outleft;
-+
-+ if (freemem_size < sizeof (size_t))
-+ goto resize_freemem;
-+
-+ outleft = freemem_size - sizeof (size_t);
-+ if (iconv (domain->conv,
-+ (ICONV_CONST char **) &inptr, &inleft,
-+ &outptr, &outleft)
-+ != (size_t) (-1))
-+ {
-+ outbuf = (unsigned char *) outptr;
-+ break;
-+ }
-+ if (errno != E2BIG)
-+ {
-+ __libc_lock_unlock (lock);
-+ goto converted;
-+ }
-+# endif
-+# endif
-+
-+ resize_freemem:
-+ /* We must allocate a new buffer or resize the old one. */
-+ if (malloc_count > 0)
-+ {
-+ ++malloc_count;
-+ freemem_size = malloc_count * INITIAL_BLOCK_SIZE;
-+ newmem = (transmem_block_t *) realloc (transmem_list,
-+ freemem_size);
-+# ifdef _LIBC
-+ if (newmem != NULL)
-+ transmem_list = transmem_list->next;
-+ else
-+ {
-+ struct transmem_list *old = transmem_list;
-+
-+ transmem_list = transmem_list->next;
-+ free (old);
-+ }
-+# endif
-+ }
-+ else
-+ {
-+ malloc_count = 1;
-+ freemem_size = INITIAL_BLOCK_SIZE;
-+ newmem = (transmem_block_t *) malloc (freemem_size);
-+ }
-+ if (__builtin_expect (newmem == NULL, 0))
-+ {
-+ freemem = NULL;
-+ freemem_size = 0;
-+ __libc_lock_unlock (lock);
-+ goto converted;
-+ }
-+
-+# ifdef _LIBC
-+ /* Add the block to the list of blocks we have to free
-+ at some point. */
-+ newmem->next = transmem_list;
-+ transmem_list = newmem;
-+
-+ freemem = newmem->data;
-+ freemem_size -= offsetof (struct transmem_list, data);
-+# else
-+ transmem_list = newmem;
-+ freemem = newmem;
-+# endif
-+
-+ outbuf = freemem + sizeof (size_t);
-+ }
-+
-+ /* We have now in our buffer a converted string. Put this
-+ into the table of conversions. */
-+ *(size_t *) freemem = outbuf - freemem - sizeof (size_t);
-+ domain->conv_tab[act] = (char *) freemem;
-+ /* Shrink freemem, but keep it aligned. */
-+ freemem_size -= outbuf - freemem;
-+ freemem = outbuf;
-+ freemem += freemem_size & (alignof (size_t) - 1);
-+ freemem_size = freemem_size & ~ (alignof (size_t) - 1);
-+
-+ __libc_lock_unlock (lock);
-+ }
-+
-+ /* Now domain->conv_tab[act] contains the translation of all
-+ the plural variants. */
-+ result = domain->conv_tab[act] + sizeof (size_t);
-+ resultlen = *(size_t *) domain->conv_tab[act];
-+ }
-+
-+ converted:
-+ /* The result string is converted. */
-+
-+#endif /* _LIBC || HAVE_ICONV */
-+
-+ *lengthp = resultlen;
-+ return result;
-+}
-+
-+
-+/* Look up a plural variant. */
-+static char *
-+internal_function
-+plural_lookup (domain, n, translation, translation_len)
-+ struct loaded_l10nfile *domain;
-+ unsigned long int n;
-+ const char *translation;
-+ size_t translation_len;
-+{
-+ struct loaded_domain *domaindata = (struct loaded_domain *) domain->data;
-+ unsigned long int index;
-+ const char *p;
-+
-+ index = plural_eval (domaindata->plural, n);
-+ if (index >= domaindata->nplurals)
-+ /* This should never happen. It means the plural expression and the
-+ given maximum value do not match. */
-+ index = 0;
-+
-+ /* Skip INDEX strings at TRANSLATION. */
-+ p = translation;
-+ while (index-- > 0)
-+ {
-+#ifdef _LIBC
-+ p = __rawmemchr (p, '\0');
-+#else
-+ p = strchr (p, '\0');
-+#endif
-+ /* And skip over the NUL byte. */
-+ p++;
-+
-+ if (p >= translation + translation_len)
-+ /* This should never happen. It means the plural expression
-+ evaluated to a value larger than the number of variants
-+ available for MSGID1. */
-+ return (char *) translation;
-+ }
-+ return (char *) p;
-+}
-+
-+
-+/* Function to evaluate the plural expression and return an index value. */
-+static unsigned long int
-+internal_function
-+plural_eval (pexp, n)
-+ struct expression *pexp;
-+ unsigned long int n;
-+{
-+ switch (pexp->nargs)
-+ {
-+ case 0:
-+ switch (pexp->operation)
-+ {
-+ case var:
-+ return n;
-+ case num:
-+ return pexp->val.num;
-+ default:
-+ break;
-+ }
-+ /* NOTREACHED */
-+ break;
-+ case 1:
-+ {
-+ /* pexp->operation must be lnot. */
-+ unsigned long int arg = plural_eval (pexp->val.args[0], n);
-+ return ! arg;
-+ }
-+ case 2:
-+ {
-+ unsigned long int leftarg = plural_eval (pexp->val.args[0], n);
-+ if (pexp->operation == lor)
-+ return leftarg || plural_eval (pexp->val.args[1], n);
-+ else if (pexp->operation == land)
-+ return leftarg && plural_eval (pexp->val.args[1], n);
-+ else
-+ {
-+ unsigned long int rightarg = plural_eval (pexp->val.args[1], n);
-+
-+ switch (pexp->operation)
-+ {
-+ case mult:
-+ return leftarg * rightarg;
-+ case divide:
-+ return leftarg / rightarg;
-+ case module:
-+ return leftarg % rightarg;
-+ case plus:
-+ return leftarg + rightarg;
-+ case minus:
-+ return leftarg - rightarg;
-+ case less_than:
-+ return leftarg < rightarg;
-+ case greater_than:
-+ return leftarg > rightarg;
-+ case less_or_equal:
-+ return leftarg <= rightarg;
-+ case greater_or_equal:
-+ return leftarg >= rightarg;
-+ case equal:
-+ return leftarg == rightarg;
-+ case not_equal:
-+ return leftarg != rightarg;
-+ default:
-+ break;
-+ }
-+ }
-+ /* NOTREACHED */
-+ break;
-+ }
-+ case 3:
-+ {
-+ /* pexp->operation must be qmop. */
-+ unsigned long int boolarg = plural_eval (pexp->val.args[0], n);
-+ return plural_eval (pexp->val.args[boolarg ? 1 : 2], n);
-+ }
-+ }
-+ /* NOTREACHED */
-+ return 0;
-+}
-+
-+
-+/* Return string representation of locale CATEGORY. */
-+static const char *
-+internal_function
-+category_to_name (category)
-+ int category;
-+{
-+ const char *retval;
-+
-+ switch (category)
-+ {
-+#ifdef LC_COLLATE
-+ case LC_COLLATE:
-+ retval = "LC_COLLATE";
-+ break;
-+#endif
-+#ifdef LC_CTYPE
-+ case LC_CTYPE:
-+ retval = "LC_CTYPE";
-+ break;
-+#endif
-+#ifdef LC_MONETARY
-+ case LC_MONETARY:
-+ retval = "LC_MONETARY";
-+ break;
-+#endif
-+#ifdef LC_NUMERIC
-+ case LC_NUMERIC:
-+ retval = "LC_NUMERIC";
-+ break;
-+#endif
-+#ifdef LC_TIME
-+ case LC_TIME:
-+ retval = "LC_TIME";
-+ break;
-+#endif
-+#ifdef LC_MESSAGES
-+ case LC_MESSAGES:
-+ retval = "LC_MESSAGES";
-+ break;
-+#endif
-+#ifdef LC_RESPONSE
-+ case LC_RESPONSE:
-+ retval = "LC_RESPONSE";
-+ break;
-+#endif
-+#ifdef LC_ALL
-+ case LC_ALL:
-+ /* This might not make sense but is perhaps better than any other
-+ value. */
-+ retval = "LC_ALL";
-+ break;
-+#endif
-+ default:
-+ /* If you have a better idea for a default value let me know. */
-+ retval = "LC_XXX";
-+ }
-+
-+ return retval;
-+}
-+
-+/* Guess value of current locale from value of the environment variables. */
-+static const char *
-+internal_function
-+guess_category_value (category, categoryname)
-+ int category;
-+ const char *categoryname;
-+{
-+ const char *language;
-+ const char *retval;
-+
-+ /* The highest priority value is the `LANGUAGE' environment
-+ variable. But we don't use the value if the currently selected
-+ locale is the C locale. This is a GNU extension. */
-+ language = getenv ("LANGUAGE");
-+ if (language != NULL && language[0] == '\0')
-+ language = NULL;
-+
-+ /* We have to proceed with the POSIX methods of looking to `LC_ALL',
-+ `LC_xxx', and `LANG'. On some systems this can be done by the
-+ `setlocale' function itself. */
-+#if defined _LIBC || (defined HAVE_SETLOCALE && defined HAVE_LC_MESSAGES && defined HAVE_LOCALE_NULL)
-+ retval = setlocale (category, NULL);
-+#else
-+ /* Setting of LC_ALL overwrites all other. */
-+ retval = getenv ("LC_ALL");
-+ if (retval == NULL || retval[0] == '\0')
-+ {
-+ /* Next comes the name of the desired category. */
-+ retval = getenv (categoryname);
-+ if (retval == NULL || retval[0] == '\0')
-+ {
-+ /* Last possibility is the LANG environment variable. */
-+ retval = getenv ("LANG");
-+ if (retval == NULL || retval[0] == '\0')
-+ /* We use C as the default domain. POSIX says this is
-+ implementation defined. */
-+ return "C";
-+ }
-+ }
-+#endif
-+
-+ return language != NULL && strcmp (retval, "C") != 0 ? language : retval;
-+}
-+
-+/* @@ begin of epilog @@ */
-+
-+/* We don't want libintl.a to depend on any other library. So we
-+ avoid the non-standard function stpcpy. In GNU C Library this
-+ function is available, though. Also allow the symbol HAVE_STPCPY
-+ to be defined. */
-+#if !_LIBC && !HAVE_STPCPY
-+static char *
-+stpcpy (dest, src)
-+ char *dest;
-+ const char *src;
-+{
-+ while ((*dest++ = *src++) != '\0')
-+ /* Do nothing. */ ;
-+ return dest - 1;
-+}
-+#endif
-+
-+#if !_LIBC && !HAVE_MEMPCPY
-+static void *
-+mempcpy (dest, src, n)
-+ void *dest;
-+ const void *src;
-+ size_t n;
-+{
-+ return (void *) ((char *) memcpy (dest, src, n) + n);
-+}
-+#endif
-+
-+
-+#ifdef _LIBC
-+/* If we want to free all resources we have to do some work at
-+ program's end. */
-+static void __attribute__ ((unused))
-+free_mem (void)
-+{
-+ void *old;
-+
-+ while (_nl_domain_bindings != NULL)
-+ {
-+ struct binding *oldp = _nl_domain_bindings;
-+ _nl_domain_bindings = _nl_domain_bindings->next;
-+ if (oldp->dirname != _nl_default_dirname)
-+ /* Yes, this is a pointer comparison. */
-+ free (oldp->dirname);
-+ free (oldp->codeset);
-+ free (oldp);
-+ }
-+
-+ if (_nl_current_default_domain != _nl_default_default_domain)
-+ /* Yes, again a pointer comparison. */
-+ free ((char *) _nl_current_default_domain);
-+
-+ /* Remove the search tree with the known translations. */
-+ __tdestroy (root, free);
-+ root = NULL;
-+
-+ while (transmem_list != NULL)
-+ {
-+ old = transmem_list;
-+ transmem_list = transmem_list->next;
-+ free (old);
-+ }
-+}
-+
-+text_set_element (__libc_subfreeres, free_mem);
-+#endif
-diff -urN parted-1.4.17.orig/intl/dcngettext.c parted-1.4.17/intl/dcngettext.c
---- parted-1.4.17.orig/intl/dcngettext.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/intl/dcngettext.c Thu Aug 2 14:26:15 2001
-@@ -0,0 +1,59 @@
-+/* Implementation of the dcngettext(3) function.
-+ Copyright (C) 1995-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, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ GNU General Public License for more details.
-+
-+ You 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. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include "gettextP.h"
-+#ifdef _LIBC
-+# include <libintl.h>
-+#else
-+# include "libgnuintl.h"
-+#endif
-+
-+/* @@ end of prolog @@ */
-+
-+/* Names for the libintl functions are a problem. They must not clash
-+ with existing names and they should follow ANSI C. But this source
-+ code is also used in GNU C Library where the names have a __
-+ prefix. So we have to make a difference here. */
-+#ifdef _LIBC
-+# define DCNGETTEXT __dcngettext
-+# define DCIGETTEXT __dcigettext
-+#else
-+# define DCNGETTEXT dcngettext__
-+# define DCIGETTEXT dcigettext__
-+#endif
-+
-+/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
-+ locale. */
-+char *
-+DCNGETTEXT (domainname, msgid1, msgid2, n, category)
-+ const char *domainname;
-+ const char *msgid1;
-+ const char *msgid2;
-+ unsigned long int n;
-+ int category;
-+{
-+ return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category);
-+}
-+
-+#ifdef _LIBC
-+/* Alias for function name in GNU C Library. */
-+weak_alias (__dcngettext, dcngettext);
-+#endif
-diff -urN parted-1.4.17.orig/intl/dgettext.c parted-1.4.17/intl/dgettext.c
---- parted-1.4.17.orig/intl/dgettext.c Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/dgettext.c Thu Aug 2 14:26:15 2001
-@@ -1,5 +1,5 @@
--/* Implementation of the dgettext(3) function
-- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
-+/* Implementation of the dgettext(3) function.
-+ Copyright (C) 1995-1997, 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
-@@ -19,14 +19,13 @@
- # include <config.h>
- #endif
-
--#if defined HAVE_LOCALE_H || defined _LIBC
--# include <locale.h>
--#endif
-+#include <locale.h>
-
-+#include "gettextP.h"
- #ifdef _LIBC
- # include <libintl.h>
- #else
--# include "libgettext.h"
-+# include "libgnuintl.h"
- #endif
-
- /* @@ end of prolog @@ */
-diff -urN parted-1.4.17.orig/intl/dngettext.c parted-1.4.17/intl/dngettext.c
---- parted-1.4.17.orig/intl/dngettext.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/intl/dngettext.c Thu Aug 2 14:26:15 2001
-@@ -0,0 +1,60 @@
-+/* Implementation of the dngettext(3) function.
-+ Copyright (C) 1995-1997, 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, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ GNU General Public License for more details.
-+
-+ You 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. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <locale.h>
-+
-+#include "gettextP.h"
-+#ifdef _LIBC
-+# include <libintl.h>
-+#else
-+# include "libgnuintl.h"
-+#endif
-+
-+/* @@ end of prolog @@ */
-+
-+/* Names for the libintl functions are a problem. They must not clash
-+ with existing names and they should follow ANSI C. But this source
-+ code is also used in GNU C Library where the names have a __
-+ prefix. So we have to make a difference here. */
-+#ifdef _LIBC
-+# define DNGETTEXT __dngettext
-+# define DCNGETTEXT __dcngettext
-+#else
-+# define DNGETTEXT dngettext__
-+# define DCNGETTEXT dcngettext__
-+#endif
-+
-+/* Look up MSGID in the DOMAINNAME message catalog of the current
-+ LC_MESSAGES locale and skip message according to the plural form. */
-+char *
-+DNGETTEXT (domainname, msgid1, msgid2, n)
-+ const char *domainname;
-+ const char *msgid1;
-+ const char *msgid2;
-+ unsigned long int n;
-+{
-+ return DCNGETTEXT (domainname, msgid1, msgid2, n, LC_MESSAGES);
-+}
-+
-+#ifdef _LIBC
-+/* Alias for function name in GNU C Library. */
-+weak_alias (__dngettext, dngettext);
-+#endif
-diff -urN parted-1.4.17.orig/intl/explodename.c parted-1.4.17/intl/explodename.c
---- parted-1.4.17.orig/intl/explodename.c Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/explodename.c Thu Aug 2 14:26:15 2001
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-+/* Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-
- This program is free software; you can redistribute it and/or modify
-@@ -19,15 +19,8 @@
- # include <config.h>
- #endif
-
--#if defined STDC_HEADERS || defined _LIBC
--# include <stdlib.h>
--#endif
--
--#if defined HAVE_STRING_H || defined _LIBC
--# include <string.h>
--#else
--# include <strings.h>
--#endif
-+#include <stdlib.h>
-+#include <string.h>
- #include <sys/types.h>
-
- #include "loadinfo.h"
-@@ -43,6 +36,18 @@
-
- /* @@ end of prolog @@ */
-
-+char *
-+_nl_find_language (name)
-+ const char *name;
-+{
-+ while (name[0] != '\0' && name[0] != '_' && name[0] != '@'
-+ && name[0] != '+' && name[0] != ',')
-+ ++name;
-+
-+ return (char *) name;
-+}
-+
-+
- int
- _nl_explode_name (name, language, modifier, territory, codeset,
- normalized_codeset, special, sponsor, revision)
-@@ -74,9 +79,7 @@
- mask = 0;
- syntax = undecided;
- *language = cp = name;
-- while (cp[0] != '\0' && cp[0] != '_' && cp[0] != '@'
-- && cp[0] != '+' && cp[0] != ',')
-- ++cp;
-+ cp = _nl_find_language (*language);
-
- if (*language == cp)
- /* This does not make sense: language has to be specified. Use
-diff -urN parted-1.4.17.orig/intl/finddomain.c parted-1.4.17/intl/finddomain.c
---- parted-1.4.17.orig/intl/finddomain.c Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/finddomain.c Thu Aug 2 14:26:15 2001
-@@ -1,6 +1,6 @@
- /* Handle list of needed message catalogs
-- Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-- Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-+ Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.
-+ Written by Ulrich Drepper <drepper@gnu.org>, 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
-@@ -20,45 +20,20 @@
- # include <config.h>
- #endif
-
--#include <ctype.h>
--#include <errno.h>
- #include <stdio.h>
- #include <sys/types.h>
--
--#if defined STDC_HEADERS || defined _LIBC
--# include <stdlib.h>
--#else
--# ifdef HAVE_MALLOC_H
--# include <malloc.h>
--# else
--void free ();
--# endif
--#endif
--
--#if defined HAVE_STRING_H || defined _LIBC
--# include <string.h>
--#else
--# include <strings.h>
--# ifndef memcpy
--# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
--# endif
--#endif
--#if !HAVE_STRCHR && !defined _LIBC
--# ifndef strchr
--# define strchr index
--# endif
--#endif
-+#include <stdlib.h>
-+#include <string.h>
-
- #if defined HAVE_UNISTD_H || defined _LIBC
- # include <unistd.h>
- #endif
-
--#include "gettext.h"
- #include "gettextP.h"
- #ifdef _LIBC
- # include <libintl.h>
- #else
--# include "libgettext.h"
-+# include "libgnuintl.h"
- #endif
-
- /* @@ end of prolog @@ */
-@@ -71,10 +46,11 @@
- established bindings. */
- struct loaded_l10nfile *
- internal_function
--_nl_find_domain (dirname, locale, domainname)
-+_nl_find_domain (dirname, locale, domainname, domainbinding)
- const char *dirname;
- char *locale;
- const char *domainname;
-+ struct binding *domainbinding;
- {
- struct loaded_l10nfile *retval;
- const char *language;
-@@ -120,7 +96,7 @@
- int cnt;
-
- if (retval->decided == 0)
-- _nl_load_domain (retval);
-+ _nl_load_domain (retval, domainbinding);
-
- if (retval->data != NULL)
- return retval;
-@@ -128,7 +104,7 @@
- for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
- {
- if (retval->successor[cnt]->decided == 0)
-- _nl_load_domain (retval->successor[cnt]);
-+ _nl_load_domain (retval->successor[cnt], domainbinding);
-
- if (retval->successor[cnt]->data != NULL)
- break;
-@@ -175,14 +151,14 @@
- return NULL;
-
- if (retval->decided == 0)
-- _nl_load_domain (retval);
-+ _nl_load_domain (retval, domainbinding);
- if (retval->data == NULL)
- {
- int cnt;
- for (cnt = 0; retval->successor[cnt] != NULL; ++cnt)
- {
- if (retval->successor[cnt]->decided == 0)
-- _nl_load_domain (retval->successor[cnt]);
-+ _nl_load_domain (retval->successor[cnt], domainbinding);
- if (retval->successor[cnt]->data != NULL)
- break;
- }
-@@ -192,6 +168,10 @@
- if (alias_value != NULL)
- free (locale);
-
-+ /* The space for normalized_codeset is dynamically allocated. Free it. */
-+ if (mask & XPG_NORM_CODESET)
-+ free ((void *) normalized_codeset);
-+
- return retval;
- }
-
-@@ -208,6 +188,7 @@
- if (runp->data != NULL)
- _nl_unload_domain ((struct loaded_domain *) runp->data);
- runp = runp->next;
-+ free ((char *) here->filename);
- free (here);
- }
- }
-diff -urN parted-1.4.17.orig/intl/gettext.c parted-1.4.17/intl/gettext.c
---- parted-1.4.17.orig/intl/gettext.c Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/gettext.c Thu Aug 2 14:26:15 2001
-@@ -1,5 +1,5 @@
- /* Implementation of gettext(3) function.
-- Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-+ Copyright (C) 1995, 1997, 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
-@@ -23,21 +23,14 @@
- # define __need_NULL
- # include <stddef.h>
- #else
--# ifdef STDC_HEADERS
--# include <stdlib.h> /* Just for NULL. */
--# else
--# ifdef HAVE_STRING_H
--# include <string.h>
--# else
--# define NULL ((void *) 0)
--# endif
--# endif
-+# include <stdlib.h> /* Just for NULL. */
- #endif
-
-+#include "gettextP.h"
- #ifdef _LIBC
- # include <libintl.h>
- #else
--# include "libgettext.h"
-+# include "libgnuintl.h"
- #endif
-
- /* @@ end of prolog @@ */
-@@ -48,10 +41,10 @@
- prefix. So we have to make a difference here. */
- #ifdef _LIBC
- # define GETTEXT __gettext
--# define DGETTEXT __dgettext
-+# define DCGETTEXT __dcgettext
- #else
- # define GETTEXT gettext__
--# define DGETTEXT dgettext__
-+# define DCGETTEXT dcgettext__
- #endif
-
- /* Look up MSGID in the current default message catalog for the current
-@@ -61,7 +54,7 @@
- GETTEXT (msgid)
- const char *msgid;
- {
-- return DGETTEXT (NULL, msgid);
-+ return DCGETTEXT (NULL, msgid, LC_MESSAGES);
- }
-
- #ifdef _LIBC
-diff -urN parted-1.4.17.orig/intl/gettext.h parted-1.4.17/intl/gettext.h
---- parted-1.4.17.orig/intl/gettext.h Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/gettext.h Thu Aug 2 14:26:15 2001
-@@ -1,5 +1,5 @@
--/* Internal header for GNU gettext internationalization functions.
-- Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-+/* Description of GNU message catalog format: general file layout.
-+ Copyright (C) 1995, 1997, 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
-@@ -11,16 +11,13 @@
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
-- You should have received a copy of the GNU Library General Public
-- License along with the GNU C Library; see the file COPYING.LIB. If not,
-- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-- Boston, MA 02111-1307, USA. */
-+ You 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. */
-
- #ifndef _GETTEXT_H
- #define _GETTEXT_H 1
-
--#include <stdio.h>
--
- #if HAVE_LIMITS_H || _LIBC
- # include <limits.h>
- #endif
-@@ -37,9 +34,8 @@
- /* The following contortions are an attempt to use the C preprocessor
- to determine an unsigned integral type that is 32 bits wide. An
- alternative approach is to use autoconf's AC_CHECK_SIZEOF macro, but
-- doing that would require that the configure script compile and *run*
-- the resulting executable. Locally running cross-compiled executables
-- is usually not possible. */
-+ as of version autoconf-2.13, the AC_CHECK_SIZEOF macro doesn't work
-+ when cross-compiling. */
-
- #if __STDC__
- # define UINT_MAX_32_BITS 4294967295U
-diff -urN parted-1.4.17.orig/intl/gettextP.h parted-1.4.17/intl/gettextP.h
---- parted-1.4.17.orig/intl/gettextP.h Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/gettextP.h Thu Aug 2 14:26:15 2001
-@@ -1,6 +1,6 @@
--/* Header describing internals of gettext library
-- Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-- Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-+/* Header describing internals of libintl library.
-+ Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.
-+ Written by Ulrich Drepper <drepper@cygnus.com>, 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
-@@ -19,8 +19,20 @@
- #ifndef _GETTEXTP_H
- #define _GETTEXTP_H
-
-+#include <stddef.h> /* Get size_t. */
-+
-+#ifdef _LIBC
-+# include "../iconv/gconv_int.h"
-+#else
-+# if HAVE_ICONV
-+# include <iconv.h>
-+# endif
-+#endif
-+
- #include "loadinfo.h"
-
-+#include "gettext.h" /* Get nls_uint32. */
-+
- /* @@ end of prolog @@ */
-
- #ifndef PARAMS
-@@ -35,6 +47,12 @@
- # define internal_function
- #endif
-
-+/* Tell the compiler when a conditional or integer expression is
-+ almost always true or almost always false. */
-+#ifndef HAVE_BUILTIN_EXPECT
-+# define __builtin_expect(expr, val) (expr)
-+#endif
-+
- #ifndef W
- # define W(flag, data) ((flag) ? SWAP (data) : (data))
- #endif
-@@ -44,8 +62,6 @@
- # include <byteswap.h>
- # define SWAP(i) bswap_32 (i)
- #else
--static nls_uint32 SWAP PARAMS ((nls_uint32 i));
--
- static inline nls_uint32
- SWAP (i)
- nls_uint32 i;
-@@ -55,6 +71,52 @@
- #endif
-
-
-+/* This is the representation of the expressions to determine the
-+ plural form. */
-+struct expression
-+{
-+ int nargs; /* Number of arguments. */
-+ enum operator
-+ {
-+ /* Without arguments: */
-+ var, /* The variable "n". */
-+ num, /* Decimal number. */
-+ /* Unary operators: */
-+ lnot, /* Logical NOT. */
-+ /* Binary operators: */
-+ mult, /* Multiplication. */
-+ divide, /* Division. */
-+ module, /* Module operation. */
-+ plus, /* Addition. */
-+ minus, /* Subtraction. */
-+ less_than, /* Comparison. */
-+ greater_than, /* Comparison. */
-+ less_or_equal, /* Comparison. */
-+ greater_or_equal, /* Comparison. */
-+ equal, /* Comparision for equality. */
-+ not_equal, /* Comparision for inequality. */
-+ land, /* Logical AND. */
-+ lor, /* Logical OR. */
-+ /* Ternary operators: */
-+ qmop /* Question mark operator. */
-+ } operation;
-+ union
-+ {
-+ unsigned long int num; /* Number value for `num'. */
-+ struct expression *args[3]; /* Up to three arguments. */
-+ } val;
-+};
-+
-+/* This is the data structure to pass information to the parser and get
-+ the result in a thread-safe way. */
-+struct parse_args
-+{
-+ const char *cp;
-+ struct expression *res;
-+};
-+
-+
-+/* The representation of an opened message catalog. */
- struct loaded_domain
- {
- const char *data;
-@@ -66,23 +128,123 @@
- struct string_desc *trans_tab;
- nls_uint32 hash_size;
- nls_uint32 *hash_tab;
-+ int codeset_cntr;
-+#ifdef _LIBC
-+ __gconv_t conv;
-+#else
-+# if HAVE_ICONV
-+ iconv_t conv;
-+# endif
-+#endif
-+ char **conv_tab;
-+
-+ struct expression *plural;
-+ unsigned long int nplurals;
- };
-
-+/* We want to allocate a string at the end of the struct. But ISO C
-+ doesn't allow zero sized arrays. */
-+#ifdef __GNUC__
-+# define ZERO 0
-+#else
-+# define ZERO 1
-+#endif
-+
-+/* A set of settings bound to a message domain. Used to store settings
-+ from bindtextdomain() and bind_textdomain_codeset(). */
- struct binding
- {
- struct binding *next;
-- char *domainname;
- char *dirname;
-+ int codeset_cntr; /* Incremented each time codeset changes. */
-+ char *codeset;
-+ char domainname[ZERO];
- };
-
-+/* A counter which is incremented each time some previous translations
-+ become invalid.
-+ This variable is part of the external ABI of the GNU libintl. */
-+extern int _nl_msg_cat_cntr;
-+
- struct loaded_l10nfile *_nl_find_domain PARAMS ((const char *__dirname,
- char *__locale,
-- const char *__domainname))
-+ const char *__domainname,
-+ struct binding *__domainbinding))
- internal_function;
--void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain))
-+void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain,
-+ struct binding *__domainbinding))
- internal_function;
- void _nl_unload_domain PARAMS ((struct loaded_domain *__domain))
- internal_function;
-+const char *_nl_init_domain_conv PARAMS ((struct loaded_l10nfile *__domain_file,
-+ struct loaded_domain *__domain,
-+ struct binding *__domainbinding))
-+ internal_function;
-+void _nl_free_domain_conv PARAMS ((struct loaded_domain *__domain))
-+ internal_function;
-+
-+char *_nl_find_msg PARAMS ((struct loaded_l10nfile *domain_file,
-+ struct binding *domainbinding,
-+ const char *msgid, size_t *lengthp))
-+ internal_function;
-+
-+#ifdef _LIBC
-+extern char *__gettext PARAMS ((const char *__msgid));
-+extern char *__dgettext PARAMS ((const char *__domainname,
-+ const char *__msgid));
-+extern char *__dcgettext PARAMS ((const char *__domainname,
-+ const char *__msgid, int __category));
-+extern char *__ngettext PARAMS ((const char *__msgid1, const char *__msgid2,
-+ unsigned long int __n));
-+extern char *__dngettext PARAMS ((const char *__domainname,
-+ const char *__msgid1, const char *__msgid2,
-+ unsigned long int n));
-+extern char *__dcngettext PARAMS ((const char *__domainname,
-+ const char *__msgid1, const char *__msgid2,
-+ unsigned long int __n, int __category));
-+extern char *__dcigettext PARAMS ((const char *__domainname,
-+ const char *__msgid1, const char *__msgid2,
-+ int __plural, unsigned long int __n,
-+ int __category));
-+extern char *__textdomain PARAMS ((const char *__domainname));
-+extern char *__bindtextdomain PARAMS ((const char *__domainname,
-+ const char *__dirname));
-+extern char *__bind_textdomain_codeset PARAMS ((const char *__domainname,
-+ const char *__codeset));
-+#else
-+extern char *gettext__ PARAMS ((const char *__msgid));
-+extern char *dgettext__ PARAMS ((const char *__domainname,
-+ const char *__msgid));
-+extern char *dcgettext__ PARAMS ((const char *__domainname,
-+ const char *__msgid, int __category));
-+extern char *ngettext__ PARAMS ((const char *__msgid1, const char *__msgid2,
-+ unsigned long int __n));
-+extern char *dngettext__ PARAMS ((const char *__domainname,
-+ const char *__msgid1, const char *__msgid2,
-+ unsigned long int __n));
-+extern char *dcngettext__ PARAMS ((const char *__domainname,
-+ const char *__msgid1, const char *__msgid2,
-+ unsigned long int __n, int __category));
-+extern char *dcigettext__ PARAMS ((const char *__domainname,
-+ const char *__msgid1, const char *__msgid2,
-+ int __plural, unsigned long int __n,
-+ int __category));
-+extern char *textdomain__ PARAMS ((const char *__domainname));
-+extern char *bindtextdomain__ PARAMS ((const char *__domainname,
-+ const char *__dirname));
-+extern char *bind_textdomain_codeset__ PARAMS ((const char *__domainname,
-+ const char *__codeset));
-+#endif
-+
-+#ifdef _LIBC
-+extern void __gettext_free_exp PARAMS ((struct expression *exp))
-+ internal_function;
-+extern int __gettextparse PARAMS ((void *arg));
-+#else
-+extern void gettext_free_exp__ PARAMS ((struct expression *exp))
-+ internal_function;
-+extern int gettextparse__ PARAMS ((void *arg));
-+#endif
-
- /* @@ begin of epilog @@ */
-
-diff -urN parted-1.4.17.orig/intl/hash-string.h parted-1.4.17/intl/hash-string.h
---- parted-1.4.17.orig/intl/hash-string.h Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/hash-string.h Thu Aug 2 14:26:15 2001
-@@ -1,5 +1,5 @@
--/* Implements a string hashing function.
-- Copyright (C) 1995, 1997 Free Software Foundation, Inc.
-+/* Description of GNU message catalog format: string hashing function.
-+ Copyright (C) 1995, 1997, 1998, 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
-@@ -11,10 +11,9 @@
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
-- You should have received a copy of the GNU Library General Public
-- License along with the GNU C Library; see the file COPYING.LIB. If not,
-- write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-- Boston, MA 02111-1307, USA. */
-+ You 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. */
-
- /* @@ end of prolog @@ */
-
-@@ -33,9 +32,9 @@
- /* Defines the so called `hashpjw' function by P.J. Weinberger
- [see Aho/Sethi/Ullman, COMPILERS: Principles, Techniques and Tools,
- 1986, 1987 Bell Telephone Laboratories, Inc.] */
--static unsigned long hash_string PARAMS ((const char *__str_param));
-+static unsigned long int hash_string PARAMS ((const char *__str_param));
-
--static inline unsigned long
-+static inline unsigned long int
- hash_string (str_param)
- const char *str_param;
- {
-@@ -47,8 +46,8 @@
- while (*str != '\0')
- {
- hval <<= 4;
-- hval += (unsigned long) *str++;
-- g = hval & ((unsigned long) 0xf << (HASHWORDBITS - 4));
-+ hval += (unsigned long int) *str++;
-+ g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4));
- if (g != 0)
- {
- hval ^= g >> (HASHWORDBITS - 8);
-diff -urN parted-1.4.17.orig/intl/intl-compat.c parted-1.4.17/intl/intl-compat.c
---- parted-1.4.17.orig/intl/intl-compat.c Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/intl-compat.c Thu Aug 2 14:26:15 2001
-@@ -1,6 +1,6 @@
- /* intl-compat.c - Stub functions to call gettext functions from GNU gettext
- Library.
-- Copyright (C) 1995 Software Foundation, Inc.
-+ Copyright (C) 1995, 2000, 2001 Software Foundation, Inc.
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
-@@ -20,24 +20,79 @@
- # include <config.h>
- #endif
-
--#include "libgettext.h"
-+#include "libgnuintl.h"
-+#include "gettextP.h"
-
- /* @@ end of prolog @@ */
-
-+/* This file redirects the gettext functions (without prefix or suffix) to
-+ those defined in the included GNU gettext library (with "__" suffix).
-+ It is compiled into libintl when the included GNU gettext library is
-+ configured --with-included-gettext.
-+
-+ This redirection works also in the case that the system C library or
-+ the system libintl library contain gettext/textdomain/... functions.
-+ If it didn't, we would need to add preprocessor level redirections to
-+ libgnuintl.h of the following form:
-+
-+# define gettext gettext__
-+# define dgettext dgettext__
-+# define dcgettext dcgettext__
-+# define ngettext ngettext__
-+# define dngettext dngettext__
-+# define dcngettext dcngettext__
-+# define textdomain textdomain__
-+# define bindtextdomain bindtextdomain__
-+# define bind_textdomain_codeset bind_textdomain_codeset__
-+
-+ How does this redirection work? There are two cases.
-+ A. When libintl.a is linked into an executable, it works because
-+ functions defined in the executable always override functions in
-+ the shared libraries.
-+ B. When libintl.so is used, it works because
-+ 1. those systems defining gettext/textdomain/... in the C library
-+ (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer) are
-+ ELF systems and define these symbols as weak, thus explicitly
-+ letting other shared libraries override it.
-+ 2. those systems defining gettext/textdomain/... in a standalone
-+ libintl.so library (namely, Solaris 2.3 and newer) have this
-+ shared library in /usr/lib, and the linker will search /usr/lib
-+ *after* the directory where the GNU gettext library is installed.
-+
-+ A third case, namely when libintl.a is linked into a shared library
-+ whose name is not libintl.so, is not supported. In this case, on
-+ Solaris, when -lintl precedes the linker option for the shared library
-+ containing GNU gettext, the system's gettext would indeed override
-+ the GNU gettext. Anyone doing this kind of stuff must be clever enough
-+ to 1. compile libintl.a with -fPIC, 2. remove -lintl from his linker
-+ command line. */
-+
-
- #undef gettext
- #undef dgettext
- #undef dcgettext
-+#undef ngettext
-+#undef dngettext
-+#undef dcngettext
- #undef textdomain
- #undef bindtextdomain
-+#undef bind_textdomain_codeset
-
-
- char *
--bindtextdomain (domainname, dirname)
-+gettext (msgid)
-+ const char *msgid;
-+{
-+ return gettext__ (msgid);
-+}
-+
-+
-+char *
-+dgettext (domainname, msgid)
- const char *domainname;
-- const char *dirname;
-+ const char *msgid;
- {
-- return bindtextdomain__ (domainname, dirname);
-+ return dgettext__ (domainname, msgid);
- }
-
-
-@@ -52,19 +107,35 @@
-
-
- char *
--dgettext (domainname, msgid)
-+ngettext (msgid1, msgid2, n)
-+ const char *msgid1;
-+ const char *msgid2;
-+ unsigned long int n;
-+{
-+ return ngettext__ (msgid1, msgid2, n);
-+}
-+
-+
-+char *
-+dngettext (domainname, msgid1, msgid2, n)
- const char *domainname;
-- const char *msgid;
-+ const char *msgid1;
-+ const char *msgid2;
-+ unsigned long int n;
- {
-- return dgettext__ (domainname, msgid);
-+ return dngettext__ (domainname, msgid1, msgid2, n);
- }
-
-
- char *
--gettext (msgid)
-- const char *msgid;
-+dcngettext (domainname, msgid1, msgid2, n, category)
-+ const char *domainname;
-+ const char *msgid1;
-+ const char *msgid2;
-+ unsigned long int n;
-+ int category;
- {
-- return gettext__ (msgid);
-+ return dcngettext__ (domainname, msgid1, msgid2, n, category);
- }
-
-
-@@ -73,4 +144,22 @@
- const char *domainname;
- {
- return textdomain__ (domainname);
-+}
-+
-+
-+char *
-+bindtextdomain (domainname, dirname)
-+ const char *domainname;
-+ const char *dirname;
-+{
-+ return bindtextdomain__ (domainname, dirname);
-+}
-+
-+
-+char *
-+bind_textdomain_codeset (domainname, codeset)
-+ const char *domainname;
-+ const char *codeset;
-+{
-+ return bind_textdomain_codeset__ (domainname, codeset);
- }
-diff -urN parted-1.4.17.orig/intl/l10nflist.c parted-1.4.17/intl/l10nflist.c
---- parted-1.4.17.orig/intl/l10nflist.c Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/l10nflist.c Thu Aug 2 14:26:15 2001
-@@ -1,5 +1,4 @@
--/* Handle list of needed message catalogs
-- Copyright (C) 1995, 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc.
- Contributed by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-
- This program is free software; you can redistribute it and/or modify
-@@ -16,22 +15,18 @@
- along with this program; if not, write to the Free Software Foundation,
- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-+/* Tell glibc's <string.h> to provide a prototype for stpcpy().
-+ This must come before <config.h> because <config.h> may include
-+ <features.h>, and once <features.h> has been included, it's too late. */
-+#ifndef _GNU_SOURCE
-+# define _GNU_SOURCE 1
-+#endif
-+
- #ifdef HAVE_CONFIG_H
- # include <config.h>
- #endif
-
--
--#if defined HAVE_STRING_H || defined _LIBC
--# ifndef _GNU_SOURCE
--# define _GNU_SOURCE 1
--# endif
--# include <string.h>
--#else
--# include <strings.h>
--# ifndef memcpy
--# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
--# endif
--#endif
-+#include <string.h>
- #if !HAVE_STRCHR && !defined _LIBC
- # ifndef strchr
- # define strchr index
-@@ -43,10 +38,7 @@
- #endif
- #include <ctype.h>
- #include <sys/types.h>
--
--#if defined STDC_HEADERS || defined _LIBC
--# include <stdlib.h>
--#endif
-+#include <stdlib.h>
-
- #include "loadinfo.h"
-
-@@ -224,7 +216,7 @@
-
- /* Construct file name. */
- memcpy (abs_filename, dirlist, dirlist_len);
-- __argz_stringify (abs_filename, dirlist_len, ':');
-+ __argz_stringify (abs_filename, dirlist_len, PATH_SEPARATOR);
- cp = abs_filename + (dirlist_len - 1);
- *cp++ = '/';
- cp = stpcpy (cp, language);
-@@ -349,10 +341,11 @@
-
- /* Normalize codeset name. There is no standard for the codeset
- names. Normalization allows the user to use any of the common
-- names. */
-+ names. The return value is dynamically allocated and has to be
-+ freed by the caller. */
- const char *
- _nl_normalize_codeset (codeset, name_len)
-- const unsigned char *codeset;
-+ const char *codeset;
- size_t name_len;
- {
- int len = 0;
-diff -urN parted-1.4.17.orig/intl/libgettext.h parted-1.4.17/intl/libgettext.h
---- parted-1.4.17.orig/intl/libgettext.h Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/libgettext.h Thu Aug 2 14:26:15 2001
-@@ -1,5 +1,5 @@
--/* Message catalogs for internationalization.
-- Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-+/* Convenience header for conditional use of GNU <libintl.h>.
-+ Copyright (C) 1995-1998, 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
-@@ -15,168 +15,34 @@
- along with this program; if not, write to the Free Software Foundation,
- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
--/* Because on some systems (e.g. Solaris) we sometimes have to include
-- the systems libintl.h as well as this file we have more complex
-- include protection above. But the systems header might perhaps also
-- define _LIBINTL_H and therefore we have to protect the definition here. */
--
--#if !defined _LIBINTL_H || !defined _LIBGETTEXT_H
--#ifndef _LIBINTL_H
--# define _LIBINTL_H 1
--#endif
--#define _LIBGETTEXT_H 1
--
--/* We define an additional symbol to signal that we use the GNU
-- implementation of gettext. */
--#define __USE_GNU_GETTEXT 1
--
--#include <sys/types.h>
--
--#if HAVE_LOCALE_H
--# include <locale.h>
--#endif
--
--
--#ifdef __cplusplus
--extern "C" {
--#endif
--
--/* @@ end of prolog @@ */
--
--#ifndef PARAMS
--# if __STDC__ || defined __cplusplus
--# define PARAMS(args) args
--# else
--# define PARAMS(args) ()
--# endif
--#endif
--
--#ifndef NULL
--# if !defined __cplusplus || defined __GNUC__
--# define NULL ((void *) 0)
--# else
--# define NULL (0)
--# endif
--#endif
--
--#if !HAVE_LC_MESSAGES
--/* This value determines the behaviour of the gettext() and dgettext()
-- function. But some system does not have this defined. Define it
-- to a default value. */
--# define LC_MESSAGES (-1)
--#endif
--
--
--/* Declarations for gettext-using-catgets interface. Derived from
-- Jim Meyering's libintl.h. */
--struct _msg_ent
--{
-- const char *_msg;
-- int _msg_number;
--};
--
--
--#if HAVE_CATGETS
--/* These two variables are defined in the automatically by po-to-tbl.sed
-- generated file `cat-id-tbl.c'. */
--extern const struct _msg_ent _msg_tbl[];
--extern int _msg_tbl_length;
--#endif
--
--
--/* For automatical extraction of messages sometimes no real
-- translation is needed. Instead the string itself is the result. */
--#define gettext_noop(Str) (Str)
--
--/* Look up MSGID in the current default message catalog for the current
-- LC_MESSAGES locale. If not found, returns MSGID itself (the default
-- text). */
--extern char *gettext PARAMS ((const char *__msgid));
--extern char *gettext__ PARAMS ((const char *__msgid));
--
--/* Look up MSGID in the DOMAINNAME message catalog for the current
-- LC_MESSAGES locale. */
--extern char *dgettext PARAMS ((const char *__domainname, const char *__msgid));
--extern char *dgettext__ PARAMS ((const char *__domainname,
-- const char *__msgid));
--
--/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
-- locale. */
--extern char *dcgettext PARAMS ((const char *__domainname, const char *__msgid,
-- int __category));
--extern char *dcgettext__ PARAMS ((const char *__domainname,
-- const char *__msgid, int __category));
--
--
--/* Set the current default message catalog to DOMAINNAME.
-- If DOMAINNAME is null, return the current default.
-- If DOMAINNAME is "", reset to the default of "messages". */
--extern char *textdomain PARAMS ((const char *__domainname));
--extern char *textdomain__ PARAMS ((const char *__domainname));
--
--/* Specify that the DOMAINNAME message catalog will be found
-- in DIRNAME rather than in the system locale data base. */
--extern char *bindtextdomain PARAMS ((const char *__domainname,
-- const char *__dirname));
--extern char *bindtextdomain__ PARAMS ((const char *__domainname,
-- const char *__dirname));
-+#ifndef _LIBGETTEXT_H
-+#define _LIBGETTEXT_H 1
-
-+/* NLS can be disabled through the configure --disable-nls option. */
- #if ENABLE_NLS
-
--/* Solaris 2.3 has the gettext function but dcgettext is missing.
-- So we omit this optimization for Solaris 2.3. BTW, Solaris 2.4
-- has dcgettext. */
--# if !HAVE_CATGETS && (!HAVE_GETTEXT || HAVE_DCGETTEXT)
--
--# define gettext(Msgid) \
-- dgettext (NULL, Msgid)
--
--# define dgettext(Domainname, Msgid) \
-- dcgettext (Domainname, Msgid, LC_MESSAGES)
--
--# if defined __GNUC__ && __GNUC__ == 2 && __GNUC_MINOR__ >= 7
--/* This global variable is defined in loadmsgcat.c. We need a sign,
-- whether a new catalog was loaded, which can be associated with all
-- translations. */
--extern int _nl_msg_cat_cntr;
--
--# define dcgettext(Domainname, Msgid, Category) \
-- (__extension__ \
-- ({ \
-- char *__result; \
-- if (__builtin_constant_p (Msgid)) \
-- { \
-- static char *__translation__; \
-- static int __catalog_counter__; \
-- if (! __translation__ || __catalog_counter__ != _nl_msg_cat_cntr) \
-- { \
-- __translation__ = \
-- dcgettext__ (Domainname, Msgid, Category); \
-- __catalog_counter__ = _nl_msg_cat_cntr; \
-- } \
-- __result = __translation__; \
-- } \
-- else \
-- __result = dcgettext__ (Domainname, Msgid, Category); \
-- __result; \
-- }))
--# endif
--# endif
-+/* Get declarations of GNU message catalog functions. */
-+# include <libintl.h>
-
- #else
-
- # define gettext(Msgid) (Msgid)
- # define dgettext(Domainname, Msgid) (Msgid)
- # define dcgettext(Domainname, Msgid, Category) (Msgid)
--# define textdomain(Domainname) ((char *) Domainname)
--# define bindtextdomain(Domainname, Dirname) ((char *) Dirname)
-+# define ngettext(Msgid1, Msgid2, N) \
-+ ((N) == 1 ? (char *) (Msgid1) : (char *) (Msgid2))
-+# define dngettext(Domainname, Msgid1, Msgid2, N) \
-+ ((N) == 1 ? (char *) (Msgid1) : (char *) (Msgid2))
-+# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \
-+ ((N) == 1 ? (char *) (Msgid1) : (char *) (Msgid2))
-+# define textdomain(Domainname) ((char *) (Domainname))
-+# define bindtextdomain(Domainname, Dirname) ((char *) (Dirname))
-+# define bind_textdomain_codeset(Domainname, Codeset) ((char *) (Codeset))
-
- #endif
-
--/* @@ begin of epilog @@ */
--
--#ifdef __cplusplus
--}
--#endif
-+/* For automatical extraction of messages sometimes no real
-+ translation is needed. Instead the string itself is the result. */
-+#define gettext_noop(Str) (Str)
-
--#endif
-+#endif /* _LIBGETTEXT_H */
-diff -urN parted-1.4.17.orig/intl/libgnuintl.h parted-1.4.17/intl/libgnuintl.h
---- parted-1.4.17.orig/intl/libgnuintl.h Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/intl/libgnuintl.h Thu Aug 2 14:26:15 2001
-@@ -0,0 +1,127 @@
-+/* Message catalogs for internationalization.
-+ Copyright (C) 1995-1997, 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, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ GNU General Public License for more details.
-+
-+ You 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. */
-+
-+#ifndef _LIBINTL_H
-+#define _LIBINTL_H 1
-+
-+#include <locale.h>
-+
-+/* The LC_MESSAGES locale category is the category used by the functions
-+ gettext() and dgettext(). It is specified in POSIX, but not in ANSI C.
-+ On systems that don't define it, use an arbitrary value instead.
-+ On Solaris, <locale.h> defines __LOCALE_H then includes <libintl.h> (i.e.
-+ this file!) and then only defines LC_MESSAGES. To avoid a redefinition
-+ warning, don't define LC_MESSAGES in this case. */
-+#if !defined LC_MESSAGES && !defined __LOCALE_H
-+# define LC_MESSAGES 1729
-+#endif
-+
-+/* We define an additional symbol to signal that we use the GNU
-+ implementation of gettext. */
-+#define __USE_GNU_GETTEXT 1
-+
-+/* Resolve a platform specific conflict on DJGPP. GNU gettext takes
-+ precedence over _conio_gettext. */
-+#ifdef __DJGPP__
-+# undef gettext
-+# define gettext gettext
-+#endif
-+
-+#ifndef PARAMS
-+# if __STDC__ || defined __cplusplus
-+# define PARAMS(args) args
-+# else
-+# define PARAMS(args) ()
-+# endif
-+#endif
-+
-+#ifdef __cplusplus
-+extern "C" {
-+#endif
-+
-+/* Look up MSGID in the current default message catalog for the current
-+ LC_MESSAGES locale. If not found, returns MSGID itself (the default
-+ text). */
-+extern char *gettext PARAMS ((const char *__msgid));
-+
-+/* Look up MSGID in the DOMAINNAME message catalog for the current
-+ LC_MESSAGES locale. */
-+extern char *dgettext PARAMS ((const char *__domainname, const char *__msgid));
-+
-+/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY
-+ locale. */
-+extern char *dcgettext PARAMS ((const char *__domainname, const char *__msgid,
-+ int __category));
-+
-+
-+/* Similar to `gettext' but select the plural form corresponding to the
-+ number N. */
-+extern char *ngettext PARAMS ((const char *__msgid1, const char *__msgid2,
-+ unsigned long int __n));
-+
-+/* Similar to `dgettext' but select the plural form corresponding to the
-+ number N. */
-+extern char *dngettext PARAMS ((const char *__domainname, const char *__msgid1,
-+ const char *__msgid2, unsigned long int __n));
-+
-+/* Similar to `dcgettext' but select the plural form corresponding to the
-+ number N. */
-+extern char *dcngettext PARAMS ((const char *__domainname, const char *__msgid1,
-+ const char *__msgid2, unsigned long int __n,
-+ int __category));
-+
-+
-+/* Set the current default message catalog to DOMAINNAME.
-+ If DOMAINNAME is null, return the current default.
-+ If DOMAINNAME is "", reset to the default of "messages". */
-+extern char *textdomain PARAMS ((const char *__domainname));
-+
-+/* Specify that the DOMAINNAME message catalog will be found
-+ in DIRNAME rather than in the system locale data base. */
-+extern char *bindtextdomain PARAMS ((const char *__domainname,
-+ const char *__dirname));
-+
-+/* Specify the character encoding in which the messages from the
-+ DOMAINNAME message catalog will be returned. */
-+extern char *bind_textdomain_codeset PARAMS ((const char *__domainname,
-+ const char *__codeset));
-+
-+
-+/* Optimized version of the functions above. */
-+#if defined __OPTIMIZED
-+/* These are macros, but could also be inline functions. */
-+
-+# define gettext(msgid) \
-+ dgettext (NULL, msgid)
-+
-+# define dgettext(domainname, msgid) \
-+ dcgettext (domainname, msgid, LC_MESSAGES)
-+
-+# define ngettext(msgid1, msgid2, n) \
-+ dngettext (NULL, msgid1, msgid2, n)
-+
-+# define dngettext(domainname, msgid1, msgid2, n) \
-+ dcngettext (domainname, msgid1, msgid2, n, LC_MESSAGES)
-+
-+#endif /* Optimizing. */
-+
-+
-+#ifdef __cplusplus
-+}
-+#endif
-+
-+#endif /* libintl.h */
-diff -urN parted-1.4.17.orig/intl/linux-msg.sed parted-1.4.17/intl/linux-msg.sed
---- parted-1.4.17.orig/intl/linux-msg.sed Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/linux-msg.sed Wed Dec 31 19:00:00 1969
-@@ -1,100 +0,0 @@
--# po2msg.sed - Convert Uniforum style .po file to Linux style .msg file
--# Copyright (C) 1995 Free Software Foundation, Inc.
--# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
--#
--#
--# The first directive in the .msg should be the definition of the
--# message set number. We use always set number 1.
--#
--1 {
-- i\
--$set 1 # Automatically created by po2msg.sed
-- h
-- s/.*/0/
-- x
--}
--#
--# Mitch's old catalog format does not allow comments.
--#
--# We copy the original message as a comment into the .msg file.
--#
--/^msgid/ {
-- s/msgid[ ]*"//
--#
--# This does not work now with the new format.
--# /"$/! {
--# s/\\$//
--# s/$/ ... (more lines following)"/
--# }
-- x
--# The following nice solution is by
--# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
-- td
--# Increment a decimal number in pattern space.
--# First hide trailing `9' digits.
-- :d
-- s/9\(_*\)$/_\1/
-- td
--# Assure at least one digit is available.
-- s/^\(_*\)$/0\1/
--# Increment the last digit.
-- s/8\(_*\)$/9\1/
-- s/7\(_*\)$/8\1/
-- s/6\(_*\)$/7\1/
-- s/5\(_*\)$/6\1/
-- s/4\(_*\)$/5\1/
-- s/3\(_*\)$/4\1/
-- s/2\(_*\)$/3\1/
-- s/1\(_*\)$/2\1/
-- s/0\(_*\)$/1\1/
--# Convert the hidden `9' digits to `0's.
-- s/_/0/g
-- x
-- G
-- s/\(.*\)"\n\([0-9]*\)/$ #\2 Original Message:(\1)/p
--}
--#
--# The .msg file contains, other then the .po file, only the translations
--# but each given a unique ID. Starting from 1 and incrementing by 1 for
--# each message we assign them to the messages.
--# It is important that the .po file used to generate the cat-id-tbl.c file
--# (with po-to-tbl) is the same as the one used here. (At least the order
--# of declarations must not be changed.)
--#
--/^msgstr/ {
-- s/msgstr[ ]*"\(.*\)"/# \1/
--# Clear substitution flag.
-- tb
--# Append the next line.
-- :b
-- N
--# Look whether second part is continuation line.
-- s/\(.*\n\)"\(.*\)"/\1\2/
--# Yes, then branch.
-- ta
-- P
-- D
--# Note that D includes a jump to the start!!
--# We found a continuation line. But before printing insert '\'.
-- :a
-- s/\(.*\)\(\n.*\)/\1\\\2/
-- P
--# We cannot use D here.
-- s/.*\n\(.*\)/\1/
-- tb
--}
--d
-diff -urN parted-1.4.17.orig/intl/loadinfo.h parted-1.4.17/intl/loadinfo.h
---- parted-1.4.17.orig/intl/loadinfo.h Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/loadinfo.h Thu Aug 2 14:26:15 2001
-@@ -1,4 +1,4 @@
--/* Copyright (C) 1996, 1997 Free Software Foundation, Inc.
-+/* Copyright (C) 1996-1999, 2000, 2001 Free Software Foundation, Inc.
- This file is part of the GNU C Library.
- Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996.
-
-@@ -16,6 +16,9 @@
- along with this program; if not, write to the Free Software Foundation,
- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-+#ifndef _LOADINFO_H
-+#define _LOADINFO_H 1
-+
- #ifndef PARAMS
- # if __STDC__
- # define PARAMS(args) args
-@@ -24,6 +27,25 @@
- # endif
- #endif
-
-+#ifndef internal_function
-+# define internal_function
-+#endif
-+
-+/* Tell the compiler when a conditional or integer expression is
-+ almost always true or almost always false. */
-+#ifndef HAVE_BUILTIN_EXPECT
-+# define __builtin_expect(expr, val) (expr)
-+#endif
-+
-+/* Separator in PATH like lists of pathnames. */
-+#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__
-+ /* Win32, OS/2, DOS */
-+# define PATH_SEPARATOR ';'
-+#else
-+ /* Unix */
-+# define PATH_SEPARATOR ':'
-+#endif
-+
- /* Encoding of locale name parts. */
- #define CEN_REVISION 1
- #define CEN_SPONSOR 2
-@@ -50,7 +72,11 @@
- };
-
-
--extern const char *_nl_normalize_codeset PARAMS ((const unsigned char *codeset,
-+/* Normalize codeset name. There is no standard for the codeset
-+ names. Normalization allows the user to use any of the common
-+ names. The return value is dynamically allocated and has to be
-+ freed by the caller. */
-+extern const char *_nl_normalize_codeset PARAMS ((const char *codeset,
- size_t name_len));
-
- extern struct loaded_l10nfile *
-@@ -66,6 +92,8 @@
-
- extern const char *_nl_expand_alias PARAMS ((const char *name));
-
-+/* normalized_codeset is dynamically allocated and has to be freed by
-+ the caller. */
- extern int _nl_explode_name PARAMS ((char *name, const char **language,
- const char **modifier,
- const char **territory,
-@@ -74,3 +102,7 @@
- const char **special,
- const char **sponsor,
- const char **revision));
-+
-+extern char *_nl_find_language PARAMS ((const char *name));
-+
-+#endif /* loadinfo.h */
-diff -urN parted-1.4.17.orig/intl/loadmsgcat.c parted-1.4.17/intl/loadmsgcat.c
---- parted-1.4.17.orig/intl/loadmsgcat.c Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/loadmsgcat.c Thu Aug 2 14:26:15 2001
-@@ -1,5 +1,5 @@
- /* Load needed message catalogs.
-- Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-+ Copyright (C) 1995-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
-@@ -15,29 +15,68 @@
- along with this program; if not, write to the Free Software Foundation,
- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-+/* Tell glibc's <string.h> to provide a prototype for mempcpy().
-+ This must come before <config.h> because <config.h> may include
-+ <features.h>, and once <features.h> has been included, it's too late. */
-+#ifndef _GNU_SOURCE
-+# define _GNU_SOURCE 1
-+#endif
-+
- #ifdef HAVE_CONFIG_H
- # include <config.h>
- #endif
-
-+#include <ctype.h>
-+#include <errno.h>
- #include <fcntl.h>
- #include <sys/types.h>
- #include <sys/stat.h>
-
--#if defined STDC_HEADERS || defined _LIBC
--# include <stdlib.h>
-+#ifdef __GNUC__
-+# define alloca __builtin_alloca
-+# define HAVE_ALLOCA 1
-+#else
-+# if defined HAVE_ALLOCA_H || defined _LIBC
-+# include <alloca.h>
-+# else
-+# ifdef _AIX
-+ #pragma alloca
-+# else
-+# ifndef alloca
-+char *alloca ();
-+# endif
-+# endif
-+# endif
- #endif
-
-+#include <stdlib.h>
-+#include <string.h>
-+
- #if defined HAVE_UNISTD_H || defined _LIBC
- # include <unistd.h>
- #endif
-
--#if (defined HAVE_MMAP && defined HAVE_MUNMAP) || defined _LIBC
-+#ifdef _LIBC
-+# include <langinfo.h>
-+# include <locale.h>
-+#endif
-+
-+#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
-+ || (defined _LIBC && defined _POSIX_MAPPED_FILES)
- # include <sys/mman.h>
-+# undef HAVE_MMAP
-+# define HAVE_MMAP 1
-+#else
-+# undef HAVE_MMAP
- #endif
-
- #include "gettext.h"
- #include "gettextP.h"
-
-+#ifdef _LIBC
-+# include "../locale/localeinfo.h"
-+#endif
-+
- /* @@ end of prolog @@ */
-
- #ifdef _LIBC
-@@ -51,32 +90,275 @@
- # define munmap __munmap
- #endif
-
-+/* Names for the libintl functions are a problem. They must not clash
-+ with existing names and they should follow ANSI C. But this source
-+ code is also used in GNU C Library where the names have a __
-+ prefix. So we have to make a difference here. */
-+#ifdef _LIBC
-+# define PLURAL_PARSE __gettextparse
-+#else
-+# define PLURAL_PARSE gettextparse__
-+#endif
-+
-+/* For those losing systems which don't have `alloca' we have to add
-+ some additional code emulating it. */
-+#ifdef HAVE_ALLOCA
-+# define freea(p) /* nothing */
-+#else
-+# define alloca(n) malloc (n)
-+# define freea(p) free (p)
-+#endif
-+
-+/* For systems that distinguish between text and binary I/O.
-+ O_BINARY is usually declared in <fcntl.h>. */
-+#if !defined O_BINARY && defined _O_BINARY
-+ /* For MSC-compatible compilers. */
-+# define O_BINARY _O_BINARY
-+# define O_TEXT _O_TEXT
-+#endif
-+#ifdef __BEOS__
-+ /* BeOS 5 has O_BINARY and O_TEXT, but they have no effect. */
-+# undef O_BINARY
-+# undef O_TEXT
-+#endif
-+/* On reasonable systems, binary I/O is the default. */
-+#ifndef O_BINARY
-+# define O_BINARY 0
-+#endif
-+
- /* We need a sign, whether a new catalog was loaded, which can be associated
- with all translations. This is important if the translations are
- cached by one of GCC's features. */
--int _nl_msg_cat_cntr = 0;
-+int _nl_msg_cat_cntr;
-+
-+#if (defined __GNUC__ && !defined __APPLE_CC__) \
-+ || (defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L)
-+
-+/* These structs are the constant expression for the germanic plural
-+ form determination. It represents the expression "n != 1". */
-+static const struct expression plvar =
-+{
-+ .nargs = 0,
-+ .operation = var,
-+};
-+static const struct expression plone =
-+{
-+ .nargs = 0,
-+ .operation = num,
-+ .val =
-+ {
-+ .num = 1
-+ }
-+};
-+static struct expression germanic_plural =
-+{
-+ .nargs = 2,
-+ .operation = not_equal,
-+ .val =
-+ {
-+ .args =
-+ {
-+ [0] = (struct expression *) &plvar,
-+ [1] = (struct expression *) &plone
-+ }
-+ }
-+};
-+
-+# define INIT_GERMANIC_PLURAL()
-+
-+#else
-+
-+/* For compilers without support for ISO C 99 struct/union initializers:
-+ Initialization at run-time. */
-+
-+static struct expression plvar;
-+static struct expression plone;
-+static struct expression germanic_plural;
-+
-+static void
-+init_germanic_plural ()
-+{
-+ if (plone.val.num == 0)
-+ {
-+ plvar.nargs = 0;
-+ plvar.operation = var;
-+
-+ plone.nargs = 0;
-+ plone.operation = num;
-+ plone.val.num = 1;
-+
-+ germanic_plural.nargs = 2;
-+ germanic_plural.operation = not_equal;
-+ germanic_plural.val.args[0] = &plvar;
-+ germanic_plural.val.args[1] = &plone;
-+ }
-+}
-
-+# define INIT_GERMANIC_PLURAL() init_germanic_plural ()
-+
-+#endif
-+
-+
-+/* Initialize the codeset dependent parts of an opened message catalog.
-+ Return the header entry. */
-+const char *
-+internal_function
-+_nl_init_domain_conv (domain_file, domain, domainbinding)
-+ struct loaded_l10nfile *domain_file;
-+ struct loaded_domain *domain;
-+ struct binding *domainbinding;
-+{
-+ /* Find out about the character set the file is encoded with.
-+ This can be found (in textual form) in the entry "". If this
-+ entry does not exist or if this does not contain the `charset='
-+ information, we will assume the charset matches the one the
-+ current locale and we don't have to perform any conversion. */
-+ char *nullentry;
-+ size_t nullentrylen;
-+
-+ /* Preinitialize fields, to avoid recursion during _nl_find_msg. */
-+ domain->codeset_cntr =
-+ (domainbinding != NULL ? domainbinding->codeset_cntr : 0);
-+#ifdef _LIBC
-+ domain->conv = (__gconv_t) -1;
-+#else
-+# if HAVE_ICONV
-+ domain->conv = (iconv_t) -1;
-+# endif
-+#endif
-+ domain->conv_tab = NULL;
-+
-+ /* Get the header entry. */
-+ nullentry = _nl_find_msg (domain_file, domainbinding, "", &nullentrylen);
-+
-+ if (nullentry != NULL)
-+ {
-+#if defined _LIBC || HAVE_ICONV
-+ const char *charsetstr;
-+
-+ charsetstr = strstr (nullentry, "charset=");
-+ if (charsetstr != NULL)
-+ {
-+ size_t len;
-+ char *charset;
-+ const char *outcharset;
-+
-+ charsetstr += strlen ("charset=");
-+ len = strcspn (charsetstr, " \t\n");
-+
-+ charset = (char *) alloca (len + 1);
-+# if defined _LIBC || HAVE_MEMPCPY
-+ *((char *) mempcpy (charset, charsetstr, len)) = '\0';
-+# else
-+ memcpy (charset, charsetstr, len);
-+ charset[len] = '\0';
-+# endif
-+
-+ /* The output charset should normally be determined by the
-+ locale. But sometimes the locale is not used or not correctly
-+ set up, so we provide a possibility for the user to override
-+ this. Moreover, the value specified through
-+ bind_textdomain_codeset overrides both. */
-+ if (domainbinding != NULL && domainbinding->codeset != NULL)
-+ outcharset = domainbinding->codeset;
-+ else
-+ {
-+ outcharset = getenv ("OUTPUT_CHARSET");
-+ if (outcharset == NULL || outcharset[0] == '\0')
-+ {
-+# ifdef _LIBC
-+ outcharset = (*_nl_current[LC_CTYPE])->values[_NL_ITEM_INDEX (CODESET)].string;
-+# else
-+# if HAVE_ICONV
-+ extern const char *locale_charset (void);
-+ outcharset = locale_charset ();
-+# endif
-+# endif
-+ }
-+ }
-+
-+# ifdef _LIBC
-+ /* We always want to use transliteration. */
-+ outcharset = norm_add_slashes (outcharset, "TRANSLIT");
-+ charset = norm_add_slashes (charset, NULL);
-+ if (__gconv_open (outcharset, charset, &domain->conv,
-+ GCONV_AVOID_NOCONV)
-+ != __GCONV_OK)
-+ domain->conv = (__gconv_t) -1;
-+# else
-+# if HAVE_ICONV
-+ /* When using GNU libiconv, we want to use transliteration. */
-+# if _LIBICONV_VERSION >= 0x0105
-+ len = strlen (outcharset);
-+ {
-+ char *tmp = (char *) alloca (len + 10 + 1);
-+ memcpy (tmp, outcharset, len);
-+ memcpy (tmp + len, "//TRANSLIT", 10 + 1);
-+ outcharset = tmp;
-+ }
-+# endif
-+ domain->conv = iconv_open (outcharset, charset);
-+# if _LIBICONV_VERSION >= 0x0105
-+ freea (outcharset);
-+# endif
-+# endif
-+# endif
-+
-+ freea (charset);
-+ }
-+#endif /* _LIBC || HAVE_ICONV */
-+ }
-+
-+ return nullentry;
-+}
-+
-+/* Frees the codeset dependent parts of an opened message catalog. */
-+void
-+internal_function
-+_nl_free_domain_conv (domain)
-+ struct loaded_domain *domain;
-+{
-+ if (domain->conv_tab != NULL && domain->conv_tab != (char **) -1)
-+ free (domain->conv_tab);
-+
-+#ifdef _LIBC
-+ if (domain->conv != (__gconv_t) -1)
-+ __gconv_close (domain->conv);
-+#else
-+# if HAVE_ICONV
-+ if (domain->conv != (iconv_t) -1)
-+ iconv_close (domain->conv);
-+# endif
-+#endif
-+}
-
- /* Load the message catalogs specified by FILENAME. If it is no valid
- message catalog do nothing. */
- void
- internal_function
--_nl_load_domain (domain_file)
-+_nl_load_domain (domain_file, domainbinding)
- struct loaded_l10nfile *domain_file;
-+ struct binding *domainbinding;
- {
- int fd;
- size_t size;
-+#ifdef _LIBC
-+ struct stat64 st;
-+#else
- struct stat st;
-+#endif
- struct mo_file_header *data = (struct mo_file_header *) -1;
--#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
-- || defined _LIBC
- int use_mmap = 0;
--#endif
- struct loaded_domain *domain;
-+ const char *nullentry;
-
- domain_file->decided = 1;
- domain_file->data = NULL;
-
-+ /* Note that it would be useless to store domainbinding in domain_file
-+ because domainbinding might be == NULL now but != NULL later (after
-+ a call to bind_textdomain_codeset). */
-+
- /* If the record does not represent a valid locale the FILENAME
- might be NULL. This can happen when according to the given
- specification the locale file name is different for XPG and CEN
-@@ -85,28 +367,32 @@
- return;
-
- /* Try to open the addressed file. */
-- fd = open (domain_file->filename, O_RDONLY);
-+ fd = open (domain_file->filename, O_RDONLY | O_BINARY);
- if (fd == -1)
- return;
-
- /* We must know about the size of the file. */
-- if (fstat (fd, &st) != 0
-- || (size = (size_t) st.st_size) != st.st_size
-- || size < sizeof (struct mo_file_header))
-+ if (
-+#ifdef _LIBC
-+ __builtin_expect (fstat64 (fd, &st) != 0, 0)
-+#else
-+ __builtin_expect (fstat (fd, &st) != 0, 0)
-+#endif
-+ || __builtin_expect ((size = (size_t) st.st_size) != st.st_size, 0)
-+ || __builtin_expect (size < sizeof (struct mo_file_header), 0))
- {
- /* Something went wrong. */
- close (fd);
- return;
- }
-
--#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
-- || defined _LIBC
-+#ifdef HAVE_MMAP
- /* Now we are ready to load the file. If mmap() is available we try
- this first. If not available or it failed we try to load it. */
- data = (struct mo_file_header *) mmap (NULL, size, PROT_READ,
- MAP_PRIVATE, fd, 0);
-
-- if (data != (struct mo_file_header *) -1)
-+ if (__builtin_expect (data != (struct mo_file_header *) -1, 1))
- {
- /* mmap() call was successful. */
- close (fd);
-@@ -130,12 +416,15 @@
- do
- {
- long int nb = (long int) read (fd, read_ptr, to_read);
-- if (nb == -1)
-+ if (nb <= 0)
- {
-+#ifdef EINTR
-+ if (nb == -1 && errno == EINTR)
-+ continue;
-+#endif
- close (fd);
- return;
- }
--
- read_ptr += nb;
- to_read -= nb;
- }
-@@ -146,11 +435,11 @@
-
- /* Using the magic number we can test whether it really is a message
- catalog file. */
-- if (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED)
-+ if (__builtin_expect (data->magic != _MAGIC && data->magic != _MAGIC_SWAPPED,
-+ 0))
- {
- /* The magic number is wrong: not a message catalog file. */
--#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
-- || defined _LIBC
-+#ifdef HAVE_MMAP
- if (use_mmap)
- munmap ((caddr_t) data, size);
- else
-@@ -159,17 +448,13 @@
- return;
- }
-
-- domain_file->data
-- = (struct loaded_domain *) malloc (sizeof (struct loaded_domain));
-- if (domain_file->data == NULL)
-+ domain = (struct loaded_domain *) malloc (sizeof (struct loaded_domain));
-+ if (domain == NULL)
- return;
-+ domain_file->data = domain;
-
-- domain = (struct loaded_domain *) domain_file->data;
- domain->data = (char *) data;
--#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
-- || defined _LIBC
- domain->use_mmap = use_mmap;
--#endif
- domain->mmap_size = size;
- domain->must_swap = data->magic != _MAGIC;
-
-@@ -187,9 +472,8 @@
- ((char *) data + W (domain->must_swap, data->hash_tab_offset));
- break;
- default:
-- /* This is an illegal revision. */
--#if (defined HAVE_MMAP && defined HAVE_MUNMAP && !defined DISALLOW_MMAP) \
-- || defined _LIBC
-+ /* This is an invalid revision. */
-+#ifdef HAVE_MMAP
- if (use_mmap)
- munmap ((caddr_t) data, size);
- else
-@@ -200,9 +484,62 @@
- return;
- }
-
-- /* Show that one domain is changed. This might make some cached
-- translations invalid. */
-- ++_nl_msg_cat_cntr;
-+ /* Now initialize the character set converter from the character set
-+ the file is encoded with (found in the header entry) to the domain's
-+ specified character set or the locale's character set. */
-+ nullentry = _nl_init_domain_conv (domain_file, domain, domainbinding);
-+
-+ /* Also look for a plural specification. */
-+ if (nullentry != NULL)
-+ {
-+ const char *plural;
-+ const char *nplurals;
-+
-+ plural = strstr (nullentry, "plural=");
-+ nplurals = strstr (nullentry, "nplurals=");
-+ if (plural == NULL || nplurals == NULL)
-+ goto no_plural;
-+ else
-+ {
-+ /* First get the number. */
-+ char *endp;
-+ unsigned long int n;
-+ struct parse_args args;
-+
-+ nplurals += 9;
-+ while (*nplurals != '\0' && isspace (*nplurals))
-+ ++nplurals;
-+#if defined HAVE_STRTOUL || defined _LIBC
-+ n = strtoul (nplurals, &endp, 10);
-+#else
-+ for (endp = nplurals, n = 0; *endp >= '0' && *endp <= '9'; endp++)
-+ n = n * 10 + (*endp - '0');
-+#endif
-+ domain->nplurals = n;
-+ if (nplurals == endp)
-+ goto no_plural;
-+
-+ /* Due to the restrictions bison imposes onto the interface of the
-+ scanner function we have to put the input string and the result
-+ passed up from the parser into the same structure which address
-+ is passed down to the parser. */
-+ plural += 7;
-+ args.cp = plural;
-+ if (PLURAL_PARSE (&args) != 0)
-+ goto no_plural;
-+ domain->plural = args.res;
-+ }
-+ }
-+ else
-+ {
-+ /* By default we are using the Germanic form: singular form only
-+ for `one', the plural form otherwise. Yes, this is also what
-+ English is using since English is a Germanic language. */
-+ no_plural:
-+ INIT_GERMANIC_PLURAL ();
-+ domain->plural = &germanic_plural;
-+ domain->nplurals = 2;
-+ }
- }
-
-
-@@ -212,9 +549,16 @@
- _nl_unload_domain (domain)
- struct loaded_domain *domain;
- {
-+ if (domain->plural != &germanic_plural)
-+ __gettext_free_exp (domain->plural);
-+
-+ _nl_free_domain_conv (domain);
-+
-+# ifdef _POSIX_MAPPED_FILES
- if (domain->use_mmap)
- munmap ((caddr_t) domain->data, domain->mmap_size);
- else
-+# endif /* _POSIX_MAPPED_FILES */
- free ((void *) domain->data);
-
- free (domain);
-diff -urN parted-1.4.17.orig/intl/localcharset.c parted-1.4.17/intl/localcharset.c
---- parted-1.4.17.orig/intl/localcharset.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/intl/localcharset.c Thu Aug 2 14:26:15 2001
-@@ -0,0 +1,271 @@
-+/* Determine a canonical name for the current locale's character encoding.
-+
-+ Copyright (C) 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 Library 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
-+ Library General Public License for more details.
-+
-+ You should have received a copy of the GNU Library 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. */
-+
-+/* Written by Bruno Haible <haible@clisp.cons.org>. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#if HAVE_STDDEF_H
-+# include <stddef.h>
-+#endif
-+
-+#include <stdio.h>
-+#if HAVE_STRING_H
-+# include <string.h>
-+#else
-+# include <strings.h>
-+#endif
-+#if HAVE_STDLIB_H
-+# include <stdlib.h>
-+#endif
-+
-+#if defined _WIN32 || defined __WIN32__
-+# undef WIN32 /* avoid warning on mingw32 */
-+# define WIN32
-+#endif
-+
-+#ifndef WIN32
-+# if HAVE_LANGINFO_CODESET
-+# include <langinfo.h>
-+# else
-+# if HAVE_SETLOCALE
-+# include <locale.h>
-+# endif
-+# endif
-+#else /* WIN32 */
-+# define WIN32_LEAN_AND_MEAN
-+# include <windows.h>
-+#endif
-+
-+#ifndef DIRECTORY_SEPARATOR
-+# define DIRECTORY_SEPARATOR '/'
-+#endif
-+
-+#ifndef ISSLASH
-+# define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR)
-+#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 ()
-+{
-+ const char *cp;
-+
-+ cp = charset_aliases;
-+ if (cp == NULL)
-+ {
-+#ifndef WIN32
-+ FILE *fp;
-+ const char *dir = LIBDIR;
-+ const char *base = "charset.alias";
-+ char *file_name;
-+
-+ /* 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. */
-+ int c;
-+ char buf1[50+1];
-+ char buf2[50+1];
-+ char *res_ptr = NULL;
-+ size_t res_size = 0;
-+ size_t l1, l2;
-+
-+ for (;;)
-+ {
-+ 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);
-+ if (res_size == 0)
-+ {
-+ res_size = l1 + 1 + l2 + 1;
-+ res_ptr = malloc (res_size + 1);
-+ }
-+ else
-+ {
-+ res_size += l1 + 1 + l2 + 1;
-+ res_ptr = realloc (res_ptr, res_size + 1);
-+ }
-+ if (res_ptr == NULL)
-+ {
-+ /* Out of memory. */
-+ res_size = 0;
-+ 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 /* WIN32 */
-+
-+ /* 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";
-+#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 ()
-+{
-+ const char *codeset;
-+ const char *aliases;
-+
-+#ifndef WIN32
-+
-+# if HAVE_LANGINFO_CODESET
-+
-+ /* Most systems support nl_langinfo (CODESET) nowadays. */
-+ codeset = nl_langinfo (CODESET);
-+
-+# 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 HAVE_SETLOCALE && 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
-+
-+#else /* WIN32 */
-+
-+ static char buf[2 + 10 + 1];
-+
-+ /* Win32 has a function returning the locale's codepage as a number. */
-+ sprintf (buf, "CP%u", GetACP ());
-+ 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;
-+ }
-+
-+ return codeset;
-+}
-diff -urN parted-1.4.17.orig/intl/locale.alias parted-1.4.17/intl/locale.alias
---- parted-1.4.17.orig/intl/locale.alias Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/intl/locale.alias Thu Aug 2 14:26:15 2001
-@@ -0,0 +1,77 @@
-+# Locale name alias data base.
-+# Copyright (C) 1996,1997,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, or (at your option)
-+# any later version.
-+#
-+# This program is distributed in the hope that it will be useful,
-+# but WITHOUT ANY WARRANTY; without even the implied warranty of
-+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+# GNU General Public License for more details.
-+#
-+# You 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.
-+
-+# The format of this file is the same as for the corresponding file of
-+# the X Window System, which normally can be found in
-+# /usr/lib/X11/locale/locale.alias
-+# A single line contains two fields: an alias and a substitution value.
-+# All entries are case independent.
-+
-+# Note: This file is far from being complete. If you have a value for
-+# your own site which you think might be useful for others too, share
-+# it with the rest of us. Send it using the `glibcbug' script to
-+# bugs@gnu.org.
-+
-+# Packages using this file:
-+
-+bokmal no_NO.ISO-8859-1
-+bokmål no_NO.ISO-8859-1
-+catalan ca_ES.ISO-8859-1
-+croatian hr_HR.ISO-8859-2
-+czech cs_CZ.ISO-8859-2
-+danish da_DK.ISO-8859-1
-+dansk da_DK.ISO-8859-1
-+deutsch de_DE.ISO-8859-1
-+dutch nl_NL.ISO-8859-1
-+eesti et_EE.ISO-8859-1
-+estonian et_EE.ISO-8859-1
-+finnish fi_FI.ISO-8859-1
-+français fr_FR.ISO-8859-1
-+french fr_FR.ISO-8859-1
-+galego gl_ES.ISO-8859-1
-+galician gl_ES.ISO-8859-1
-+german de_DE.ISO-8859-1
-+greek el_GR.ISO-8859-7
-+hebrew iw_IL.ISO-8859-8
-+hrvatski hr_HR.ISO-8859-2
-+hungarian hu_HU.ISO-8859-2
-+icelandic is_IS.ISO-8859-1
-+italian it_IT.ISO-8859-1
-+japanese ja_JP.eucJP
-+japanese.euc ja_JP.eucJP
-+ja_JP ja_JP.eucJP
-+ja_JP.ujis ja_JP.eucJP
-+japanese.sjis ja_JP.SJIS
-+korean ko_KR.eucKR
-+korean.euc ko_KR.eucKR
-+ko_KR ko_KR.eucKR
-+lithuanian lt_LT.ISO-8859-13
-+nb_NO no_NO.ISO-8859-1
-+nb_NO.ISO-8859-1 no_NO.ISO-8859-1
-+norwegian no_NO.ISO-8859-1
-+nynorsk nn_NO.ISO-8859-1
-+polish pl_PL.ISO-8859-2
-+portuguese pt_PT.ISO-8859-1
-+romanian ro_RO.ISO-8859-2
-+russian ru_RU.ISO-8859-5
-+slovak sk_SK.ISO-8859-2
-+slovene sl_SI.ISO-8859-2
-+slovenian sl_SI.ISO-8859-2
-+spanish es_ES.ISO-8859-1
-+swedish sv_SE.ISO-8859-1
-+thai th_TH.TIS-620
-+turkish tr_TR.ISO-8859-9
-diff -urN parted-1.4.17.orig/intl/localealias.c parted-1.4.17/intl/localealias.c
---- parted-1.4.17.orig/intl/localealias.c Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/localealias.c Thu Aug 2 14:26:15 2001
-@@ -1,6 +1,5 @@
- /* Handle aliases for locale names.
-- Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-- Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-+ Copyright (C) 1995-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
-@@ -16,6 +15,13 @@
- along with this program; if not, write to the Free Software Foundation,
- Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */
-
-+/* Tell glibc's <string.h> to provide a prototype for mempcpy().
-+ This must come before <config.h> because <config.h> may include
-+ <features.h>, and once <features.h> has been included, it's too late. */
-+#ifndef _GNU_SOURCE
-+# define _GNU_SOURCE 1
-+#endif
-+
- #ifdef HAVE_CONFIG_H
- # include <config.h>
- #endif
-@@ -41,35 +47,15 @@
- # endif
- #endif
-
--#if defined STDC_HEADERS || defined _LIBC
--# include <stdlib.h>
--#else
--char *getenv ();
--# ifdef HAVE_MALLOC_H
--# include <malloc.h>
--# else
--void free ();
--# endif
--#endif
-+#include <stdlib.h>
-
--#if defined HAVE_STRING_H || defined _LIBC
--# ifndef _GNU_SOURCE
--# define _GNU_SOURCE 1
--# endif
--# include <string.h>
--#else
--# include <strings.h>
--# ifndef memcpy
--# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
--# endif
--#endif
-+#include <string.h>
- #if !HAVE_STRCHR && !defined _LIBC
- # ifndef strchr
- # define strchr index
- # endif
- #endif
-
--#include "gettext.h"
- #include "gettextP.h"
-
- /* @@ end of prolog @@ */
-@@ -80,7 +66,9 @@
- file and the name space must not be polluted. */
- # define strcasecmp __strcasecmp
-
--# define mempcpy __mempcpy
-+# ifndef mempcpy
-+# define mempcpy __mempcpy
-+# endif
- # define HAVE_MEMPCPY 1
-
- /* We need locking here since we can be called from different places. */
-@@ -89,41 +77,27 @@
- __libc_lock_define_initialized (static, lock);
- #endif
-
-+#ifndef internal_function
-+# define internal_function
-+#endif
-
--/* For those loosing systems which don't have `alloca' we have to add
-+/* For those losing systems which don't have `alloca' we have to add
- some additional code emulating it. */
- #ifdef HAVE_ALLOCA
--/* Nothing has to be done. */
--# define ADD_BLOCK(list, address) /* nothing */
--# define FREE_BLOCKS(list) /* nothing */
-+# define freea(p) /* nothing */
- #else
--struct block_list
--{
-- void *address;
-- struct block_list *next;
--};
--# define ADD_BLOCK(list, addr) \
-- do { \
-- struct block_list *newp = (struct block_list *) malloc (sizeof (*newp)); \
-- /* If we cannot get a free block we cannot add the new element to \
-- the list. */ \
-- if (newp != NULL) { \
-- newp->address = (addr); \
-- newp->next = (list); \
-- (list) = newp; \
-- } \
-- } while (0)
--# define FREE_BLOCKS(list) \
-- do { \
-- while (list != NULL) { \
-- struct block_list *old = list; \
-- list = list->next; \
-- free (old); \
-- } \
-- } while (0)
--# undef alloca
--# define alloca(size) (malloc (size))
--#endif /* have alloca */
-+# define alloca(n) malloc (n)
-+# define freea(p) free (p)
-+#endif
-+
-+#if defined _LIBC_REENTRANT || defined HAVE_FGETS_UNLOCKED
-+# undef fgets
-+# define fgets(buf, len, s) fgets_unlocked (buf, len, s)
-+#endif
-+#if defined _LIBC_REENTRANT || defined HAVE_FEOF_UNLOCKED
-+# undef feof
-+# define feof(s) feof_unlocked (s)
-+#endif
-
-
- struct alias_map
-@@ -133,18 +107,18 @@
- };
-
-
--static char *string_space = NULL;
--static size_t string_space_act = 0;
--static size_t string_space_max = 0;
-+static char *string_space;
-+static size_t string_space_act;
-+static size_t string_space_max;
- static struct alias_map *map;
--static size_t nmap = 0;
--static size_t maxmap = 0;
-+static size_t nmap;
-+static size_t maxmap;
-
-
- /* Prototypes for local functions. */
- static size_t read_alias_file PARAMS ((const char *fname, int fname_len))
- internal_function;
--static void extend_alias_table PARAMS ((void));
-+static int extend_alias_table PARAMS ((void));
- static int alias_compare PARAMS ((const struct alias_map *map1,
- const struct alias_map *map2));
-
-@@ -190,11 +164,12 @@
- {
- const char *start;
-
-- while (locale_alias_path[0] == ':')
-+ while (locale_alias_path[0] == PATH_SEPARATOR)
- ++locale_alias_path;
- start = locale_alias_path;
-
-- while (locale_alias_path[0] != '\0' && locale_alias_path[0] != ':')
-+ while (locale_alias_path[0] != '\0'
-+ && locale_alias_path[0] != PATH_SEPARATOR)
- ++locale_alias_path;
-
- if (start < locale_alias_path)
-@@ -217,16 +192,12 @@
- const char *fname;
- int fname_len;
- {
--#ifndef HAVE_ALLOCA
-- struct block_list *block_list = NULL;
--#endif
- FILE *fp;
- char *full_fname;
- size_t added;
- static const char aliasfile[] = "/locale.alias";
-
- full_fname = (char *) alloca (fname_len + sizeof aliasfile);
-- ADD_BLOCK (block_list, full_fname);
- #ifdef HAVE_MEMPCPY
- mempcpy (mempcpy (full_fname, fname, fname_len),
- aliasfile, sizeof aliasfile);
-@@ -236,11 +207,9 @@
- #endif
-
- fp = fopen (full_fname, "r");
-+ freea (full_fname);
- if (fp == NULL)
-- {
-- FREE_BLOCKS (block_list);
-- return 0;
-- }
-+ return 0;
-
- added = 0;
- while (!feof (fp))
-@@ -250,10 +219,10 @@
- b) these fields must be usable as file names and so must not
- be that long
- */
-- unsigned char buf[BUFSIZ];
-- unsigned char *alias;
-- unsigned char *value;
-- unsigned char *cp;
-+ char buf[BUFSIZ];
-+ char *alias;
-+ char *value;
-+ char *cp;
-
- if (fgets (buf, sizeof buf, fp) == NULL)
- /* EOF reached. */
-@@ -312,7 +281,8 @@
- *cp++ = '\0';
-
- if (nmap >= maxmap)
-- extend_alias_table ();
-+ if (__builtin_expect (extend_alias_table (), 0))
-+ return added;
-
- alias_len = strlen (alias) + 1;
- value_len = strlen (value) + 1;
-@@ -325,10 +295,19 @@
- ? alias_len + value_len : 1024));
- char *new_pool = (char *) realloc (string_space, new_size);
- if (new_pool == NULL)
-+ return added;
-+
-+ if (__builtin_expect (string_space != new_pool, 0))
- {
-- FREE_BLOCKS (block_list);
-- return added;
-+ size_t i;
-+
-+ for (i = 0; i < nmap; i++)
-+ {
-+ map[i].alias += new_pool - string_space;
-+ map[i].value += new_pool - string_space;
-+ }
- }
-+
- string_space = new_pool;
- string_space_max = new_size;
- }
-@@ -355,12 +334,11 @@
- qsort (map, nmap, sizeof (struct alias_map),
- (int (*) PARAMS ((const void *, const void *))) alias_compare);
-
-- FREE_BLOCKS (block_list);
- return added;
- }
-
-
--static void
-+static int
- extend_alias_table ()
- {
- size_t new_size;
-@@ -371,10 +349,11 @@
- * sizeof (struct alias_map)));
- if (new_map == NULL)
- /* Simply don't extend: we don't have any more core. */
-- return;
-+ return -1;
-
- map = new_map;
- maxmap = new_size;
-+ return 0;
- }
-
-
-diff -urN parted-1.4.17.orig/intl/ngettext.c parted-1.4.17/intl/ngettext.c
---- parted-1.4.17.orig/intl/ngettext.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/intl/ngettext.c Thu Aug 2 14:26:15 2001
-@@ -0,0 +1,67 @@
-+/* Implementation of ngettext(3) function.
-+ Copyright (C) 1995, 1997, 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, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ GNU General Public License for more details.
-+
-+ You 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. */
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#ifdef _LIBC
-+# define __need_NULL
-+# include <stddef.h>
-+#else
-+# include <stdlib.h> /* Just for NULL. */
-+#endif
-+
-+#include "gettextP.h"
-+#ifdef _LIBC
-+# include <libintl.h>
-+#else
-+# include "libgnuintl.h"
-+#endif
-+
-+#include <locale.h>
-+
-+/* @@ end of prolog @@ */
-+
-+/* Names for the libintl functions are a problem. They must not clash
-+ with existing names and they should follow ANSI C. But this source
-+ code is also used in GNU C Library where the names have a __
-+ prefix. So we have to make a difference here. */
-+#ifdef _LIBC
-+# define NGETTEXT __ngettext
-+# define DCNGETTEXT __dcngettext
-+#else
-+# define NGETTEXT ngettext__
-+# define DCNGETTEXT dcngettext__
-+#endif
-+
-+/* Look up MSGID in the current default message catalog for the current
-+ LC_MESSAGES locale. If not found, returns MSGID itself (the default
-+ text). */
-+char *
-+NGETTEXT (msgid1, msgid2, n)
-+ const char *msgid1;
-+ const char *msgid2;
-+ unsigned long int n;
-+{
-+ return DCNGETTEXT (NULL, msgid1, msgid2, n, LC_MESSAGES);
-+}
-+
-+#ifdef _LIBC
-+/* Alias for function name in GNU C Library. */
-+weak_alias (__ngettext, ngettext);
-+#endif
-diff -urN parted-1.4.17.orig/intl/plural.c parted-1.4.17/intl/plural.c
---- parted-1.4.17.orig/intl/plural.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/intl/plural.c Thu Aug 2 14:26:17 2001
-@@ -0,0 +1,1325 @@
-+
-+/* A Bison parser, made from plural.y
-+ by GNU Bison version 1.28 */
-+
-+#define YYBISON 1 /* Identify Bison output. */
-+
-+#define yyparse __gettextparse
-+#define yylex __gettextlex
-+#define yyerror __gettexterror
-+#define yylval __gettextlval
-+#define yychar __gettextchar
-+#define yydebug __gettextdebug
-+#define yynerrs __gettextnerrs
-+#define EQUOP2 257
-+#define CMPOP2 258
-+#define ADDOP2 259
-+#define MULOP2 260
-+#define NUMBER 261
-+
-+#line 1 "plural.y"
-+
-+/* Expression parsing for plural form selection.
-+ Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Written by Ulrich Drepper <drepper@cygnus.com>, 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, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ GNU General Public License for more details.
-+
-+ You 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. */
-+
-+/* The bison generated parser uses alloca. AIX 3 forces us to put this
-+ declaration at the beginning of the file. The declaration in bison's
-+ skeleton file comes too late. This must come before <config.h>
-+ because <config.h> may include arbitrary system headers. */
-+#if defined _AIX && !defined __GNUC__
-+ #pragma alloca
-+#endif
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <stdlib.h>
-+#include "gettextP.h"
-+
-+/* Names for the libintl functions are a problem. They must not clash
-+ with existing names and they should follow ANSI C. But this source
-+ code is also used in GNU C Library where the names have a __
-+ prefix. So we have to make a difference here. */
-+#ifdef _LIBC
-+# define FREE_EXPRESSION __gettext_free_exp
-+#else
-+# define FREE_EXPRESSION gettext_free_exp__
-+# define __gettextparse gettextparse__
-+#endif
-+
-+#define YYLEX_PARAM &((struct parse_args *) arg)->cp
-+#define YYPARSE_PARAM arg
-+
-+#line 52 "plural.y"
-+typedef union {
-+ unsigned long int num;
-+ enum operator op;
-+ struct expression *exp;
-+} YYSTYPE;
-+#line 58 "plural.y"
-+
-+/* Prototypes for local functions. */
-+static struct expression *new_exp PARAMS ((int nargs, enum operator op,
-+ struct expression * const *args));
-+static inline struct expression *new_exp_0 PARAMS ((enum operator op));
-+static inline struct expression *new_exp_1 PARAMS ((enum operator op,
-+ struct expression *right));
-+static struct expression *new_exp_2 PARAMS ((enum operator op,
-+ struct expression *left,
-+ struct expression *right));
-+static inline struct expression *new_exp_3 PARAMS ((enum operator op,
-+ struct expression *bexp,
-+ struct expression *tbranch,
-+ struct expression *fbranch));
-+static int yylex PARAMS ((YYSTYPE *lval, const char **pexp));
-+static void yyerror PARAMS ((const char *str));
-+
-+/* Allocation of expressions. */
-+
-+static struct expression *
-+new_exp (nargs, op, args)
-+ int nargs;
-+ enum operator op;
-+ struct expression * const *args;
-+{
-+ int i;
-+ struct expression *newp;
-+
-+ /* If any of the argument could not be malloc'ed, just return NULL. */
-+ for (i = nargs - 1; i >= 0; i--)
-+ if (args[i] == NULL)
-+ goto fail;
-+
-+ /* Allocate a new expression. */
-+ newp = (struct expression *) malloc (sizeof (*newp));
-+ if (newp != NULL)
-+ {
-+ newp->nargs = nargs;
-+ newp->operation = op;
-+ for (i = nargs - 1; i >= 0; i--)
-+ newp->val.args[i] = args[i];
-+ return newp;
-+ }
-+
-+ fail:
-+ for (i = nargs - 1; i >= 0; i--)
-+ FREE_EXPRESSION (args[i]);
-+
-+ return NULL;
-+}
-+
-+static inline struct expression *
-+new_exp_0 (op)
-+ enum operator op;
-+{
-+ return new_exp (0, op, NULL);
-+}
-+
-+static inline struct expression *
-+new_exp_1 (op, right)
-+ enum operator op;
-+ struct expression *right;
-+{
-+ struct expression *args[1];
-+
-+ args[0] = right;
-+ return new_exp (1, op, args);
-+}
-+
-+static struct expression *
-+new_exp_2 (op, left, right)
-+ enum operator op;
-+ struct expression *left;
-+ struct expression *right;
-+{
-+ struct expression *args[2];
-+
-+ args[0] = left;
-+ args[1] = right;
-+ return new_exp (2, op, args);
-+}
-+
-+static inline struct expression *
-+new_exp_3 (op, bexp, tbranch, fbranch)
-+ enum operator op;
-+ struct expression *bexp;
-+ struct expression *tbranch;
-+ struct expression *fbranch;
-+{
-+ struct expression *args[3];
-+
-+ args[0] = bexp;
-+ args[1] = tbranch;
-+ args[2] = fbranch;
-+ return new_exp (3, op, args);
-+}
-+
-+#include <stdio.h>
-+
-+#ifndef __cplusplus
-+#ifndef __STDC__
-+#define const
-+#endif
-+#endif
-+
-+
-+
-+#define YYFINAL 27
-+#define YYFLAG -32768
-+#define YYNTBASE 16
-+
-+#define YYTRANSLATE(x) ((unsigned)(x) <= 261 ? yytranslate[x] : 18)
-+
-+static const char yytranslate[] = { 0,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 10, 2, 2, 2, 2, 5, 2, 14,
-+ 15, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 12, 2, 2,
-+ 2, 2, 3, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 13,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 4, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
-+ 2, 2, 2, 2, 2, 1, 6, 7, 8, 9,
-+ 11
-+};
-+
-+#if YYDEBUG != 0
-+static const short yyprhs[] = { 0,
-+ 0, 2, 8, 12, 16, 20, 24, 28, 32, 35,
-+ 37, 39
-+};
-+
-+static const short yyrhs[] = { 17,
-+ 0, 17, 3, 17, 12, 17, 0, 17, 4, 17,
-+ 0, 17, 5, 17, 0, 17, 6, 17, 0, 17,
-+ 7, 17, 0, 17, 8, 17, 0, 17, 9, 17,
-+ 0, 10, 17, 0, 13, 0, 11, 0, 14, 17,
-+ 15, 0
-+};
-+
-+#endif
-+
-+#if YYDEBUG != 0
-+static const short yyrline[] = { 0,
-+ 177, 185, 189, 193, 197, 201, 205, 209, 213, 217,
-+ 221, 226
-+};
-+#endif
-+
-+
-+#if YYDEBUG != 0 || defined (YYERROR_VERBOSE)
-+
-+static const char * const yytname[] = { "$","error","$undefined.","'?'","'|'",
-+"'&'","EQUOP2","CMPOP2","ADDOP2","MULOP2","'!'","NUMBER","':'","'n'","'('","')'",
-+"start","exp", NULL
-+};
-+#endif
-+
-+static const short yyr1[] = { 0,
-+ 16, 17, 17, 17, 17, 17, 17, 17, 17, 17,
-+ 17, 17
-+};
-+
-+static const short yyr2[] = { 0,
-+ 1, 5, 3, 3, 3, 3, 3, 3, 2, 1,
-+ 1, 3
-+};
-+
-+static const short yydefact[] = { 0,
-+ 0, 11, 10, 0, 1, 9, 0, 0, 0, 0,
-+ 0, 0, 0, 0, 12, 0, 3, 4, 5, 6,
-+ 7, 8, 0, 2, 0, 0, 0
-+};
-+
-+static const short yydefgoto[] = { 25,
-+ 5
-+};
-+
-+static const short yypact[] = { -9,
-+ -9,-32768,-32768, -9, 34,-32768, 11, -9, -9, -9,
-+ -9, -9, -9, -9,-32768, 24, 39, 43, 16, 26,
-+ -3,-32768, -9, 34, 21, 53,-32768
-+};
-+
-+static const short yypgoto[] = {-32768,
-+ -1
-+};
-+
-+
-+#define YYLAST 53
-+
-+
-+static const short yytable[] = { 6,
-+ 1, 2, 7, 3, 4, 14, 16, 17, 18, 19,
-+ 20, 21, 22, 8, 9, 10, 11, 12, 13, 14,
-+ 26, 24, 12, 13, 14, 15, 8, 9, 10, 11,
-+ 12, 13, 14, 13, 14, 23, 8, 9, 10, 11,
-+ 12, 13, 14, 10, 11, 12, 13, 14, 11, 12,
-+ 13, 14, 27
-+};
-+
-+static const short yycheck[] = { 1,
-+ 10, 11, 4, 13, 14, 9, 8, 9, 10, 11,
-+ 12, 13, 14, 3, 4, 5, 6, 7, 8, 9,
-+ 0, 23, 7, 8, 9, 15, 3, 4, 5, 6,
-+ 7, 8, 9, 8, 9, 12, 3, 4, 5, 6,
-+ 7, 8, 9, 5, 6, 7, 8, 9, 6, 7,
-+ 8, 9, 0
-+};
-+#define YYPURE 1
-+
-+/* -*-C-*- Note some compilers choke on comments on `#line' lines. */
-+#line 3 "/home/haible/gnu/arch/linuxlibc6/share/bison.simple"
-+/* This file comes from bison-1.28. */
-+
-+/* Skeleton output parser for bison,
-+ Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc.
-+
-+ This program is free software; you can 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., 59 Temple Place - Suite 330,
-+ Boston, MA 02111-1307, USA. */
-+
-+/* As a special exception, when this file is copied by Bison into a
-+ Bison output file, you may use that output file without restriction.
-+ This special exception was added by the Free Software Foundation
-+ in version 1.24 of Bison. */
-+
-+/* This is the parser code that is written into each bison parser
-+ when the %semantic_parser declaration is not specified in the grammar.
-+ It was written by Richard Stallman by simplifying the hairy parser
-+ used when %semantic_parser is specified. */
-+
-+#ifndef YYSTACK_USE_ALLOCA
-+#ifdef alloca
-+#define YYSTACK_USE_ALLOCA
-+#else /* alloca not defined */
-+#ifdef __GNUC__
-+#define YYSTACK_USE_ALLOCA
-+#define alloca __builtin_alloca
-+#else /* not GNU C. */
-+#if (!defined (__STDC__) && defined (sparc)) || defined (__sparc__) || defined (__sparc) || defined (__sgi) || (defined (__sun) && defined (__i386))
-+#define YYSTACK_USE_ALLOCA
-+#include <alloca.h>
-+#else /* not sparc */
-+/* We think this test detects Watcom and Microsoft C. */
-+/* This used to test MSDOS, but that is a bad idea
-+ since that symbol is in the user namespace. */
-+#if (defined (_MSDOS) || defined (_MSDOS_)) && !defined (__TURBOC__)
-+#if 0 /* No need for malloc.h, which pollutes the namespace;
-+ instead, just don't use alloca. */
-+#include <malloc.h>
-+#endif
-+#else /* not MSDOS, or __TURBOC__ */
-+#if defined(_AIX)
-+/* I don't know what this was needed for, but it pollutes the namespace.
-+ So I turned it off. rms, 2 May 1997. */
-+/* #include <malloc.h> */
-+ #pragma alloca
-+#define YYSTACK_USE_ALLOCA
-+#else /* not MSDOS, or __TURBOC__, or _AIX */
-+#if 0
-+#ifdef __hpux /* haible@ilog.fr says this works for HPUX 9.05 and up,
-+ and on HPUX 10. Eventually we can turn this on. */
-+#define YYSTACK_USE_ALLOCA
-+#define alloca __builtin_alloca
-+#endif /* __hpux */
-+#endif
-+#endif /* not _AIX */
-+#endif /* not MSDOS, or __TURBOC__ */
-+#endif /* not sparc */
-+#endif /* not GNU C */
-+#endif /* alloca not defined */
-+#endif /* YYSTACK_USE_ALLOCA not defined */
-+
-+#ifdef YYSTACK_USE_ALLOCA
-+#define YYSTACK_ALLOC alloca
-+#else
-+#define YYSTACK_ALLOC malloc
-+#endif
-+
-+/* Note: there must be only one dollar sign in this file.
-+ It is replaced by the list of actions, each action
-+ as one case of the switch. */
-+
-+#define yyerrok (yyerrstatus = 0)
-+#define yyclearin (yychar = YYEMPTY)
-+#define YYEMPTY -2
-+#define YYEOF 0
-+#define YYACCEPT goto yyacceptlab
-+#define YYABORT goto yyabortlab
-+#define YYERROR goto yyerrlab1
-+/* Like YYERROR except do call yyerror.
-+ This remains here temporarily to ease the
-+ transition to the new meaning of YYERROR, for GCC.
-+ Once GCC version 2 has supplanted version 1, this can go. */
-+#define YYFAIL goto yyerrlab
-+#define YYRECOVERING() (!!yyerrstatus)
-+#define YYBACKUP(token, value) \
-+do \
-+ if (yychar == YYEMPTY && yylen == 1) \
-+ { yychar = (token), yylval = (value); \
-+ yychar1 = YYTRANSLATE (yychar); \
-+ YYPOPSTACK; \
-+ goto yybackup; \
-+ } \
-+ else \
-+ { yyerror ("syntax error: cannot back up"); YYERROR; } \
-+while (0)
-+
-+#define YYTERROR 1
-+#define YYERRCODE 256
-+
-+#ifndef YYPURE
-+#define YYLEX yylex()
-+#endif
-+
-+#ifdef YYPURE
-+#ifdef YYLSP_NEEDED
-+#ifdef YYLEX_PARAM
-+#define YYLEX yylex(&yylval, &yylloc, YYLEX_PARAM)
-+#else
-+#define YYLEX yylex(&yylval, &yylloc)
-+#endif
-+#else /* not YYLSP_NEEDED */
-+#ifdef YYLEX_PARAM
-+#define YYLEX yylex(&yylval, YYLEX_PARAM)
-+#else
-+#define YYLEX yylex(&yylval)
-+#endif
-+#endif /* not YYLSP_NEEDED */
-+#endif
-+
-+/* If nonreentrant, generate the variables here */
-+
-+#ifndef YYPURE
-+
-+int yychar; /* the lookahead symbol */
-+YYSTYPE yylval; /* the semantic value of the */
-+ /* lookahead symbol */
-+
-+#ifdef YYLSP_NEEDED
-+YYLTYPE yylloc; /* location data for the lookahead */
-+ /* symbol */
-+#endif
-+
-+int yynerrs; /* number of parse errors so far */
-+#endif /* not YYPURE */
-+
-+#if YYDEBUG != 0
-+int yydebug; /* nonzero means print parse trace */
-+/* Since this is uninitialized, it does not stop multiple parsers
-+ from coexisting. */
-+#endif
-+
-+/* YYINITDEPTH indicates the initial size of the parser's stacks */
-+
-+#ifndef YYINITDEPTH
-+#define YYINITDEPTH 200
-+#endif
-+
-+/* YYMAXDEPTH is the maximum size the stacks can grow to
-+ (effective only if the built-in stack extension method is used). */
-+
-+#if YYMAXDEPTH == 0
-+#undef YYMAXDEPTH
-+#endif
-+
-+#ifndef YYMAXDEPTH
-+#define YYMAXDEPTH 10000
-+#endif
-+
-+/* Define __yy_memcpy. Note that the size argument
-+ should be passed with type unsigned int, because that is what the non-GCC
-+ definitions require. With GCC, __builtin_memcpy takes an arg
-+ of type size_t, but it can handle unsigned int. */
-+
-+#if __GNUC__ > 1 /* GNU C and GNU C++ define this. */
-+#define __yy_memcpy(TO,FROM,COUNT) __builtin_memcpy(TO,FROM,COUNT)
-+#else /* not GNU C or C++ */
-+#ifndef __cplusplus
-+
-+/* This is the most reliable way to avoid incompatibilities
-+ in available built-in functions on various systems. */
-+static void
-+__yy_memcpy (to, from, count)
-+ char *to;
-+ char *from;
-+ unsigned int count;
-+{
-+ register char *f = from;
-+ register char *t = to;
-+ register int i = count;
-+
-+ while (i-- > 0)
-+ *t++ = *f++;
-+}
-+
-+#else /* __cplusplus */
-+
-+/* This is the most reliable way to avoid incompatibilities
-+ in available built-in functions on various systems. */
-+static void
-+__yy_memcpy (char *to, char *from, unsigned int count)
-+{
-+ register char *t = to;
-+ register char *f = from;
-+ register int i = count;
-+
-+ while (i-- > 0)
-+ *t++ = *f++;
-+}
-+
-+#endif
-+#endif
-+
-+#line 217 "/home/haible/gnu/arch/linuxlibc6/share/bison.simple"
-+
-+/* The user can define YYPARSE_PARAM as the name of an argument to be passed
-+ into yyparse. The argument should have type void *.
-+ It should actually point to an object.
-+ Grammar actions can access the variable by casting it
-+ to the proper pointer type. */
-+
-+#ifdef YYPARSE_PARAM
-+#ifdef __cplusplus
-+#define YYPARSE_PARAM_ARG void *YYPARSE_PARAM
-+#define YYPARSE_PARAM_DECL
-+#else /* not __cplusplus */
-+#define YYPARSE_PARAM_ARG YYPARSE_PARAM
-+#define YYPARSE_PARAM_DECL void *YYPARSE_PARAM;
-+#endif /* not __cplusplus */
-+#else /* not YYPARSE_PARAM */
-+#define YYPARSE_PARAM_ARG
-+#define YYPARSE_PARAM_DECL
-+#endif /* not YYPARSE_PARAM */
-+
-+/* Prevent warning if -Wstrict-prototypes. */
-+#ifdef __GNUC__
-+#ifdef YYPARSE_PARAM
-+int yyparse (void *);
-+#else
-+int yyparse (void);
-+#endif
-+#endif
-+
-+int
-+yyparse(YYPARSE_PARAM_ARG)
-+ YYPARSE_PARAM_DECL
-+{
-+ register int yystate;
-+ register int yyn;
-+ register short *yyssp;
-+ register YYSTYPE *yyvsp;
-+ int yyerrstatus; /* number of tokens to shift before error messages enabled */
-+ int yychar1 = 0; /* lookahead token as an internal (translated) token number */
-+
-+ short yyssa[YYINITDEPTH]; /* the state stack */
-+ YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */
-+
-+ short *yyss = yyssa; /* refer to the stacks thru separate pointers */
-+ YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */
-+
-+#ifdef YYLSP_NEEDED
-+ YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */
-+ YYLTYPE *yyls = yylsa;
-+ YYLTYPE *yylsp;
-+
-+#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--)
-+#else
-+#define YYPOPSTACK (yyvsp--, yyssp--)
-+#endif
-+
-+ int yystacksize = YYINITDEPTH;
-+ int yyfree_stacks = 0;
-+
-+#ifdef YYPURE
-+ int yychar;
-+ YYSTYPE yylval;
-+ int yynerrs;
-+#ifdef YYLSP_NEEDED
-+ YYLTYPE yylloc;
-+#endif
-+#endif
-+
-+ YYSTYPE yyval; /* the variable used to return */
-+ /* semantic values from the action */
-+ /* routines */
-+
-+ int yylen;
-+
-+#if YYDEBUG != 0
-+ if (yydebug)
-+ fprintf(stderr, "Starting parse\n");
-+#endif
-+
-+ yystate = 0;
-+ yyerrstatus = 0;
-+ yynerrs = 0;
-+ yychar = YYEMPTY; /* Cause a token to be read. */
-+
-+ /* Initialize stack pointers.
-+ Waste one element of value and location stack
-+ so that they stay on the same level as the state stack.
-+ The wasted elements are never initialized. */
-+
-+ yyssp = yyss - 1;
-+ yyvsp = yyvs;
-+#ifdef YYLSP_NEEDED
-+ yylsp = yyls;
-+#endif
-+
-+/* Push a new state, which is found in yystate . */
-+/* In all cases, when you get here, the value and location stacks
-+ have just been pushed. so pushing a state here evens the stacks. */
-+yynewstate:
-+
-+ *++yyssp = yystate;
-+
-+ if (yyssp >= yyss + yystacksize - 1)
-+ {
-+ /* Give user a chance to reallocate the stack */
-+ /* Use copies of these so that the &'s don't force the real ones into memory. */
-+ YYSTYPE *yyvs1 = yyvs;
-+ short *yyss1 = yyss;
-+#ifdef YYLSP_NEEDED
-+ YYLTYPE *yyls1 = yyls;
-+#endif
-+
-+ /* Get the current used size of the three stacks, in elements. */
-+ int size = yyssp - yyss + 1;
-+
-+#ifdef yyoverflow
-+ /* Each stack pointer address is followed by the size of
-+ the data in use in that stack, in bytes. */
-+#ifdef YYLSP_NEEDED
-+ /* This used to be a conditional around just the two extra args,
-+ but that might be undefined if yyoverflow is a macro. */
-+ yyoverflow("parser stack overflow",
-+ &yyss1, size * sizeof (*yyssp),
-+ &yyvs1, size * sizeof (*yyvsp),
-+ &yyls1, size * sizeof (*yylsp),
-+ &yystacksize);
-+#else
-+ yyoverflow("parser stack overflow",
-+ &yyss1, size * sizeof (*yyssp),
-+ &yyvs1, size * sizeof (*yyvsp),
-+ &yystacksize);
-+#endif
-+
-+ yyss = yyss1; yyvs = yyvs1;
-+#ifdef YYLSP_NEEDED
-+ yyls = yyls1;
-+#endif
-+#else /* no yyoverflow */
-+ /* Extend the stack our own way. */
-+ if (yystacksize >= YYMAXDEPTH)
-+ {
-+ yyerror("parser stack overflow");
-+ if (yyfree_stacks)
-+ {
-+ free (yyss);
-+ free (yyvs);
-+#ifdef YYLSP_NEEDED
-+ free (yyls);
-+#endif
-+ }
-+ return 2;
-+ }
-+ yystacksize *= 2;
-+ if (yystacksize > YYMAXDEPTH)
-+ yystacksize = YYMAXDEPTH;
-+#ifndef YYSTACK_USE_ALLOCA
-+ yyfree_stacks = 1;
-+#endif
-+ yyss = (short *) YYSTACK_ALLOC (yystacksize * sizeof (*yyssp));
-+ __yy_memcpy ((char *)yyss, (char *)yyss1,
-+ size * (unsigned int) sizeof (*yyssp));
-+ yyvs = (YYSTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yyvsp));
-+ __yy_memcpy ((char *)yyvs, (char *)yyvs1,
-+ size * (unsigned int) sizeof (*yyvsp));
-+#ifdef YYLSP_NEEDED
-+ yyls = (YYLTYPE *) YYSTACK_ALLOC (yystacksize * sizeof (*yylsp));
-+ __yy_memcpy ((char *)yyls, (char *)yyls1,
-+ size * (unsigned int) sizeof (*yylsp));
-+#endif
-+#endif /* no yyoverflow */
-+
-+ yyssp = yyss + size - 1;
-+ yyvsp = yyvs + size - 1;
-+#ifdef YYLSP_NEEDED
-+ yylsp = yyls + size - 1;
-+#endif
-+
-+#if YYDEBUG != 0
-+ if (yydebug)
-+ fprintf(stderr, "Stack size increased to %d\n", yystacksize);
-+#endif
-+
-+ if (yyssp >= yyss + yystacksize - 1)
-+ YYABORT;
-+ }
-+
-+#if YYDEBUG != 0
-+ if (yydebug)
-+ fprintf(stderr, "Entering state %d\n", yystate);
-+#endif
-+
-+ goto yybackup;
-+ yybackup:
-+
-+/* Do appropriate processing given the current state. */
-+/* Read a lookahead token if we need one and don't already have one. */
-+/* yyresume: */
-+
-+ /* First try to decide what to do without reference to lookahead token. */
-+
-+ yyn = yypact[yystate];
-+ if (yyn == YYFLAG)
-+ goto yydefault;
-+
-+ /* Not known => get a lookahead token if don't already have one. */
-+
-+ /* yychar is either YYEMPTY or YYEOF
-+ or a valid token in external form. */
-+
-+ if (yychar == YYEMPTY)
-+ {
-+#if YYDEBUG != 0
-+ if (yydebug)
-+ fprintf(stderr, "Reading a token: ");
-+#endif
-+ yychar = YYLEX;
-+ }
-+
-+ /* Convert token to internal form (in yychar1) for indexing tables with */
-+
-+ if (yychar <= 0) /* This means end of input. */
-+ {
-+ yychar1 = 0;
-+ yychar = YYEOF; /* Don't call YYLEX any more */
-+
-+#if YYDEBUG != 0
-+ if (yydebug)
-+ fprintf(stderr, "Now at end of input.\n");
-+#endif
-+ }
-+ else
-+ {
-+ yychar1 = YYTRANSLATE(yychar);
-+
-+#if YYDEBUG != 0
-+ if (yydebug)
-+ {
-+ fprintf (stderr, "Next token is %d (%s", yychar, yytname[yychar1]);
-+ /* Give the individual parser a way to print the precise meaning
-+ of a token, for further debugging info. */
-+#ifdef YYPRINT
-+ YYPRINT (stderr, yychar, yylval);
-+#endif
-+ fprintf (stderr, ")\n");
-+ }
-+#endif
-+ }
-+
-+ yyn += yychar1;
-+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != yychar1)
-+ goto yydefault;
-+
-+ yyn = yytable[yyn];
-+
-+ /* yyn is what to do for this token type in this state.
-+ Negative => reduce, -yyn is rule number.
-+ Positive => shift, yyn is new state.
-+ New state is final state => don't bother to shift,
-+ just return success.
-+ 0, or most negative number => error. */
-+
-+ if (yyn < 0)
-+ {
-+ if (yyn == YYFLAG)
-+ goto yyerrlab;
-+ yyn = -yyn;
-+ goto yyreduce;
-+ }
-+ else if (yyn == 0)
-+ goto yyerrlab;
-+
-+ if (yyn == YYFINAL)
-+ YYACCEPT;
-+
-+ /* Shift the lookahead token. */
-+
-+#if YYDEBUG != 0
-+ if (yydebug)
-+ fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]);
-+#endif
-+
-+ /* Discard the token being shifted unless it is eof. */
-+ if (yychar != YYEOF)
-+ yychar = YYEMPTY;
-+
-+ *++yyvsp = yylval;
-+#ifdef YYLSP_NEEDED
-+ *++yylsp = yylloc;
-+#endif
-+
-+ /* count tokens shifted since error; after three, turn off error status. */
-+ if (yyerrstatus) yyerrstatus--;
-+
-+ yystate = yyn;
-+ goto yynewstate;
-+
-+/* Do the default action for the current state. */
-+yydefault:
-+
-+ yyn = yydefact[yystate];
-+ if (yyn == 0)
-+ goto yyerrlab;
-+
-+/* Do a reduction. yyn is the number of a rule to reduce with. */
-+yyreduce:
-+ yylen = yyr2[yyn];
-+ if (yylen > 0)
-+ yyval = yyvsp[1-yylen]; /* implement default value of the action */
-+
-+#if YYDEBUG != 0
-+ if (yydebug)
-+ {
-+ int i;
-+
-+ fprintf (stderr, "Reducing via rule %d (line %d), ",
-+ yyn, yyrline[yyn]);
-+
-+ /* Print the symbols being reduced, and their result. */
-+ for (i = yyprhs[yyn]; yyrhs[i] > 0; i++)
-+ fprintf (stderr, "%s ", yytname[yyrhs[i]]);
-+ fprintf (stderr, " -> %s\n", yytname[yyr1[yyn]]);
-+ }
-+#endif
-+
-+
-+ switch (yyn) {
-+
-+case 1:
-+#line 178 "plural.y"
-+{
-+ if (yyvsp[0].exp == NULL)
-+ YYABORT;
-+ ((struct parse_args *) arg)->res = yyvsp[0].exp;
-+ ;
-+ break;}
-+case 2:
-+#line 186 "plural.y"
-+{
-+ yyval.exp = new_exp_3 (qmop, yyvsp[-4].exp, yyvsp[-2].exp, yyvsp[0].exp);
-+ ;
-+ break;}
-+case 3:
-+#line 190 "plural.y"
-+{
-+ yyval.exp = new_exp_2 (lor, yyvsp[-2].exp, yyvsp[0].exp);
-+ ;
-+ break;}
-+case 4:
-+#line 194 "plural.y"
-+{
-+ yyval.exp = new_exp_2 (land, yyvsp[-2].exp, yyvsp[0].exp);
-+ ;
-+ break;}
-+case 5:
-+#line 198 "plural.y"
-+{
-+ yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
-+ ;
-+ break;}
-+case 6:
-+#line 202 "plural.y"
-+{
-+ yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
-+ ;
-+ break;}
-+case 7:
-+#line 206 "plural.y"
-+{
-+ yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
-+ ;
-+ break;}
-+case 8:
-+#line 210 "plural.y"
-+{
-+ yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp);
-+ ;
-+ break;}
-+case 9:
-+#line 214 "plural.y"
-+{
-+ yyval.exp = new_exp_1 (lnot, yyvsp[0].exp);
-+ ;
-+ break;}
-+case 10:
-+#line 218 "plural.y"
-+{
-+ yyval.exp = new_exp_0 (var);
-+ ;
-+ break;}
-+case 11:
-+#line 222 "plural.y"
-+{
-+ if ((yyval.exp = new_exp_0 (num)) != NULL)
-+ yyval.exp->val.num = yyvsp[0].num;
-+ ;
-+ break;}
-+case 12:
-+#line 227 "plural.y"
-+{
-+ yyval.exp = yyvsp[-1].exp;
-+ ;
-+ break;}
-+}
-+ /* the action file gets copied in in place of this dollarsign */
-+#line 543 "/home/haible/gnu/arch/linuxlibc6/share/bison.simple"
-+
-+ yyvsp -= yylen;
-+ yyssp -= yylen;
-+#ifdef YYLSP_NEEDED
-+ yylsp -= yylen;
-+#endif
-+
-+#if YYDEBUG != 0
-+ if (yydebug)
-+ {
-+ short *ssp1 = yyss - 1;
-+ fprintf (stderr, "state stack now");
-+ while (ssp1 != yyssp)
-+ fprintf (stderr, " %d", *++ssp1);
-+ fprintf (stderr, "\n");
-+ }
-+#endif
-+
-+ *++yyvsp = yyval;
-+
-+#ifdef YYLSP_NEEDED
-+ yylsp++;
-+ if (yylen == 0)
-+ {
-+ yylsp->first_line = yylloc.first_line;
-+ yylsp->first_column = yylloc.first_column;
-+ yylsp->last_line = (yylsp-1)->last_line;
-+ yylsp->last_column = (yylsp-1)->last_column;
-+ yylsp->text = 0;
-+ }
-+ else
-+ {
-+ yylsp->last_line = (yylsp+yylen-1)->last_line;
-+ yylsp->last_column = (yylsp+yylen-1)->last_column;
-+ }
-+#endif
-+
-+ /* Now "shift" the result of the reduction.
-+ Determine what state that goes to,
-+ based on the state we popped back to
-+ and the rule number reduced by. */
-+
-+ yyn = yyr1[yyn];
-+
-+ yystate = yypgoto[yyn - YYNTBASE] + *yyssp;
-+ if (yystate >= 0 && yystate <= YYLAST && yycheck[yystate] == *yyssp)
-+ yystate = yytable[yystate];
-+ else
-+ yystate = yydefgoto[yyn - YYNTBASE];
-+
-+ goto yynewstate;
-+
-+yyerrlab: /* here on detecting error */
-+
-+ if (! yyerrstatus)
-+ /* If not already recovering from an error, report this error. */
-+ {
-+ ++yynerrs;
-+
-+#ifdef YYERROR_VERBOSE
-+ yyn = yypact[yystate];
-+
-+ if (yyn > YYFLAG && yyn < YYLAST)
-+ {
-+ int size = 0;
-+ char *msg;
-+ int x, count;
-+
-+ count = 0;
-+ /* Start X at -yyn if nec to avoid negative indexes in yycheck. */
-+ for (x = (yyn < 0 ? -yyn : 0);
-+ x < (sizeof(yytname) / sizeof(char *)); x++)
-+ if (yycheck[x + yyn] == x)
-+ size += strlen(yytname[x]) + 15, count++;
-+ msg = (char *) malloc(size + 15);
-+ if (msg != 0)
-+ {
-+ strcpy(msg, "parse error");
-+
-+ if (count < 5)
-+ {
-+ count = 0;
-+ for (x = (yyn < 0 ? -yyn : 0);
-+ x < (sizeof(yytname) / sizeof(char *)); x++)
-+ if (yycheck[x + yyn] == x)
-+ {
-+ strcat(msg, count == 0 ? ", expecting `" : " or `");
-+ strcat(msg, yytname[x]);
-+ strcat(msg, "'");
-+ count++;
-+ }
-+ }
-+ yyerror(msg);
-+ free(msg);
-+ }
-+ else
-+ yyerror ("parse error; also virtual memory exceeded");
-+ }
-+ else
-+#endif /* YYERROR_VERBOSE */
-+ yyerror("parse error");
-+ }
-+
-+ goto yyerrlab1;
-+yyerrlab1: /* here on error raised explicitly by an action */
-+
-+ if (yyerrstatus == 3)
-+ {
-+ /* if just tried and failed to reuse lookahead token after an error, discard it. */
-+
-+ /* return failure if at end of input */
-+ if (yychar == YYEOF)
-+ YYABORT;
-+
-+#if YYDEBUG != 0
-+ if (yydebug)
-+ fprintf(stderr, "Discarding token %d (%s).\n", yychar, yytname[yychar1]);
-+#endif
-+
-+ yychar = YYEMPTY;
-+ }
-+
-+ /* Else will try to reuse lookahead token
-+ after shifting the error token. */
-+
-+ yyerrstatus = 3; /* Each real token shifted decrements this */
-+
-+ goto yyerrhandle;
-+
-+yyerrdefault: /* current state does not do anything special for the error token. */
-+
-+#if 0
-+ /* This is wrong; only states that explicitly want error tokens
-+ should shift them. */
-+ yyn = yydefact[yystate]; /* If its default is to accept any token, ok. Otherwise pop it.*/
-+ if (yyn) goto yydefault;
-+#endif
-+
-+yyerrpop: /* pop the current state because it cannot handle the error token */
-+
-+ if (yyssp == yyss) YYABORT;
-+ yyvsp--;
-+ yystate = *--yyssp;
-+#ifdef YYLSP_NEEDED
-+ yylsp--;
-+#endif
-+
-+#if YYDEBUG != 0
-+ if (yydebug)
-+ {
-+ short *ssp1 = yyss - 1;
-+ fprintf (stderr, "Error: state stack now");
-+ while (ssp1 != yyssp)
-+ fprintf (stderr, " %d", *++ssp1);
-+ fprintf (stderr, "\n");
-+ }
-+#endif
-+
-+yyerrhandle:
-+
-+ yyn = yypact[yystate];
-+ if (yyn == YYFLAG)
-+ goto yyerrdefault;
-+
-+ yyn += YYTERROR;
-+ if (yyn < 0 || yyn > YYLAST || yycheck[yyn] != YYTERROR)
-+ goto yyerrdefault;
-+
-+ yyn = yytable[yyn];
-+ if (yyn < 0)
-+ {
-+ if (yyn == YYFLAG)
-+ goto yyerrpop;
-+ yyn = -yyn;
-+ goto yyreduce;
-+ }
-+ else if (yyn == 0)
-+ goto yyerrpop;
-+
-+ if (yyn == YYFINAL)
-+ YYACCEPT;
-+
-+#if YYDEBUG != 0
-+ if (yydebug)
-+ fprintf(stderr, "Shifting error token, ");
-+#endif
-+
-+ *++yyvsp = yylval;
-+#ifdef YYLSP_NEEDED
-+ *++yylsp = yylloc;
-+#endif
-+
-+ yystate = yyn;
-+ goto yynewstate;
-+
-+ yyacceptlab:
-+ /* YYACCEPT comes here. */
-+ if (yyfree_stacks)
-+ {
-+ free (yyss);
-+ free (yyvs);
-+#ifdef YYLSP_NEEDED
-+ free (yyls);
-+#endif
-+ }
-+ return 0;
-+
-+ yyabortlab:
-+ /* YYABORT comes here. */
-+ if (yyfree_stacks)
-+ {
-+ free (yyss);
-+ free (yyvs);
-+#ifdef YYLSP_NEEDED
-+ free (yyls);
-+#endif
-+ }
-+ return 1;
-+}
-+#line 232 "plural.y"
-+
-+
-+void
-+internal_function
-+FREE_EXPRESSION (exp)
-+ struct expression *exp;
-+{
-+ if (exp == NULL)
-+ return;
-+
-+ /* Handle the recursive case. */
-+ switch (exp->nargs)
-+ {
-+ case 3:
-+ FREE_EXPRESSION (exp->val.args[2]);
-+ /* FALLTHROUGH */
-+ case 2:
-+ FREE_EXPRESSION (exp->val.args[1]);
-+ /* FALLTHROUGH */
-+ case 1:
-+ FREE_EXPRESSION (exp->val.args[0]);
-+ /* FALLTHROUGH */
-+ default:
-+ break;
-+ }
-+
-+ free (exp);
-+}
-+
-+
-+static int
-+yylex (lval, pexp)
-+ YYSTYPE *lval;
-+ const char **pexp;
-+{
-+ const char *exp = *pexp;
-+ int result;
-+
-+ while (1)
-+ {
-+ if (exp[0] == '\0')
-+ {
-+ *pexp = exp;
-+ return YYEOF;
-+ }
-+
-+ if (exp[0] != ' ' && exp[0] != '\t')
-+ break;
-+
-+ ++exp;
-+ }
-+
-+ result = *exp++;
-+ switch (result)
-+ {
-+ case '0': case '1': case '2': case '3': case '4':
-+ case '5': case '6': case '7': case '8': case '9':
-+ {
-+ unsigned long int n = result - '0';
-+ while (exp[0] >= '0' && exp[0] <= '9')
-+ {
-+ n *= 10;
-+ n += exp[0] - '0';
-+ ++exp;
-+ }
-+ lval->num = n;
-+ result = NUMBER;
-+ }
-+ break;
-+
-+ case '=':
-+ if (exp[0] == '=')
-+ {
-+ ++exp;
-+ lval->op = equal;
-+ result = EQUOP2;
-+ }
-+ else
-+ result = YYERRCODE;
-+ break;
-+
-+ case '!':
-+ if (exp[0] == '=')
-+ {
-+ ++exp;
-+ lval->op = not_equal;
-+ result = EQUOP2;
-+ }
-+ break;
-+
-+ case '&':
-+ case '|':
-+ if (exp[0] == result)
-+ ++exp;
-+ else
-+ result = YYERRCODE;
-+ break;
-+
-+ case '<':
-+ if (exp[0] == '=')
-+ {
-+ ++exp;
-+ lval->op = less_or_equal;
-+ }
-+ else
-+ lval->op = less_than;
-+ result = CMPOP2;
-+ break;
-+
-+ case '>':
-+ if (exp[0] == '=')
-+ {
-+ ++exp;
-+ lval->op = greater_or_equal;
-+ }
-+ else
-+ lval->op = greater_than;
-+ result = CMPOP2;
-+ break;
-+
-+ case '*':
-+ lval->op = mult;
-+ result = MULOP2;
-+ break;
-+
-+ case '/':
-+ lval->op = divide;
-+ result = MULOP2;
-+ break;
-+
-+ case '%':
-+ lval->op = module;
-+ result = MULOP2;
-+ break;
-+
-+ case '+':
-+ lval->op = plus;
-+ result = ADDOP2;
-+ break;
-+
-+ case '-':
-+ lval->op = minus;
-+ result = ADDOP2;
-+ break;
-+
-+ case 'n':
-+ case '?':
-+ case ':':
-+ case '(':
-+ case ')':
-+ /* Nothing, just return the character. */
-+ break;
-+
-+ case ';':
-+ case '\n':
-+ case '\0':
-+ /* Be safe and let the user call this function again. */
-+ --exp;
-+ result = YYEOF;
-+ break;
-+
-+ default:
-+ result = YYERRCODE;
-+#if YYDEBUG != 0
-+ --exp;
-+#endif
-+ break;
-+ }
-+
-+ *pexp = exp;
-+
-+ return result;
-+}
-+
-+
-+static void
-+yyerror (str)
-+ const char *str;
-+{
-+ /* Do nothing. We don't print error messages here. */
-+}
-diff -urN parted-1.4.17.orig/intl/plural.y parted-1.4.17/intl/plural.y
---- parted-1.4.17.orig/intl/plural.y Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/intl/plural.y Thu Aug 2 14:26:17 2001
-@@ -0,0 +1,412 @@
-+%{
-+/* Expression parsing for plural form selection.
-+ Copyright (C) 2000, 2001 Free Software Foundation, Inc.
-+ Written by Ulrich Drepper <drepper@cygnus.com>, 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, or (at your option)
-+ any later version.
-+
-+ This program is distributed in the hope that it will be useful,
-+ but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ GNU General Public License for more details.
-+
-+ You 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. */
-+
-+/* The bison generated parser uses alloca. AIX 3 forces us to put this
-+ declaration at the beginning of the file. The declaration in bison's
-+ skeleton file comes too late. This must come before <config.h>
-+ because <config.h> may include arbitrary system headers. */
-+#if defined _AIX && !defined __GNUC__
-+ #pragma alloca
-+#endif
-+
-+#ifdef HAVE_CONFIG_H
-+# include <config.h>
-+#endif
-+
-+#include <stdlib.h>
-+#include "gettextP.h"
-+
-+/* Names for the libintl functions are a problem. They must not clash
-+ with existing names and they should follow ANSI C. But this source
-+ code is also used in GNU C Library where the names have a __
-+ prefix. So we have to make a difference here. */
-+#ifdef _LIBC
-+# define FREE_EXPRESSION __gettext_free_exp
-+#else
-+# define FREE_EXPRESSION gettext_free_exp__
-+# define __gettextparse gettextparse__
-+#endif
-+
-+#define YYLEX_PARAM &((struct parse_args *) arg)->cp
-+#define YYPARSE_PARAM arg
-+%}
-+%pure_parser
-+%expect 10
-+
-+%union {
-+ unsigned long int num;
-+ enum operator op;
-+ struct expression *exp;
-+}
-+
-+%{
-+/* Prototypes for local functions. */
-+static struct expression *new_exp PARAMS ((int nargs, enum operator op,
-+ struct expression * const *args));
-+static inline struct expression *new_exp_0 PARAMS ((enum operator op));
-+static inline struct expression *new_exp_1 PARAMS ((enum operator op,
-+ struct expression *right));
-+static struct expression *new_exp_2 PARAMS ((enum operator op,
-+ struct expression *left,
-+ struct expression *right));
-+static inline struct expression *new_exp_3 PARAMS ((enum operator op,
-+ struct expression *bexp,
-+ struct expression *tbranch,
-+ struct expression *fbranch));
-+static int yylex PARAMS ((YYSTYPE *lval, const char **pexp));
-+static void yyerror PARAMS ((const char *str));
-+
-+/* Allocation of expressions. */
-+
-+static struct expression *
-+new_exp (nargs, op, args)
-+ int nargs;
-+ enum operator op;
-+ struct expression * const *args;
-+{
-+ int i;
-+ struct expression *newp;
-+
-+ /* If any of the argument could not be malloc'ed, just return NULL. */
-+ for (i = nargs - 1; i >= 0; i--)
-+ if (args[i] == NULL)
-+ goto fail;
-+
-+ /* Allocate a new expression. */
-+ newp = (struct expression *) malloc (sizeof (*newp));
-+ if (newp != NULL)
-+ {
-+ newp->nargs = nargs;
-+ newp->operation = op;
-+ for (i = nargs - 1; i >= 0; i--)
-+ newp->val.args[i] = args[i];
-+ return newp;
-+ }
-+
-+ fail:
-+ for (i = nargs - 1; i >= 0; i--)
-+ FREE_EXPRESSION (args[i]);
-+
-+ return NULL;
-+}
-+
-+static inline struct expression *
-+new_exp_0 (op)
-+ enum operator op;
-+{
-+ return new_exp (0, op, NULL);
-+}
-+
-+static inline struct expression *
-+new_exp_1 (op, right)
-+ enum operator op;
-+ struct expression *right;
-+{
-+ struct expression *args[1];
-+
-+ args[0] = right;
-+ return new_exp (1, op, args);
-+}
-+
-+static struct expression *
-+new_exp_2 (op, left, right)
-+ enum operator op;
-+ struct expression *left;
-+ struct expression *right;
-+{
-+ struct expression *args[2];
-+
-+ args[0] = left;
-+ args[1] = right;
-+ return new_exp (2, op, args);
-+}
-+
-+static inline struct expression *
-+new_exp_3 (op, bexp, tbranch, fbranch)
-+ enum operator op;
-+ struct expression *bexp;
-+ struct expression *tbranch;
-+ struct expression *fbranch;
-+{
-+ struct expression *args[3];
-+
-+ args[0] = bexp;
-+ args[1] = tbranch;
-+ args[2] = fbranch;
-+ return new_exp (3, op, args);
-+}
-+
-+%}
-+
-+/* This declares that all operators have the same associativity and the
-+ precedence order as in C. See [Harbison, Steele: C, A Reference Manual].
-+ There is no unary minus and no bitwise operators.
-+ Operators with the same syntactic behaviour have been merged into a single
-+ token, to save space in the array generated by bison. */
-+%right '?' /* ? */
-+%left '|' /* || */
-+%left '&' /* && */
-+%left EQUOP2 /* == != */
-+%left CMPOP2 /* < > <= >= */
-+%left ADDOP2 /* + - */
-+%left MULOP2 /* * / % */
-+%right '!' /* ! */
-+
-+%token <op> EQUOP2 CMPOP2 ADDOP2 MULOP2
-+%token <num> NUMBER
-+%type <exp> exp
-+
-+%%
-+
-+start: exp
-+ {
-+ if ($1 == NULL)
-+ YYABORT;
-+ ((struct parse_args *) arg)->res = $1;
-+ }
-+ ;
-+
-+exp: exp '?' exp ':' exp
-+ {
-+ $$ = new_exp_3 (qmop, $1, $3, $5);
-+ }
-+ | exp '|' exp
-+ {
-+ $$ = new_exp_2 (lor, $1, $3);
-+ }
-+ | exp '&' exp
-+ {
-+ $$ = new_exp_2 (land, $1, $3);
-+ }
-+ | exp EQUOP2 exp
-+ {
-+ $$ = new_exp_2 ($2, $1, $3);
-+ }
-+ | exp CMPOP2 exp
-+ {
-+ $$ = new_exp_2 ($2, $1, $3);
-+ }
-+ | exp ADDOP2 exp
-+ {
-+ $$ = new_exp_2 ($2, $1, $3);
-+ }
-+ | exp MULOP2 exp
-+ {
-+ $$ = new_exp_2 ($2, $1, $3);
-+ }
-+ | '!' exp
-+ {
-+ $$ = new_exp_1 (lnot, $2);
-+ }
-+ | 'n'
-+ {
-+ $$ = new_exp_0 (var);
-+ }
-+ | NUMBER
-+ {
-+ if (($$ = new_exp_0 (num)) != NULL)
-+ $$->val.num = $1;
-+ }
-+ | '(' exp ')'
-+ {
-+ $$ = $2;
-+ }
-+ ;
-+
-+%%
-+
-+void
-+internal_function
-+FREE_EXPRESSION (exp)
-+ struct expression *exp;
-+{
-+ if (exp == NULL)
-+ return;
-+
-+ /* Handle the recursive case. */
-+ switch (exp->nargs)
-+ {
-+ case 3:
-+ FREE_EXPRESSION (exp->val.args[2]);
-+ /* FALLTHROUGH */
-+ case 2:
-+ FREE_EXPRESSION (exp->val.args[1]);
-+ /* FALLTHROUGH */
-+ case 1:
-+ FREE_EXPRESSION (exp->val.args[0]);
-+ /* FALLTHROUGH */
-+ default:
-+ break;
-+ }
-+
-+ free (exp);
-+}
-+
-+
-+static int
-+yylex (lval, pexp)
-+ YYSTYPE *lval;
-+ const char **pexp;
-+{
-+ const char *exp = *pexp;
-+ int result;
-+
-+ while (1)
-+ {
-+ if (exp[0] == '\0')
-+ {
-+ *pexp = exp;
-+ return YYEOF;
-+ }
-+
-+ if (exp[0] != ' ' && exp[0] != '\t')
-+ break;
-+
-+ ++exp;
-+ }
-+
-+ result = *exp++;
-+ switch (result)
-+ {
-+ case '0': case '1': case '2': case '3': case '4':
-+ case '5': case '6': case '7': case '8': case '9':
-+ {
-+ unsigned long int n = result - '0';
-+ while (exp[0] >= '0' && exp[0] <= '9')
-+ {
-+ n *= 10;
-+ n += exp[0] - '0';
-+ ++exp;
-+ }
-+ lval->num = n;
-+ result = NUMBER;
-+ }
-+ break;
-+
-+ case '=':
-+ if (exp[0] == '=')
-+ {
-+ ++exp;
-+ lval->op = equal;
-+ result = EQUOP2;
-+ }
-+ else
-+ result = YYERRCODE;
-+ break;
-+
-+ case '!':
-+ if (exp[0] == '=')
-+ {
-+ ++exp;
-+ lval->op = not_equal;
-+ result = EQUOP2;
-+ }
-+ break;
-+
-+ case '&':
-+ case '|':
-+ if (exp[0] == result)
-+ ++exp;
-+ else
-+ result = YYERRCODE;
-+ break;
-+
-+ case '<':
-+ if (exp[0] == '=')
-+ {
-+ ++exp;
-+ lval->op = less_or_equal;
-+ }
-+ else
-+ lval->op = less_than;
-+ result = CMPOP2;
-+ break;
-+
-+ case '>':
-+ if (exp[0] == '=')
-+ {
-+ ++exp;
-+ lval->op = greater_or_equal;
-+ }
-+ else
-+ lval->op = greater_than;
-+ result = CMPOP2;
-+ break;
-+
-+ case '*':
-+ lval->op = mult;
-+ result = MULOP2;
-+ break;
-+
-+ case '/':
-+ lval->op = divide;
-+ result = MULOP2;
-+ break;
-+
-+ case '%':
-+ lval->op = module;
-+ result = MULOP2;
-+ break;
-+
-+ case '+':
-+ lval->op = plus;
-+ result = ADDOP2;
-+ break;
-+
-+ case '-':
-+ lval->op = minus;
-+ result = ADDOP2;
-+ break;
-+
-+ case 'n':
-+ case '?':
-+ case ':':
-+ case '(':
-+ case ')':
-+ /* Nothing, just return the character. */
-+ break;
-+
-+ case ';':
-+ case '\n':
-+ case '\0':
-+ /* Be safe and let the user call this function again. */
-+ --exp;
-+ result = YYEOF;
-+ break;
-+
-+ default:
-+ result = YYERRCODE;
-+#if YYDEBUG != 0
-+ --exp;
-+#endif
-+ break;
-+ }
-+
-+ *pexp = exp;
-+
-+ return result;
-+}
-+
-+
-+static void
-+yyerror (str)
-+ const char *str;
-+{
-+ /* Do nothing. We don't print error messages here. */
-+}
-diff -urN parted-1.4.17.orig/intl/po2tbl.sed.in parted-1.4.17/intl/po2tbl.sed.in
---- parted-1.4.17.orig/intl/po2tbl.sed.in Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/po2tbl.sed.in Wed Dec 31 19:00:00 1969
-@@ -1,102 +0,0 @@
--# po2tbl.sed - Convert Uniforum style .po file to lookup table for catgets
--# Copyright (C) 1995 Free Software Foundation, Inc.
--# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
--#
--1 {
-- i\
--/* Automatically generated by po2tbl.sed from @PACKAGE NAME@.pot. */\
--\
--#if HAVE_CONFIG_H\
--# include <config.h>\
--#endif\
--\
--#include "libgettext.h"\
--\
--const struct _msg_ent _msg_tbl[] = {
-- h
-- s/.*/0/
-- x
--}
--#
--# Write msgid entries in C array form.
--#
--/^msgid/ {
-- s/msgid[ ]*\(".*"\)/ {\1/
-- tb
--# Append the next line
-- :b
-- N
--# Look whether second part is continuation line.
-- s/\(.*\)"\(\n\)"\(.*"\)/\1\2\3/
--# Yes, then branch.
-- ta
--# Because we assume that the input file correctly formed the line
--# just read cannot be again be a msgid line. So it's safe to ignore
--# it.
-- s/\(.*\)\n.*/\1/
-- bc
--# We found a continuation line. But before printing insert '\'.
-- :a
-- s/\(.*\)\(\n.*\)/\1\\\2/
-- P
--# We cannot use D here.
-- s/.*\n\(.*\)/\1/
--# Some buggy seds do not clear the `successful substitution since last ``t'''
--# flag on `N', so we do a `t' here to clear it.
-- tb
--# Not reached
-- :c
-- x
--# The following nice solution is by
--# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
-- td
--# Increment a decimal number in pattern space.
--# First hide trailing `9' digits.
-- :d
-- s/9\(_*\)$/_\1/
-- td
--# Assure at least one digit is available.
-- s/^\(_*\)$/0\1/
--# Increment the last digit.
-- s/8\(_*\)$/9\1/
-- s/7\(_*\)$/8\1/
-- s/6\(_*\)$/7\1/
-- s/5\(_*\)$/6\1/
-- s/4\(_*\)$/5\1/
-- s/3\(_*\)$/4\1/
-- s/2\(_*\)$/3\1/
-- s/1\(_*\)$/2\1/
-- s/0\(_*\)$/1\1/
--# Convert the hidden `9' digits to `0's.
-- s/_/0/g
-- x
-- G
-- s/\(.*\)\n\([0-9]*\)/\1, \2},/
-- s/\(.*\)"$/\1/
-- p
--}
--#
--# Last line.
--#
--$ {
-- i\
--};\
--
-- g
-- s/0*\(.*\)/int _msg_tbl_length = \1;/p
--}
--d
-diff -urN parted-1.4.17.orig/intl/ref-add.sin parted-1.4.17/intl/ref-add.sin
---- parted-1.4.17.orig/intl/ref-add.sin Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/intl/ref-add.sin Thu Aug 2 14:26:17 2001
-@@ -0,0 +1,31 @@
-+# 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 Library 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
-+# Library General Public License for more details.
-+#
-+# You should have received a copy of the GNU Library 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.
-+#
-+# 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 -urN parted-1.4.17.orig/intl/ref-del.sin parted-1.4.17/intl/ref-del.sin
---- parted-1.4.17.orig/intl/ref-del.sin Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/intl/ref-del.sin Thu Aug 2 14:26:17 2001
-@@ -0,0 +1,26 @@
-+# 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 Library 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
-+# Library General Public License for more details.
-+#
-+# You should have received a copy of the GNU Library 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.
-+#
-+# 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 -urN parted-1.4.17.orig/intl/textdomain.c parted-1.4.17/intl/textdomain.c
---- parted-1.4.17.orig/intl/textdomain.c Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/textdomain.c Thu Aug 2 14:26:17 2001
-@@ -1,6 +1,5 @@
- /* Implementation of the textdomain(3) function.
-- Copyright (C) 1995, 1996, 1997, 1998 Free Software Foundation, Inc.
-- Written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, 1995.
-+ Copyright (C) 1995-1998, 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
-@@ -20,23 +19,32 @@
- # include <config.h>
- #endif
-
--#if defined STDC_HEADERS || defined _LIBC
--# include <stdlib.h>
--#endif
-+#include <stdlib.h>
-+#include <string.h>
-
--#if defined STDC_HEADERS || defined HAVE_STRING_H || defined _LIBC
--# include <string.h>
-+#ifdef _LIBC
-+# include <libintl.h>
- #else
--# include <strings.h>
--# ifndef memcpy
--# define memcpy(Dst, Src, Num) bcopy (Src, Dst, Num)
--# endif
-+# include "libgnuintl.h"
- #endif
-+#include "gettextP.h"
-
- #ifdef _LIBC
--# include <libintl.h>
-+/* We have to handle multi-threaded applications. */
-+# include <bits/libc-lock.h>
- #else
--# include "libgettext.h"
-+/* Provide dummy implementation if this is outside glibc. */
-+# define __libc_rwlock_define(CLASS, NAME)
-+# define __libc_rwlock_wrlock(NAME)
-+# define __libc_rwlock_unlock(NAME)
-+#endif
-+
-+/* The internal variables in the standalone libintl.a must have different
-+ names than the internal variables in GNU libc, otherwise programs
-+ using libintl.a cannot be linked statically. */
-+#if !defined _LIBC
-+# define _nl_default_default_domain _nl_default_default_domain__
-+# define _nl_current_default_domain _nl_current_default_domain__
- #endif
-
- /* @@ end of prolog @@ */
-@@ -61,6 +69,9 @@
- # define TEXTDOMAIN textdomain__
- #endif
-
-+/* Lock variable to protect the global data in the gettext implementation. */
-+__libc_rwlock_define (extern, _nl_state_lock)
-+
- /* Set the current default message catalog to DOMAINNAME.
- If DOMAINNAME is null, return the current default.
- If DOMAINNAME is "", reset to the default of "messages". */
-@@ -68,38 +79,60 @@
- TEXTDOMAIN (domainname)
- const char *domainname;
- {
-- char *old;
-+ char *new_domain;
-+ char *old_domain;
-
- /* A NULL pointer requests the current setting. */
- if (domainname == NULL)
- return (char *) _nl_current_default_domain;
-
-- old = (char *) _nl_current_default_domain;
-+ __libc_rwlock_wrlock (_nl_state_lock);
-+
-+ old_domain = (char *) _nl_current_default_domain;
-
- /* If domain name is the null string set to default domain "messages". */
- if (domainname[0] == '\0'
- || strcmp (domainname, _nl_default_default_domain) == 0)
-- _nl_current_default_domain = _nl_default_default_domain;
-+ {
-+ _nl_current_default_domain = _nl_default_default_domain;
-+ new_domain = (char *) _nl_current_default_domain;
-+ }
-+ else if (strcmp (domainname, old_domain) == 0)
-+ /* This can happen and people will use it to signal that some
-+ environment variable changed. */
-+ new_domain = old_domain;
- else
- {
- /* If the following malloc fails `_nl_current_default_domain'
- will be NULL. This value will be returned and so signals we
- are out of core. */
- #if defined _LIBC || defined HAVE_STRDUP
-- _nl_current_default_domain = strdup (domainname);
-+ new_domain = strdup (domainname);
- #else
- size_t len = strlen (domainname) + 1;
-- char *cp = (char *) malloc (len);
-- if (cp != NULL)
-- memcpy (cp, domainname, len);
-- _nl_current_default_domain = cp;
-+ new_domain = (char *) malloc (len);
-+ if (new_domain != NULL)
-+ memcpy (new_domain, domainname, len);
- #endif
-+
-+ if (new_domain != NULL)
-+ _nl_current_default_domain = new_domain;
-+ }
-+
-+ /* We use this possibility to signal a change of the loaded catalogs
-+ since this is most likely the case and there is no other easy we
-+ to do it. Do it only when the call was successful. */
-+ if (new_domain != NULL)
-+ {
-+ ++_nl_msg_cat_cntr;
-+
-+ if (old_domain != new_domain && old_domain != _nl_default_default_domain)
-+ free (old_domain);
- }
-
-- if (old != _nl_default_default_domain)
-- free (old);
-+ __libc_rwlock_unlock (_nl_state_lock);
-
-- return (char *) _nl_current_default_domain;
-+ return new_domain;
- }
-
- #ifdef _LIBC
-diff -urN parted-1.4.17.orig/intl/xopen-msg.sed parted-1.4.17/intl/xopen-msg.sed
---- parted-1.4.17.orig/intl/xopen-msg.sed Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/intl/xopen-msg.sed Wed Dec 31 19:00:00 1969
-@@ -1,104 +0,0 @@
--# po2msg.sed - Convert Uniforum style .po file to X/Open style .msg file
--# Copyright (C) 1995 Free Software Foundation, Inc.
--# Ulrich Drepper <drepper@gnu.ai.mit.edu>, 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
--#
--#
--# The first directive in the .msg should be the definition of the
--# message set number. We use always set number 1.
--#
--1 {
-- i\
--$set 1 # Automatically created by po2msg.sed
-- h
-- s/.*/0/
-- x
--}
--#
--# We copy all comments into the .msg file. Perhaps they can help.
--#
--/^#/ s/^#[ ]*/$ /p
--#
--# We copy the original message as a comment into the .msg file.
--#
--/^msgid/ {
--# Does not work now
--# /"$/! {
--# s/\\$//
--# s/$/ ... (more lines following)"/
--# }
-- s/^msgid[ ]*"\(.*\)"$/$ Original Message: \1/
-- p
--}
--#
--# The .msg file contains, other then the .po file, only the translations
--# but each given a unique ID. Starting from 1 and incrementing by 1 for
--# each message we assign them to the messages.
--# It is important that the .po file used to generate the cat-id-tbl.c file
--# (with po-to-tbl) is the same as the one used here. (At least the order
--# of declarations must not be changed.)
--#
--/^msgstr/ {
-- s/msgstr[ ]*"\(.*\)"/\1/
-- x
--# The following nice solution is by
--# Bruno <Haible@ma2s2.mathematik.uni-karlsruhe.de>
-- td
--# Increment a decimal number in pattern space.
--# First hide trailing `9' digits.
-- :d
-- s/9\(_*\)$/_\1/
-- td
--# Assure at least one digit is available.
-- s/^\(_*\)$/0\1/
--# Increment the last digit.
-- s/8\(_*\)$/9\1/
-- s/7\(_*\)$/8\1/
-- s/6\(_*\)$/7\1/
-- s/5\(_*\)$/6\1/
-- s/4\(_*\)$/5\1/
-- s/3\(_*\)$/4\1/
-- s/2\(_*\)$/3\1/
-- s/1\(_*\)$/2\1/
-- s/0\(_*\)$/1\1/
--# Convert the hidden `9' digits to `0's.
-- s/_/0/g
-- x
--# Bring the line in the format `<number> <message>'
-- G
-- s/^[^\n]*$/& /
-- s/\(.*\)\n\([0-9]*\)/\2 \1/
--# Clear flag from last substitution.
-- tb
--# Append the next line.
-- :b
-- N
--# Look whether second part is a continuation line.
-- s/\(.*\n\)"\(.*\)"/\1\2/
--# Yes, then branch.
-- ta
-- P
-- D
--# Note that `D' includes a jump to the start!!
--# We found a continuation line. But before printing insert '\'.
-- :a
-- s/\(.*\)\(\n.*\)/\1\\\2/
-- P
--# We cannot use the sed command `D' here
-- s/.*\n\(.*\)/\1/
-- tb
--}
--d
-diff -urN parted-1.4.17.orig/libparted/Makefile.am parted-1.4.17/libparted/Makefile.am
---- parted-1.4.17.orig/libparted/Makefile.am Sun Jul 22 03:24:27 2001
-+++ parted-1.4.17/libparted/Makefile.am Thu Aug 2 18:32:37 2001
-@@ -18,7 +18,7 @@
- partedincludedir = -I$(top_srcdir)/include
- lib_LTLIBRARIES = libparted.la
- libparted_la_LDFLAGS = -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE) \
-- -release $(LT_RELEASE)
-+ -release $(LT_RELEASE)
-
- libparted_la_SOURCES = constraint.c \
- device.c \
-@@ -52,4 +52,3 @@
- EXTRA_DIST = mbr.s
-
- INCLUDES = $(partedincludedir) @INTLINCS@
--
-diff -urN parted-1.4.17.orig/po/ChangeLog parted-1.4.17/po/ChangeLog
---- parted-1.4.17.orig/po/ChangeLog Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/po/ChangeLog Thu Aug 2 14:26:17 2001
-@@ -0,0 +1,6 @@
-+2001-08-02 gettextize <bug-gnu-utils@gnu.org>
-+
-+ * Makefile.in.in: Upgrade to gettext-0.10.39.
-+ * cat-id-tbl.c: Remove file.
-+ * stamp-cat-id: Remove file.
-+
-diff -urN parted-1.4.17.orig/po/Makefile.in.in parted-1.4.17/po/Makefile.in.in
---- parted-1.4.17.orig/po/Makefile.in.in Sat Apr 7 18:04:37 2001
-+++ parted-1.4.17/po/Makefile.in.in Thu Aug 2 14:26:17 2001
-@@ -1,17 +1,18 @@
- # Makefile for program source directory in GNU NLS utilities package.
--# Copyright (C) 1995, 1996, 1997 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
-+# Copyright (C) 1995-1997, 2000, 2001 by Ulrich Drepper <drepper@gnu.ai.mit.edu>
- #
- # This file file be copied and used freely without restrictions. It can
- # be used in projects which are not available under the GNU Public License
- # but which still want to provide support for the GNU gettext functionality.
- # Please note that the actual code is *not* freely available.
-
--# Hacked by Andrew Clausen <clausen@alphalink.com.au>, to prefix $(DESTDIR)
--# before the install directory. This makes RPM work properly.
--
- PACKAGE = @PACKAGE@
- VERSION = @VERSION@
-
-+# These two variables depend on the location of this directory.
-+subdir = po
-+top_builddir = ..
-+
- SHELL = /bin/sh
- @SET_MAKE@
-
-@@ -21,24 +22,20 @@
-
- prefix = @prefix@
- exec_prefix = @exec_prefix@
--datadir = $(prefix)/@DATADIRNAME@
-+datadir = @datadir@
- localedir = $(datadir)/locale
--gnulocaledir = $(prefix)/share/locale
--gettextsrcdir = $(prefix)/share/gettext/po
--subdir = po
--
--DESTDIR =
-+gettextsrcdir = $(datadir)/gettext/po
-
- INSTALL = @INSTALL@
- INSTALL_DATA = @INSTALL_DATA@
--MKINSTALLDIRS = $(top_srcdir)/@MKINSTALLDIRS@
-+MKINSTALLDIRS = @MKINSTALLDIRS@
-+mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac`
-
- CC = @CC@
--GENCAT = @GENCAT@
--GMSGFMT = PATH=../src:$$PATH @GMSGFMT@
-+GMSGFMT = @GMSGFMT@
- MSGFMT = @MSGFMT@
--XGETTEXT = PATH=../src:$$PATH @XGETTEXT@
--MSGMERGE = PATH=../src:$$PATH msgmerge
-+XGETTEXT = @XGETTEXT@
-+MSGMERGE = msgmerge
-
- DEFS = @DEFS@
- CFLAGS = @CFLAGS@
-@@ -48,20 +45,17 @@
-
- COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
-
--SOURCES = cat-id-tbl.c
- POFILES = @POFILES@
- GMOFILES = @GMOFILES@
- DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \
--stamp-cat-id $(POFILES) $(GMOFILES) $(SOURCES)
-+$(POFILES) $(GMOFILES)
-
- POTFILES = \
-
- CATALOGS = @CATALOGS@
--CATOBJEXT = @CATOBJEXT@
--INSTOBJEXT = @INSTOBJEXT@
-
- .SUFFIXES:
--.SUFFIXES: .c .o .po .pox .gmo .mo .msg .cat
-+.SUFFIXES: .c .o .po .pox .gmo .mo
-
- .c.o:
- $(COMPILE) $<
-@@ -75,19 +69,19 @@
-
- .po.gmo:
- file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \
-- && rm -f $$file && $(GMSGFMT) -o $$file $<
--
--.po.cat:
-- sed -f ../intl/po2msg.sed < $< > $*.msg \
-- && rm -f $@ && $(GENCAT) $@ $*.msg
-+ && rm -f $$file && $(GMSGFMT) --statistics -o $$file $<
-
-
- all: all-@USE_NLS@
-
--all-yes: cat-id-tbl.c $(CATALOGS)
-+all-yes: $(CATALOGS)
- all-no:
-
--$(srcdir)/$(PACKAGE).pot: $(POTFILES)
-+# Note: Target 'all' must not depend on target '$(srcdir)/$(PACKAGE).pot',
-+# otherwise packages like GCC can not be built if only parts of the source
-+# have been downloaded.
-+
-+$(srcdir)/$(PACKAGE).pot: $(POTFILES) $(srcdir)/POTFILES.in
- $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \
- --add-comments --keyword=_ --keyword=N_ \
- --files-from=$(srcdir)/POTFILES.in \
-@@ -95,78 +89,35 @@
- || ( rm -f $(srcdir)/$(PACKAGE).pot \
- && mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot )
-
--$(srcdir)/cat-id-tbl.c: stamp-cat-id; @:
--$(srcdir)/stamp-cat-id: $(PACKAGE).pot
-- rm -f cat-id-tbl.tmp
-- sed -f ../intl/po2tbl.sed $(srcdir)/$(PACKAGE).pot \
-- | sed -e "s/@PACKAGE NAME@/$(PACKAGE)/" > cat-id-tbl.tmp
-- if cmp -s cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; then \
-- rm cat-id-tbl.tmp; \
-- else \
-- echo cat-id-tbl.c changed; \
-- rm -f $(srcdir)/cat-id-tbl.c; \
-- mv cat-id-tbl.tmp $(srcdir)/cat-id-tbl.c; \
-- fi
-- cd $(srcdir) && rm -f stamp-cat-id && echo timestamp > stamp-cat-id
--
-
- install: install-exec install-data
- install-exec:
- install-data: install-data-@USE_NLS@
--install-data-no: all
--install-data-yes: all
-- if test -r "$(MKINSTALLDIRS)"; then \
-- $(MKINSTALLDIRS) $(datadir); \
-+ if test "$(PACKAGE)" = "gettext"; then \
-+ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \
-+ $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
-+ $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
- else \
-- $(SHELL) $(top_srcdir)/mkinstalldirs $(datadir); \
-+ : ; \
- fi
-+install-data-no: all
-+install-data-yes: all
-+ $(mkinstalldirs) $(DESTDIR)$(datadir)
- @catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
-- case "$$cat" in \
-- *.gmo) destdir=$(gnulocaledir);; \
-- *) destdir=$(localedir);; \
-- esac; \
-- lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
-- dir=$(DESTDIR)$$destdir/$$lang/LC_MESSAGES; \
-- if test -r "$(MKINSTALLDIRS)"; then \
-- $(MKINSTALLDIRS) $$dir; \
-- else \
-- $(SHELL) $(top_srcdir)/mkinstalldirs $$dir; \
-- fi; \
-+ lang=`echo $$cat | sed 's/\.gmo$$//'`; \
-+ dir=$(localedir)/$$lang/LC_MESSAGES; \
-+ $(mkinstalldirs) $(DESTDIR)$$dir; \
- if test -r $$cat; then \
-- $(INSTALL_DATA) $$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
-- echo "installing $$cat as $$dir/$(PACKAGE)$(INSTOBJEXT)"; \
-+ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
-+ echo "installing $$cat as $(DESTDIR)$$dir/$(PACKAGE).mo"; \
- else \
-- $(INSTALL_DATA) $(srcdir)/$$cat $$dir/$(PACKAGE)$(INSTOBJEXT); \
-+ $(INSTALL_DATA) $(srcdir)/$$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \
- echo "installing $(srcdir)/$$cat as" \
-- "$$dir/$(PACKAGE)$(INSTOBJEXT)"; \
-- fi; \
-- if test -r $$cat.m; then \
-- $(INSTALL_DATA) $$cat.m $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
-- echo "installing $$cat.m as $$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
-- else \
-- if test -r $(srcdir)/$$cat.m ; then \
-- $(INSTALL_DATA) $(srcdir)/$$cat.m \
-- $$dir/$(PACKAGE)$(INSTOBJEXT).m; \
-- echo "installing $(srcdir)/$$cat as" \
-- "$$dir/$(PACKAGE)$(INSTOBJEXT).m"; \
-- else \
-- true; \
-- fi; \
-+ "$(DESTDIR)$$dir/$(PACKAGE).mo"; \
- fi; \
- done
-- if test "$(PACKAGE)" = "gettext"; then \
-- if test -r "$(MKINSTALLDIRS)"; then \
-- $(MKINSTALLDIRS) $(gettextsrcdir); \
-- else \
-- $(SHELL) $(top_srcdir)/mkinstalldirs $(gettextsrcdir); \
-- fi; \
-- $(INSTALL_DATA) $(srcdir)/Makefile.in.in \
-- $(gettextsrcdir)/Makefile.in.in; \
-- else \
-- : ; \
-- fi
-
- # Define this as empty until I found a useful application.
- installcheck:
-@@ -175,76 +126,68 @@
- catalogs='$(CATALOGS)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
-- lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
-- rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
-- rm -f $(localedir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
-- rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT); \
-- rm -f $(gnulocaledir)/$$lang/LC_MESSAGES/$(PACKAGE)$(INSTOBJEXT).m; \
-+ lang=`echo $$cat | sed 's/\.gmo$$//'`; \
-+ rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE).mo; \
- done
-- rm -f $(gettextsrcdir)/po-Makefile.in.in
-+ if test "$(PACKAGE)" = "gettext"; then \
-+ rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \
-+ else \
-+ : ; \
-+ fi
-
- check: all
-
--cat-id-tbl.o: ../intl/libgettext.h
--
- dvi info tags TAGS ID:
-
- mostlyclean:
-- rm -f core core.* *.pox $(PACKAGE).po *.old.po cat-id-tbl.tmp
-+ rm -f core core.* *.pox $(PACKAGE).po *.new.po
- rm -fr *.o
-
- clean: mostlyclean
-
- distclean: clean
-- rm -f Makefile Makefile.in POTFILES *.mo *.msg *.cat *.cat.m
-+ 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 $(GMOFILES)
-
--distdir = ../$(PACKAGE)-$(VERSION)/$(subdir)
--dist distdir: update-po $(DISTFILES)
-+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: $(DISTFILES)
- dists="$(DISTFILES)"; \
- for file in $$dists; do \
-- ln $(srcdir)/$$file $(distdir) 2> /dev/null \
-- || cp -p $(srcdir)/$$file $(distdir); \
-+ if test -f $$file; then dir=.; else dir=$(srcdir); fi; \
-+ cp -p $$dir/$$file $(distdir); \
- done
-
- update-po: Makefile
- $(MAKE) $(PACKAGE).pot
-- PATH=`pwd`/../src:$$PATH; \
-+ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \
- cd $(srcdir); \
-- catalogs='$(CATALOGS)'; \
-+ catalogs='$(GMOFILES)'; \
- for cat in $$catalogs; do \
- cat=`basename $$cat`; \
-- lang=`echo $$cat | sed 's/\$(CATOBJEXT)$$//'`; \
-- mv $$lang.po $$lang.old.po; \
-+ lang=`echo $$cat | sed 's/\.gmo$$//'`; \
- echo "$$lang:"; \
-- if $(MSGMERGE) $$lang.old.po $(PACKAGE).pot -o $$lang.po; then \
-- rm -f $$lang.old.po; \
-+ if $(MSGMERGE) $$lang.po $(PACKAGE).pot -o $$lang.new.po; then \
-+ mv -f $$lang.new.po $$lang.po; \
- else \
- echo "msgmerge for $$cat failed!"; \
-- rm -f $$lang.po; \
-- mv $$lang.old.po $$lang.po; \
-+ rm -f $$lang.new.po; \
- fi; \
- done
-+ $(MAKE) update-gmo
-
--POTFILES: POTFILES.in
-- ( if test 'x$(srcdir)' != 'x.'; then \
-- posrcprefix='$(top_srcdir)/'; \
-- else \
-- posrcprefix="../"; \
-- fi; \
-- rm -f $@-t $@ \
-- && (sed -e '/^#/d' -e '/^[ ]*$$/d' \
-- -e "s@.*@ $$posrcprefix& \\\\@" < $(srcdir)/$@.in \
-- | sed -e '$$s/\\$$//') > $@-t \
-- && chmod a-w $@-t \
-- && mv $@-t $@ )
-+update-gmo: Makefile $(GMOFILES)
-+ @:
-
--Makefile: Makefile.in.in ../config.status POTFILES
-- cd .. \
-+Makefile: Makefile.in.in $(top_builddir)/config.status POTFILES.in
-+ cd $(top_builddir) \
- && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \
- $(SHELL) ./config.status
-
-diff -urN parted-1.4.17.orig/po/cat-id-tbl.c parted-1.4.17/po/cat-id-tbl.c
---- parted-1.4.17.orig/po/cat-id-tbl.c Mon Jul 9 20:08:03 2001
-+++ parted-1.4.17/po/cat-id-tbl.c Wed Dec 31 19:00:00 1969
-@@ -1,415 +0,0 @@
--/* Automatically generated by po2tbl.sed from parted.pot. */
--
--#if HAVE_CONFIG_H
--# include <config.h>
--#endif
--
--#include "libgettext.h"
--
--const struct _msg_ent _msg_tbl[] = {
-- {"", 1},
-- {"Could not stat device %s - %s.", 2},
-- {"\
--The sector size on %s is %d bytes. Parted is known not to work properly \
--with drives with sector sizes other than 512 bytes", 3},
-- {"Unable to determine the size of %s (%s)", 4},
-- {"Could not read geometry of %s - %s.", 5},
-- {"Device %s has dodgey geometry.", 6},
-- {"Could not get identity of device %s - %s", 7},
-- {"unknown", 8},
-- {"Unknown SCSI", 9},
-- {"Error initialising SCSI device %s - %s", 10},
-- {"\
--Unable to determine geometry of file/device. You should not use Parted \
--unless you REALLY know what you're doing!", 11},
-- {"DAC960 RAID controller", 12},
-- {"Compaq Smart Array", 13},
-- {"ATARAID Controller", 14},
-- {"Device %s is neither a SCSI nor IDE drive.", 15},
-- {"Unknown", 16},
-- {"ped_device_new() Unsupported device type", 17},
-- {"Error opening %s: %s", 18},
-- {"Unable to open %s read-write (%s). %s has been opened read-only.", 19},
-- {"\
--The kernel was unable to re-read your partition table, so 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.", 20},
-- {"\
--The kernel was unable to re-read the partition table on %s (%s). This means \
--Linux knows nothing about any modifications you made. You should reboot \
--your computer before doing anything with %s.", 21},
-- {"\
--You should reinstall your boot loader before rebooting. Read section 4 of \
--the Parted User documentation for more information.", 22},
-- {"%s during seek for read on %s", 23},
-- {"%s during read on %s", 24},
-- {"%s during write on %s", 25},
-- {"Can't write to %s, because it is opened read-only.", 26},
-- {"%s during seek for write on %s", 27},
-- {"\
--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).", 28},
-- {"\
--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.", 29},
-- {"Invalid partition table on %s - wrong signature %x", 30},
-- {"Invalid partition table - recursive partition on %s.", 31},
-- {"\
--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.", 32},
-- {"Unable to align partition.", 33},
-- {"Invalid signature %x for Mac disk labels.", 34},
-- {"%s is too small for a Mac disk label!", 35},
-- {"Partition map has no partition map entry!", 36},
-- {"Partition %d has an invalid signature %x.", 37},
-- {"Partition %d has an invalid length of 0 bytes!", 38},
-- {"The data region doesn't start at the start of the partition", 39},
-- {"The boot region doesn't start at the start of the partition", 40},
-- {"The partition's boot region doesn't occupy the entire partition.", 41},
-- {"The partition's data region doesn't occupy the entire partition.", 42},
-- {"\
--Weird block size on device descriptor: %d bytes is not divisible by 512.", 43},
-- {"\
--The driver descriptor says the physical block size is %d bytes, but Linux \
--says it is %d bytes.", 44},
-- {"No valid partition map found.", 45},
-- {"\
--Conflicting partition map entry sizes! Entry 1 says it's %d, but entry %d \
--says its %d!", 46},
-- {"Weird - 2 partitions map entries!", 47},
-- {"Can't set non-Linux partitions as a root device.", 48},
-- {"Can't set non-Linux partitions as a swap device.", 49},
-- {"\
--Changing the name of a root or swap partition will prevent Linux from \
--recognising it as such.", 50},
-- {"Can't add another partition - partition map is too small!", 51},
-- {"Invalid partition table on %s", 52},
-- {"\
--Partition %d isn't aligned to cylinder boundaries. Need to add support for \
--this.", 53},
-- {"Can't add another partition.", 54},
-- {"Could not detect file system.", 55},
-- {"Support for opening %s file systems is not implemented yet.", 56},
-- {"Support for creating %s file systems is not implemented yet.", 57},
-- {"Support for checking %s file systems is not implemented yet.", 58},
-- {"Can't copy onto an overlapping partition.", 59},
-- {"\
--Direct support for copying file systems is not yet implemented for %s. \
--However, support for resizing 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.", 60},
-- {"Support for copying %s file systems is not implemented yet.", 61},
-- {"Support for resizing %s file systems is not implemented yet.", 62},
-- {"No get_resize_constraint for %s!", 63},
-- {"The %s file system code doesn't support %s disk labels.", 64},
-- {"Unable to open %s - unrecognised disk label.", 65},
-- {"Creating new %s disklabels is not implemented yet.", 66},
-- {"The code to write the partition table hasn't been written for %s yet", 67},
-- {"%s disk labels do not support extended partitions.", 68},
-- {"Error reading %s (%s) to determine if partition is mounted.", 69},
-- {"Unable to determine if partition is mounted.", 70},
-- {"Can't create a partition outside of the device.", 71},
-- {"\
--Can't add a logical partition to %s, because there is no extended partition.", 72},
-- {"Can't have more than one extended partition on %s", 73},
-- {"Can't add a logical partition outside of the extended partition on %s.", 74},
-- {"The new partition overlaps with another partition.", 75},
-- {"Can't add a primary partition inside an extended partition.", 76},
-- {"%s disk labels don't support logical or extended partitions.", 77},
-- {"\
--Can't resize an extended partition so as to exclude a logical partition.", 78},
-- {"Can't grow a logical partition outside the extended partition.", 79},
-- {"Can't grow a partition onto used space.", 80},
-- {"metadata", 81},
-- {"free", 82},
-- {"extended", 83},
-- {"logical", 84},
-- {"primary", 85},
-- {"boot", 86},
-- {"root", 87},
-- {"swap", 88},
-- {"hidden", 89},
-- {"raid", 90},
-- {"lvm", 91},
-- {"lba", 92},
-- {"Unknown flag partition flag, %d.", 93},
-- {"Information", 94},
-- {"Warning", 95},
-- {"Error", 96},
-- {"Fatal", 97},
-- {"Bug", 98},
-- {"No Implementation", 99},
-- {"Fix", 100},
-- {"Yes", 101},
-- {"No", 102},
-- {"OK", 103},
-- {"Retry", 104},
-- {"Ignore", 105},
-- {"Cancel", 106},
-- {"\
--A bug has been detected in GNU parted. Please email a bug report to bug-\
--parted@gnu.org containing the version (%s) and the following message:", 107},
-- {"Can't have the end before the start!", 108},
-- {"Can't have a partition outside the disk!", 109},
-- {"Attempt to read sectors %ld-%ld outside of partition on %s", 110},
-- {"Attempt to write sectors %ld-%ld outside of partition on %s", 111},
-- {"Out of memory.", 112},
-- {"Inconsistent group descriptors!", 113},
-- {"Filesystem full!", 114},
-- {"\
--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.", 115},
-- {"Invalid superblock. Are you sure this is an ext2 filesystem?", 116},
-- {"Filesystem has errors! You should run e2fsck.", 117},
-- {"Filesystem was not cleanly unmounted! You should e2fsck.", 118},
-- {"Filesystem has incompatible feature enabled", 119},
-- {"Error allocating buffer cache.", 120},
-- {"\
--Found an inode with a incorrect link count. Better go run e2fsck first.", 121},
-- {"Not enough free inodes!", 122},
-- {"Filesystem is too occupied to remove a group!", 123},
-- {"Filesystem has too many allocated inodes to remove a group!", 124},
-- {"Your filesystem is too occupied to resize it to %i blocks. Sorry.", 125},
-- {"\
--Your filesystem has too much occupied inodes to resize it to %i blocks. \
--Sorry.", 126},
-- {"Cross-linked blocks found! better go run e2fsck first!", 127},
-- {"Block %i has no reference? Weird", 128},
-- {"Block %i shouldn't have been marked!", 129},
-- {"\
--The ext2 filesystem passed a basic check. For a more comprehensive check, \
--use the e2fsck program.", 130},
-- {"Sorry, can't move the start of ext2 partitions yet!", 131},
-- {"Ext2 partitions can't be hidden on msdos disk labels.", 132},
-- {"Couldn't flush buffer cache!", 133},
-- {"\
--You need %dM of free space to shrink this partition to this size (you \
--currently have only %dM free)", 134},
-- {"Insane! %d clusters!", 135},
-- {"\
--Cluster start delta = %d, which is not a multiple of the cluster size %d.", 136},
-- {"\
--GNU parted was miscompiled: the FAT boot sector should be 512 bytes. FAT \
--support will be disabled.", 137},
-- {"\
--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.", 138},
-- {"Partition too small for a FAT file system", 139},
-- {"\
--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.", 140},
-- {"Weird: fat_calc_sizes() failed for FAT32!", 141},
-- {"\
--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.", 142},
-- {"There are no possible configurations for this FAT type.", 143},
-- {"\
--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).", 144},
-- {"\
--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).", 145},
-- {"\
--File system is reporting the free space as %d clusters, not %d clusters.", 146},
-- {"\
--There's not enough room in the root directory, for all of the files. Either \
--cancel, or ignore to lose the files.", 147},
-- {"Error writing to the root directory.", 148},
-- {"If leave your file system as FAT16, then you will have no problems.", 149},
-- {"\
--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).", 150},
-- {"\
--If you leave your file system as FAT32, then you will not introduce any new \
--problems.", 151},
-- {"\
--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.", 152},
-- {"%s %s %s", 153},
-- {"Would you like to use FAT32?", 154},
-- {"%s %s", 155},
-- {"\
--The file system can only be resized to this size by converting to FAT16.", 156},
-- {"\
--The file system can only be resized to this size by converting to FAT32.", 157},
-- {"\
--GNU Parted can not resize this partition to this size. We're working on it!", 158},
-- {"File system has an invalid signature for a FAT file systems.", 159},
-- {"File system has an invalid signature for a FAT file system.", 160},
-- {"File system has an invalid sector size for a FAT file system.", 161},
-- {"\
--File system has an invalid number of reserved sectors for a FAT filesystem.", 162},
-- {"File system has an invalid number of FATS.", 163},
-- {"\
--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.", 164},
-- {"\
--Partition size (%ld sectors) and filesystem size (%ld sectors) do not match.", 165},
-- {"FAT boot sector says logical sector size is 0. This is weird. ", 166},
-- {"FAT boot sector says there are no FAT tables. This is weird. ", 167},
-- {"FAT boot sector says clusters are 0 sectors. This is weird. ", 168},
-- {"Filesystem is FAT12, which is unsupported.", 169},
-- {"\
--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", 170},
-- {"\
--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.", 171},
-- {"Bad directory entry for %s: first cluster is the end of file marker.", 172},
-- {"\
--Bad FAT: unterminated chain for %s. You should run dosfsck or scandisk.", 173},
-- {"\
--Bad FAT: cluster %d outside filesystem in chain for %s. You should run \
--dosfsck or scandisk.", 174},
-- {"\
--Bad FAT: cluster %d is cross-linked for %s. You should run dosfsck or \
--scandisk.", 175},
-- {"%s is %dk, but it has is %d clusters (%dk).", 176},
-- {"\
--FAT %d media %x doesn't match the boot sector's media %x. You should \
--probably run scandisk.", 177},
-- {"fat_table_set: cluster %ld outside filesystem", 178},
-- {"fat_table_get: cluster %ld outside filesystem", 179},
-- {"fat_table_alloc_cluster: no free clusters", 180},
-- {"Unrecognised linux swap signature '%10s'.", 181},
-- {"Too many bad pages.", 182},
-- {"\
--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.", 183},
-- {"Linux-swap partitions can not be hidden on msdos disk labels.", 184},
-- {"Linux-swap partitions can not be bootable on pc98 disk labels.", 185},
-- {"HFS partitions can't be hidden on msdos disk labels.", 186},
-- {"displays this help message", 187},
-- {"where necessary, prompts for user intervention", 188},
-- {"never prompts for user intervention", 189},
-- {"displays the version", 190},
-- {"\
--MINOR is the partition number used by Linux. On msdos disk labels, the \
--primary partitions number from 1-4, and logical partitions are 5 onwards.\n", 191},
-- {"LABEL-TYPE is one of: ", 192},
-- {"FLAG is one of: ", 193},
-- {"PART-TYPE is one of: primary, logical, extended\n", 194},
-- {"FS-TYPE is one of: ", 195},
-- {"START and END are in megabytes\n", 196},
-- {"STATE is one of: on, off\n", 197},
-- {"DEVICE is usually /dev/hda or /dev/sda\n", 198},
-- {"NAME is any word you want\n", 199},
-- {"Partition doesn't exist.", 200},
-- {"Source partition doesn't exist.", 201},
-- {"Can't copy extended partitions.", 202},
-- {"Destination partition doesn't exist.", 203},
-- {"Destination partition is being used.", 204},
-- {"Partition(s) on %s are being used.", 205},
-- {"Partition is being used.", 206},
-- {"Unknown filesystem type.", 207},
-- {"Unknown file system type.", 208},
-- {"Can't move extended partitions.", 209},
-- {"Can't move a partition onto itself. Try using resize, perhaps?", 210},
-- {"Disk geometry for %s: 0.000-%.3f megabytes\n", 211},
-- {"Disk label type: %s\n", 212},
-- {"Minor Start End ", 213},
-- {"Type ", 214},
-- {"Filesystem ", 215},
-- {"Name ", 216},
-- {"Flags", 217},
-- {"check", 218},
-- {"check MINOR do a simple check on the filesystem", 219},
-- {"cp", 220},
-- {"\
--cp [FROM-DEVICE] FROM-MINOR TO-MINOR copy filesystem to another \
--partition", 221},
-- {"help", 222},
-- {"help [COMMAND] prints general help, or help on COMMAND", 223},
-- {"mklabel", 224},
-- {"mklabel LABEL-TYPE create a new disklabel (partition table)", 225},
-- {"mkfs", 226},
-- {"\
--mkfs MINOR FS-TYPE make a filesystem FS-TYPE on partititon MINOR", 227},
-- {"mkpart", 228},
-- {"mkpart PART-TYPE [FS-TYPE] START END make a partition", 229},
-- {"\
--mkpart makes a partition without creating a new file system on the \
--partition. FS-TYPE must be specified for data partitions (as opposed to \
--extended partitions). This command is useful if you accidently deleted a \
--partition.\n", 230},
-- {"mkpartfs", 231},
-- {"\
--mkpartfs PART-TYPE FS-TYPE START END make a partition with a filesystem", 232},
-- {"move", 233},
-- {"move MINOR START [END] move partition MINOR", 234},
-- {"name", 235},
-- {"name MINOR NAME name partition MINOR NAME", 236},
-- {"print", 237},
-- {"print display the partition table", 238},
-- {"quit", 239},
-- {"quit exit program", 240},
-- {"resize", 241},
-- {"resize MINOR START END resize filesystem on partition MINOR", 242},
-- {"rm", 243},
-- {"rm MINOR delete partition MINOR", 244},
-- {"select", 245},
-- {"select DEVICE choose the device to edit", 246},
-- {"set", 247},
-- {"set MINOR FLAG STATE change a flag on partition MINOR", 248},
-- {"No device found", 249},
-- {"\
--Copyright (C) 1998, 1999, 2000, 2001 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, but WITHOUT \
--ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or \
--FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for \
--more details.\n", 250},
-- {"\
--Usage: parted [OPTION]... [DEVICE [COMMAND [PARAMETERS]...]...]\n\
--Apply COMMANDs with PARAMETERS to DEVICE. If no COMMAND(s) are given, runs \
--in\n\
--interactive mode.\n", 251},
-- {"\
--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", 252},
-- {"on", 253},
-- {"OPTIONs:", 254},
-- {"COMMANDs:", 255},
-- {"\
--\n\
--Using %s\n", 256},
-- {"\
--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.", 257},
-- {"\
--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.", 258},
--};
--
--int _msg_tbl_length = 258;
-diff -urN parted-1.4.17.orig/po/stamp-cat-id parted-1.4.17/po/stamp-cat-id
---- parted-1.4.17.orig/po/stamp-cat-id Tue Jul 10 04:27:20 2001
-+++ parted-1.4.17/po/stamp-cat-id Wed Dec 31 19:00:00 1969
-@@ -1 +0,0 @@
--timestamp
-diff -urN parted-1.4.17.orig/python/Makefile.am parted-1.4.17/python/Makefile.am
---- parted-1.4.17.orig/python/Makefile.am Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/python/Makefile.am Wed Aug 1 20:24:45 2001
-@@ -0,0 +1,29 @@
-+AUTOMAKE_OPTIONS = 1.4 foreign
-+
-+partedincludedir = -I$(top_srcdir)/include
-+INCLUDES = $(partedincludedir) @PYTHON_INCLUDES@ @INTLINCS@
-+
-+noinst_LTLIBRARIES = libpartedmodule.la
-+libpartedmodule_la_SOURCES = partedmodule.c \
-+ pydevice.c \
-+ pydisk.c \
-+ pygeometry.c \
-+ pyexception.c \
-+ pyfilesystem.c \
-+ pyconstraint.c \
-+ partedmodule.h \
-+ pyconstraint.h \
-+ pydevice.h \
-+ pydisk.h \
-+ pyexception.h \
-+ pyfilesystem.h \
-+ pygeometry.h
-+
-+pythondir = $(pydynmoduledir)
-+python_PROGRAMS = partedmodule.so
-+partedmodule_so_SOURCES =
-+partedmodule_so_LDFLAGS = $(top_builddir)/libparted/libparted.la \
-+ -shared -Wl,-soname,partedmodule.so
-+
-+partedmodule.so: $(libpartedmodule_la_OBJECTS)
-+ $(LINK) -g -o $@ $^ $(partedmodule_so_LDFLAGS);
-diff -urN parted-1.4.17.orig/python/partedmodule.c parted-1.4.17/python/partedmodule.c
---- parted-1.4.17.orig/python/partedmodule.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/python/partedmodule.c Wed Aug 1 20:24:45 2001
-@@ -0,0 +1,334 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include <Python.h>
-+
-+#include "parted/parted.h"
-+
-+#include "partedmodule.h"
-+#include "pydevice.h"
-+#include "pydisk.h"
-+#include "pyexception.h"
-+#include "pygeometry.h"
-+#include "pyfilesystem.h"
-+#include "pyconstraint.h"
-+
-+/* global error object */
-+PyObject *PyPartedError;
-+
-+/* static global variables */
-+static PyObject *PyExceptionHandler;
-+static char *py_exception_string = NULL;
-+
-+/* common functions */
-+int
-+py_ped_exception_string_check (void)
-+{
-+ return (py_exception_string != NULL);
-+}
-+
-+
-+void
-+py_ped_exception_string_clear (void)
-+{
-+ if (py_exception_string != NULL) {
-+ free (py_exception_string);
-+ py_exception_string = NULL;
-+ }
-+}
-+
-+void
-+py_ped_set_error_from_ped_exception (void)
-+{
-+ if (py_exception_string != NULL) {
-+ PyErr_SetString(PyPartedError, py_exception_string);
-+ py_ped_exception_string_clear ();
-+ return;
-+ }
-+ PyErr_SetString(PyPartedError, "unknown error occured");
-+}
-+
-+/* toplevel implementation */
-+
-+static PedExceptionOption
-+py_exception_handler (PedException* ex)
-+{
-+ PyObject * result, * args = NULL;
-+ long rc;
-+ char * type;
-+ char * buf;
-+ int len;
-+
-+ if (py_exception_string != NULL)
-+ free (py_exception_string);
-+
-+ type = ped_exception_get_type_string (ex->type);
-+ len = strlen (type) + strlen (ex->message) + 3;
-+ buf = malloc (len);
-+ snprintf (buf, len, "%s: %s", type, ex->message);
-+ py_exception_string = buf;
-+
-+ if (PyExceptionHandler == NULL) {
-+ return PED_EXCEPTION_UNHANDLED;
-+ }
-+
-+ args = Py_BuildValue("(N)", (PyObject *) py_ped_exception_obj_new (ex));
-+
-+ result = PyEval_CallObject(PyExceptionHandler, args);
-+ Py_XDECREF(args);
-+
-+ if (result == NULL) {
-+ PyErr_Print();
-+ PyErr_Clear();
-+ return PED_EXCEPTION_UNHANDLED;
-+ }
-+
-+ if (!PyInt_Check (result)) {
-+ fprintf (stderr,
-+ "ERROR: python exception handler did not "
-+ "return expected int value\n");
-+ return PED_EXCEPTION_UNHANDLED;
-+ }
-+
-+ rc = PyInt_AsLong (result);
-+ Py_DECREF (result);
-+ return (PedExceptionOption) rc;
-+}
-+
-+static PyObject *
-+py_ped_exception_set_handler (PyObject * self, PyObject * args)
-+{
-+ PyObject *cb;
-+
-+ /* if we already have a callback, releae it */
-+ if (PyExceptionHandler != NULL) {
-+ Py_DECREF (PyExceptionHandler);
-+ PyExceptionHandler = NULL;
-+ }
-+
-+ if (!PyArg_ParseTuple(args, "O", &cb))
-+ return NULL;
-+
-+ if (!PyCallable_Check (cb)) {
-+ PyErr_SetString(PyExc_TypeError, "parameter must be callable");
-+ return NULL;
-+ }
-+ Py_INCREF (cb);
-+ PyExceptionHandler = cb;
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_device_get (PyObject * self, PyObject * args)
-+{
-+ PyPedDevice *d;
-+ PedDevice *dev;
-+ char *path;
-+
-+ if (!PyArg_ParseTuple(args, "s", &path))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if ((dev = ped_device_get (path)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ d = (PyPedDevice *) PyObject_NEW(PyObject, &PyPedDeviceType);
-+ d->dev = dev;
-+ return (PyObject *) d;
-+}
-+
-+static PyObject *
-+py_ped_file_system_type_get (PyObject * self, PyObject * args)
-+{
-+ char *type;
-+ PedFileSystemType *fst;
-+
-+ if (!PyArg_ParseTuple(args, "s", &type)) {
-+ return NULL;
-+ }
-+
-+ if ((fst = ped_file_system_type_get (type)) == NULL) {
-+ PyErr_SetString(PyPartedError, "unknown file system type");
-+ return NULL;
-+ }
-+
-+ return (PyObject *) py_ped_file_system_type_obj_new (fst);
-+}
-+
-+static PyObject *
-+py_ped_file_system_type_get_next (PyObject * self, PyObject * args)
-+{
-+ PyPedFileSystemTypeObj *pyfst = NULL;
-+ PedFileSystemType *fst;
-+
-+ if (!PyArg_ParseTuple(args, "|O!", &PyPedFileSystemTypeType, &pyfst)) {
-+ PyErr_SetString(PyExc_TypeError,
-+ "optional parameter must be a "
-+ "PedFileSystemType");
-+ return NULL;
-+ }
-+
-+ fst = ped_file_system_type_get_next (pyfst ? pyfst->fs_type : NULL);
-+ if (fst)
-+ return (PyObject *) py_ped_file_system_type_obj_new (fst);
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_partition_flag_next (PyObject *obj, PyObject * args)
-+{
-+ int flag, next;
-+
-+ if (!PyArg_ParseTuple(args, "i", &flag))
-+ return NULL;
-+
-+ next = ped_partition_flag_next (flag);
-+
-+ return PyInt_FromLong (next);
-+}
-+
-+static PyObject *
-+py_ped_partition_flag_get_by_name (PyObject *obj, PyObject * args)
-+{
-+ char *name;
-+ int flag;
-+
-+ if (!PyArg_ParseTuple(args, "s", &name))
-+ return NULL;
-+
-+ flag = ped_partition_flag_get_by_name (name);
-+
-+ return PyInt_FromLong (flag);
-+}
-+
-+static PyObject *
-+py_ped_partition_flag_get_name (PyObject *obj, PyObject * args)
-+{
-+ int flag;
-+ const char *name;
-+
-+ if (!PyArg_ParseTuple(args, "i", &flag))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ name = ped_partition_flag_get_name (flag);
-+ if (py_ped_exception_string_check ()) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return PyString_FromString (name);
-+}
-+
-+static struct PyMethodDef PyPedModuleMethods[] = {
-+ { "device_get",
-+ (PyCFunction) py_ped_device_get, METH_VARARGS, NULL },
-+ { "exception_set_handler",
-+ (PyCFunction) py_ped_exception_set_handler,
-+ METH_VARARGS, NULL },
-+ { "file_system_type_get",
-+ (PyCFunction) py_ped_file_system_type_get,
-+ METH_VARARGS, NULL },
-+ { "file_system_type_get_next",
-+ (PyCFunction) py_ped_file_system_type_get_next,
-+ METH_VARARGS, NULL },
-+ { "partition_flag_next",
-+ (PyCFunction) py_ped_partition_flag_next,
-+ METH_VARARGS, NULL },
-+ { "partition_flag_get_by_name",
-+ (PyCFunction) py_ped_partition_flag_get_by_name,
-+ METH_VARARGS, NULL },
-+ { "partition_flag_get_name",
-+ (PyCFunction) py_ped_partition_flag_get_name,
-+ METH_VARARGS, NULL },
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+void initparted(void) {
-+ PyObject *m, *d, *o;
-+
-+ if (!ped_init ())
-+ Py_FatalError("couldn't initialized parted");
-+
-+ m = Py_InitModule("parted", PyPedModuleMethods);
-+ d = PyModule_GetDict(m);
-+
-+ /* enum registration */
-+#define REGISTER_ENUM(val) \
-+ PyDict_SetItemString(d, #val, o=PyInt_FromLong(PED_ ## val)); \
-+ Py_DECREF(o);
-+
-+ REGISTER_ENUM(DEVICE_UNKNOWN);
-+ REGISTER_ENUM(DEVICE_SCSI);
-+ REGISTER_ENUM(DEVICE_IDE);
-+ REGISTER_ENUM(DEVICE_DAC960);
-+ REGISTER_ENUM(DEVICE_CPQARRAY);
-+
-+ REGISTER_ENUM(PARTITION_PRIMARY);
-+ REGISTER_ENUM(PARTITION_LOGICAL);
-+ REGISTER_ENUM(PARTITION_EXTENDED);
-+ REGISTER_ENUM(PARTITION_FREESPACE);
-+ REGISTER_ENUM(PARTITION_METADATA);
-+
-+ REGISTER_ENUM(PARTITION_BOOT);
-+ REGISTER_ENUM(PARTITION_ROOT);
-+ REGISTER_ENUM(PARTITION_SWAP);
-+ REGISTER_ENUM(PARTITION_HIDDEN);
-+ REGISTER_ENUM(PARTITION_RAID);
-+ REGISTER_ENUM(PARTITION_LVM);
-+ REGISTER_ENUM(PARTITION_LBA);
-+
-+ REGISTER_ENUM(PARTITION_FIRST_FLAG);
-+ REGISTER_ENUM(PARTITION_LAST_FLAG);
-+
-+ REGISTER_ENUM(DISK_TYPE_EXTENDED);
-+ REGISTER_ENUM(DISK_TYPE_PARTITION_NAME);
-+
-+ REGISTER_ENUM(EXCEPTION_INFORMATION);
-+ REGISTER_ENUM(EXCEPTION_WARNING);
-+ REGISTER_ENUM(EXCEPTION_ERROR);
-+ REGISTER_ENUM(EXCEPTION_FATAL);
-+ REGISTER_ENUM(EXCEPTION_BUG);
-+ REGISTER_ENUM(EXCEPTION_NO_FEATURE);
-+
-+ REGISTER_ENUM(EXCEPTION_UNHANDLED);
-+ REGISTER_ENUM(EXCEPTION_YES);
-+ REGISTER_ENUM(EXCEPTION_NO);
-+ REGISTER_ENUM(EXCEPTION_OK);
-+ REGISTER_ENUM(EXCEPTION_RETRY);
-+ REGISTER_ENUM(EXCEPTION_IGNORE);
-+ REGISTER_ENUM(EXCEPTION_CANCEL);
-+
-+ REGISTER_ENUM(EXCEPTION_OK_CANCEL);
-+ REGISTER_ENUM(EXCEPTION_YES_NO);
-+ REGISTER_ENUM(EXCEPTION_YES_NO_CANCEL);
-+ REGISTER_ENUM(EXCEPTION_IGNORE_CANCEL);
-+ REGISTER_ENUM(EXCEPTION_RETRY_CANCEL);
-+ REGISTER_ENUM(EXCEPTION_RETRY_IGNORE_CANCEL);
-+ /* end enum registration */
-+
-+ /* register the exception handler marhaller function */
-+ ped_exception_set_handler (py_exception_handler);
-+
-+ /* set up our exception class */
-+ PyPartedError = PyErr_NewException("parted.error", NULL, NULL);
-+ PyDict_SetItemString(d, "error", PyPartedError);
-+ Py_DECREF(PyPartedError);
-+}
-diff -urN parted-1.4.17.orig/python/partedmodule.h parted-1.4.17/python/partedmodule.h
---- parted-1.4.17.orig/python/partedmodule.h Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/python/partedmodule.h Wed Aug 1 20:24:45 2001
-@@ -0,0 +1,25 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#ifndef PARTEDMODULE_H_INCLUDED
-+#define PARTEDMODULE_H_INCLUDED
-+
-+#include <Python.h>
-+
-+extern PyObject *PyPartedError;
-+int py_ped_exception_string_check (void);
-+void py_ped_exception_string_clear (void);
-+extern void py_ped_set_error_from_ped_exception (void);
-+
-+#endif /* PARTEDMODULE_H_INCLUDED */
-diff -urN parted-1.4.17.orig/python/pyconstraint.c parted-1.4.17/python/pyconstraint.c
---- parted-1.4.17.orig/python/pyconstraint.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/python/pyconstraint.c Wed Aug 1 20:24:45 2001
-@@ -0,0 +1,109 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+*/
-+
-+#include "partedmodule.h"
-+#include "pygeometry.h"
-+#include "pyconstraint.h"
-+
-+static void py_ped_constraint_dealloc (PyPedConstraint * c);
-+static PyObject * py_ped_constraint_getattr (PyPedConstraint * c, char * name);
-+
-+static char PyPedConstraintType__doc__[] = "This is the PartEd constraint "
-+ "object";
-+PyTypeObject PyPedConstraintType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedConstraint", /* tp_name */
-+ sizeof(PyPedConstraint), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_constraint_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_constraint_getattr, /* tp_getattr */
-+ 0, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /* tp_hash */
-+ 0, /* tp_call */
-+ 0, /* tp_str */
-+ 0, /* tp_getattro */
-+ 0, /* tp_setattro */
-+ 0, /* tp_as_buffer */
-+ 0L, /* tp_flags */
-+ PyPedConstraintType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+static PyObject * py_ped_constraint_duplicate (PyPedConstraint * c,
-+ PyObject * args);
-+
-+static struct PyMethodDef PyPedConstraintMethods[] = {
-+ { "duplicate",
-+ (PyCFunction) py_ped_constraint_duplicate,
-+ METH_VARARGS, NULL },
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+static void
-+py_ped_constraint_dealloc (PyPedConstraint * c)
-+{
-+ if (!c->borrowed)
-+ ped_constraint_destroy (c->constraint);
-+ Py_XDECREF (c->disk);
-+ PyMem_DEL(c);
-+}
-+
-+static PyObject *
-+py_ped_constraint_duplicate (PyPedConstraint * c, PyObject * args)
-+{
-+ PedConstraint *cst;
-+
-+ cst = ped_constraint_duplicate (c->constraint);
-+ return (PyObject *) py_ped_constraint_obj_new (cst, c->disk, 0);
-+}
-+
-+static PyObject *
-+py_ped_constraint_getattr (PyPedConstraint * c, char * name)
-+{
-+ if (!strcmp (name, "start_range"))
-+ return (PyObject *)
-+ py_ped_geometry_obj_new (c->constraint->start_range,
-+ c->disk, 1);
-+ if (!strcmp (name, "end_range"))
-+ return (PyObject *)
-+ py_ped_geometry_obj_new (c->constraint->end_range,
-+ c->disk, 1);
-+ if (!strcmp (name, "min_size"))
-+ return (PyObject *)
-+ PyLong_FromLongLong (c->constraint->min_size);
-+
-+ return Py_FindMethod (PyPedConstraintMethods, (PyObject *) c, name);
-+}
-+
-+PyPedConstraint *
-+py_ped_constraint_obj_new (PedConstraint *c, PyPedDisk *disk, int borrowed)
-+{
-+ PyPedConstraint *con;
-+
-+ con = (PyPedConstraint *) PyObject_NEW(PyObject, &PyPedConstraintType);
-+ con->constraint = c;
-+ con->borrowed = borrowed;
-+ con->disk = disk;
-+ Py_INCREF (disk);
-+
-+ return con;
-+}
-diff -urN parted-1.4.17.orig/python/pyconstraint.h parted-1.4.17/python/pyconstraint.h
---- parted-1.4.17.orig/python/pyconstraint.h Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/python/pyconstraint.h Wed Aug 1 20:24:45 2001
-@@ -0,0 +1,38 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ *
-+*/
-+
-+#ifndef PYCONSTRAINT_H_INCLUDED
-+#define PYCONSTRAINT_H_INCLUDED
-+
-+#include <Python.h>
-+#include "parted/constraint.h"
-+#include "pydisk.h"
-+
-+typedef struct _PyPedConstraint PyPedConstraint;
-+
-+struct _PyPedConstraint {
-+ PyObject_HEAD;
-+ PedConstraint *constraint;
-+ PyPedDisk *disk;
-+ int borrowed;
-+};
-+
-+extern PyTypeObject PyPedConstraintType;
-+
-+extern PyPedConstraint * py_ped_constraint_obj_new (PedConstraint *c,
-+ PyPedDisk *part,
-+ int borrowed);
-+
-+#endif /* PYCONSTRAINT_H_INCLUDED */
-diff -urN parted-1.4.17.orig/python/pydevice.c parted-1.4.17/python/pydevice.c
---- parted-1.4.17.orig/python/pydevice.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/python/pydevice.c Wed Aug 1 20:24:45 2001
-@@ -0,0 +1,152 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+#include "partedmodule.h"
-+#include "pydevice.h"
-+#include "pydisk.h"
-+
-+static void py_ped_device_dealloc (PyPedDevice * s);
-+static PyObject * py_ped_device_getattr (PyPedDevice * s, char * name);
-+
-+static char PyPedDeviceType__doc__[] = "This is the PartEd device object";
-+PyTypeObject PyPedDeviceType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedDevice", /* tp_name */
-+ sizeof(PyPedDevice), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_device_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_device_getattr, /* tp_getattr */
-+ 0, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /* tp_hash */
-+ 0, /* tp_call */
-+ 0, /* tp_str */
-+ 0, /* tp_getattro */
-+ 0, /* tp_setattro */
-+ 0, /* tp_as_buffer */
-+ 0L, /* tp_flags */
-+ PyPedDeviceType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+static PyObject * py_ped_device_open (PyPedDevice * s, PyObject * args);
-+static PyObject * py_ped_device_close (PyPedDevice * s, PyObject * args);
-+static PyObject * py_ped_device_sync (PyPedDevice * s, PyObject * args);
-+static PyObject * py_ped_disk_open (PyPedDevice * s, PyObject * args);
-+
-+static struct PyMethodDef PyPedDeviceMethods[] = {
-+ { "open", (PyCFunction) py_ped_device_open, METH_VARARGS, NULL },
-+ { "close", (PyCFunction) py_ped_device_close, METH_VARARGS, NULL },
-+ { "sync", (PyCFunction) py_ped_device_sync, METH_VARARGS, NULL },
-+ { "disk_open", (PyCFunction) py_ped_disk_open, METH_VARARGS, NULL },
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+/* device implementation */
-+
-+PyPedDevice * py_ped_device_new (PedDevice *dev)
-+{
-+ PyPedDevice *d;
-+
-+ d = (PyPedDevice *) PyObject_NEW(PyObject, &PyPedDeviceType);
-+ d->dev = dev;
-+ return d;
-+}
-+
-+static void
-+py_ped_device_dealloc (PyPedDevice * s)
-+{
-+ /* s->dev will be destroyed if ped_device_free_all() is called */
-+ /* ped_device_destroy (s->dev); */
-+ PyMem_DEL(s);
-+}
-+
-+static PyObject *
-+py_ped_device_getattr (PyPedDevice * d, char * name)
-+{
-+ if (!strcmp (name, "length"))
-+ return PyLong_FromLongLong (d->dev->length);
-+ else if (!strcmp (name, "model"))
-+ return PyString_FromString (d->dev->model);
-+ else if (!strcmp (name, "path"))
-+ return PyString_FromString (d->dev->path);
-+ else if (!strcmp (name, "sector_size"))
-+ return PyInt_FromLong (d->dev->sector_size);
-+ else if (!strcmp (name, "type"))
-+ return PyInt_FromLong (d->dev->type);
-+ return Py_FindMethod (PyPedDeviceMethods, (PyObject *) d, name);
-+}
-+
-+static PyObject *
-+py_ped_device_open (PyPedDevice * s, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_device_open (s->dev)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_device_close (PyPedDevice * s, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_device_close (s->dev)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_device_sync (PyPedDevice * s, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_device_sync (s->dev)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_disk_open (PyPedDevice * self, PyObject * args)
-+{
-+ PyPedDevice *dev;
-+ PyPedDisk *d;
-+ PedDisk *disk;
-+
-+ py_ped_exception_string_clear ();
-+ if ((disk = ped_disk_open (self->dev)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ d = (PyPedDisk *) PyObject_NEW(PyObject, &PyPedDiskType);
-+ d->disk = disk;
-+ return (PyObject *) d;
-+}
-+
-diff -urN parted-1.4.17.orig/python/pydevice.h parted-1.4.17/python/pydevice.h
---- parted-1.4.17.orig/python/pydevice.h Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/python/pydevice.h Wed Aug 1 20:24:45 2001
-@@ -0,0 +1,33 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#ifndef PYDEVICE_H_INCLUDED
-+#define PYDEVICE_H_INCLUDED
-+
-+#include <Python.h>
-+
-+#include "parted/device.h"
-+
-+extern PyTypeObject PyPedDeviceType;
-+typedef struct _PyPedDevice PyPedDevice;
-+
-+struct _PyPedDevice {
-+ PyObject_HEAD;
-+ PedDevice *dev;
-+};
-+
-+PyPedDevice * py_ped_device_new (PedDevice *dev);
-+
-+#endif /* PYDEVICE_H_INCLUDED */
-+
-diff -urN parted-1.4.17.orig/python/pydisk.c parted-1.4.17/python/pydisk.c
---- parted-1.4.17.orig/python/pydisk.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/python/pydisk.c Wed Aug 1 20:24:45 2001
-@@ -0,0 +1,631 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include "partedmodule.h"
-+#include "pydisk.h"
-+#include "pydevice.h"
-+#include "pygeometry.h"
-+#include "pyfilesystem.h"
-+#include "pyconstraint.h"
-+
-+/* disk python object */
-+static void py_ped_disk_dealloc (PyPedDisk * d);
-+static PyObject * py_ped_disk_getattr (PyPedDisk * d, char * name);
-+
-+static char PyPedDiskType__doc__[] = "This is the PartEd disk object";
-+PyTypeObject PyPedDiskType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedDisk", /* tp_name */
-+ sizeof(PyPedDisk), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_disk_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_disk_getattr, /* tp_getattr */
-+ 0, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /* tp_hash */
-+ 0, /* tp_call */
-+ 0, /* tp_str */
-+ 0, /* tp_getattro */
-+ 0, /* tp_setattro */
-+ 0, /* tp_as_buffer */
-+ 0L, /* tp_flags */
-+ PyPedDiskType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+static PyObject * py_ped_disk_next_partition (PyPedDisk * d, PyObject * args);
-+static PyObject * py_ped_disk_write (PyPedDisk * d, PyObject * args);
-+static PyObject * py_ped_disk_read (PyPedDisk * d, PyObject * args);
-+static PyObject * py_ped_disk_delete_partition (PyPedDisk * d, PyObject * args);
-+static PyObject * py_ped_disk_delete_all (PyPedDisk * d, PyObject * args);
-+static PyObject * py_ped_disk_add_partition (PyPedDisk * d, PyObject * args);
-+static PyObject * py_ped_disk_get_partition (PyPedDisk * d, PyObject * args);
-+static PyObject * py_ped_constraint_any (PyPedDisk * self, PyObject * args);
-+static PyObject * py_ped_geometry_new (PyPedDisk * self, PyObject * args);
-+static PyObject * py_ped_partition_new (PyPedDisk * self, PyObject * args);
-+static PyObject * py_ped_disk_minimize_extended_partition (PyPedDisk * self, PyObject * args);
-+static PyObject * py_ped_disk_maximize_partition (PyPedDisk * self, PyObject * args);
-+static PyObject * py_ped_disk_is_busy (PyPedDisk * d, PyObject * args);
-+
-+static struct PyMethodDef PyPedDiskMethods[] = {
-+ { "next_partition", (PyCFunction) py_ped_disk_next_partition, METH_VARARGS, NULL },
-+ { "read", (PyCFunction) py_ped_disk_read, METH_VARARGS, NULL },
-+ { "write", (PyCFunction) py_ped_disk_write, METH_VARARGS, NULL },
-+ { "delete_partition", (PyCFunction) py_ped_disk_delete_partition, METH_VARARGS, NULL },
-+ { "delete_all", (PyCFunction) py_ped_disk_delete_all, METH_VARARGS, NULL },
-+ { "add_partition", (PyCFunction) py_ped_disk_add_partition, METH_VARARGS, NULL },
-+ { "get_partition", (PyCFunction) py_ped_disk_get_partition, METH_VARARGS, NULL },
-+ { "constraint_any", (PyCFunction) py_ped_constraint_any, METH_VARARGS, NULL },
-+ { "geometry_new", (PyCFunction) py_ped_geometry_new, METH_VARARGS, NULL },
-+ { "partition_new", (PyCFunction) py_ped_partition_new, METH_VARARGS, NULL },
-+ { "minimize_extended_partition", (PyCFunction) py_ped_disk_minimize_extended_partition, METH_VARARGS, NULL },
-+ { "maximize_partition", (PyCFunction) py_ped_disk_maximize_partition, METH_VARARGS, NULL },
-+ { "is_busy", (PyCFunction) py_ped_disk_is_busy, METH_VARARGS, NULL },
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+/* partition python object */
-+
-+static void py_ped_partition_dealloc (PyPedPartition * p);
-+static PyObject * py_ped_partition_getattr (PyPedPartition * p, char * name);
-+
-+static char PyPedPartitionType__doc__[] = "This is the PartEd partition object";
-+PyTypeObject PyPedPartitionType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedPartition", /* tp_name */
-+ sizeof(PyPedPartition), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_partition_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_partition_getattr, /* tp_getattr */
-+ 0, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /* tp_hash */
-+ 0, /* tp_call */
-+ 0, /* tp_str */
-+ 0, /* tp_getattro */
-+ 0, /* tp_setattro */
-+ 0, /* tp_as_buffer */
-+ 0L, /* tp_flags */
-+ PyPedPartitionType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+static PyObject * py_ped_partition_is_flag_available (PyPedPartition *p, PyObject * args);
-+static PyObject * py_ped_partition_set_flag (PyPedPartition * self, PyObject * args);
-+static PyObject * py_ped_partition_get_flag (PyPedPartition * self, PyObject * args);
-+static PyObject * py_ped_partition_is_active (PyPedPartition * self, PyObject * args);
-+static PyObject * py_ped_partition_set_system (PyPedPartition * self, PyObject * args);
-+static PyObject * py_ped_partition_set_name (PyPedPartition * self, PyObject * args);
-+static PyObject * py_ped_partition_get_name (PyPedPartition * self, PyObject * args);
-+static PyObject * py_ped_partition_is_busy (PyPedPartition * self, PyObject * args);
-+
-+static struct PyMethodDef PyPedPartitionMethods[] = {
-+ { "is_flag_available", (PyCFunction) py_ped_partition_is_flag_available, METH_VARARGS, NULL },
-+ { "get_flag", (PyCFunction) py_ped_partition_get_flag, METH_VARARGS, NULL },
-+ { "set_flag", (PyCFunction) py_ped_partition_set_flag, METH_VARARGS, NULL },
-+ { "is_active", (PyCFunction) py_ped_partition_is_active, METH_VARARGS, NULL },
-+ { "set_system", (PyCFunction) py_ped_partition_set_system, METH_VARARGS, NULL },
-+ { "set_name", (PyCFunction) py_ped_partition_set_name, METH_VARARGS, NULL },
-+ { "get_name", (PyCFunction) py_ped_partition_get_name, METH_VARARGS, NULL },
-+ { "is_busy", (PyCFunction) py_ped_partition_is_busy, METH_VARARGS, NULL },
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+/* disk implementation */
-+
-+static void
-+py_ped_disk_dealloc (PyPedDisk * d)
-+{
-+ ped_disk_close (d->disk);
-+ PyMem_DEL(d);
-+}
-+
-+static PyObject *
-+py_ped_disk_getattr (PyPedDisk * d, char * name)
-+{
-+ if (!strcmp (name, "dev"))
-+ return (PyObject *) py_ped_device_new (d->disk->dev);
-+ if (!strcmp (name, "max_primary_partition_count")) {
-+ int num;
-+
-+ py_ped_exception_string_clear ();
-+ num = ped_disk_get_max_primary_partition_count (d->disk);
-+ if (num == 0) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+ return PyInt_FromLong (num);
-+ }
-+ if (!strcmp (name, "extended_partition")) {
-+ PedPartition *ppart;
-+
-+ py_ped_exception_string_clear ();
-+ ppart = ped_disk_extended_partition (d->disk);
-+ if (ppart != NULL)
-+ return (PyObject *) py_ped_partition_obj_new (ppart, d, 1);
-+
-+ if (py_ped_exception_string_check ()) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+ }
-+
-+ return Py_FindMethod (PyPedDiskMethods, (PyObject *) d, name);
-+}
-+
-+static PyObject *
-+py_ped_disk_next_partition (PyPedDisk * d, PyObject * args)
-+{
-+ PyPedPartition *part = NULL;
-+ PedPartition *ppart;
-+
-+ if (!PyArg_ParseTuple(args, "|O!", &PyPedPartitionType, &part)) {
-+ PyErr_SetString(PyExc_TypeError,
-+ "optional parameter must be a PedPartition");
-+ return NULL;
-+ }
-+
-+ ppart = ped_disk_next_partition (d->disk, part ? part->part : NULL);
-+ if (ppart != NULL)
-+ return (PyObject *) py_ped_partition_obj_new (ppart, d, 1);
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_disk_read (PyPedDisk * d, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_disk_write (d->disk)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_disk_write (PyPedDisk * d, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_disk_write (d->disk)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_disk_delete_partition (PyPedDisk * d, PyObject * args)
-+{
-+ PyPedPartition *part;
-+
-+ if (!PyArg_ParseTuple(args, "O!", &PyPedPartitionType, &part)) {
-+ PyErr_SetString(PyExc_TypeError, "PedPartition expected");
-+ return NULL;
-+ }
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_disk_delete_partition (d->disk, part->part)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+ /* the partition structure is freed as part of the
-+ delete_partition call. Protect from the double free
-+ by marking it borrowed */
-+ part->borrowed = 1;
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+
-+static PyObject *
-+py_ped_disk_delete_all (PyPedDisk * d, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_disk_delete_all (d->disk)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_disk_add_partition (PyPedDisk * d, PyObject * args)
-+{
-+ PyPedPartition *part;
-+ PyPedConstraint *constraint;
-+
-+ if (!PyArg_ParseTuple(args, "O!O!", &PyPedPartitionType, &part,
-+ &PyPedConstraintType, &constraint)) {
-+ PyErr_SetString(PyExc_TypeError, "bad argument");
-+ return NULL;
-+ }
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_disk_add_partition (d->disk, part->part,
-+ constraint->constraint)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ /* the disk takes ownership of the data in this partition
-+ when added, protect from double free */
-+ part->borrowed = 1;
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_disk_get_partition_by_sector (PyPedDisk * d, PyObject * args)
-+{
-+ PedPartition *part;
-+ PedSector sect;
-+
-+ if (!PyArg_ParseTuple(args, "L", &sect))
-+ return NULL;
-+
-+ if ((part = ped_disk_get_partition_by_sector (d->disk, sect)) == NULL) {
-+ PyErr_SetString(PyPartedError, "partition not found");
-+ return NULL;
-+ }
-+
-+ return (PyObject *) py_ped_partition_obj_new (part, d, 1);
-+}
-+
-+static PyObject *
-+py_ped_disk_get_partition (PyPedDisk * d, PyObject * args)
-+{
-+ PedPartition *part;
-+ int num;
-+
-+ if (!PyArg_ParseTuple(args, "i", &num))
-+ return NULL;
-+
-+ if ((part = ped_disk_get_partition (d->disk, num)) == NULL) {
-+ PyErr_SetString(PyPartedError, "partition not found");
-+ return NULL;
-+ }
-+
-+ return (PyObject *) py_ped_partition_obj_new (part, d, 1);
-+}
-+
-+static PyObject *
-+py_ped_partition_new (PyPedDisk * self, PyObject * args)
-+{
-+ PyPedFileSystemTypeObj *fs_type;
-+ PedSector start, end;
-+ PedPartition *part;
-+ PedPartitionType type;
-+ PyPedPartition *pypart;
-+
-+ if (!PyArg_ParseTuple(args, "iO!LL",
-+ &type,
-+ &PyPedFileSystemTypeType, &fs_type,
-+ &start, &end)) {
-+ return NULL;
-+ }
-+
-+ py_ped_exception_string_clear ();
-+ part = ped_partition_new (self->disk, type, fs_type->fs_type,
-+ start, end);
-+ if (part == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ pypart = py_ped_partition_obj_new (part, self, 0);
-+
-+ return (PyObject *) pypart;
-+}
-+
-+static PyObject *
-+py_ped_constraint_any (PyPedDisk * self, PyObject * args)
-+{
-+ PyPedDisk *disk;
-+ PedConstraint *constraint;
-+ PyPedConstraint *pyconstraint;
-+
-+ py_ped_exception_string_clear ();
-+ constraint = ped_constraint_any (self->disk);
-+ if (constraint == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ pyconstraint = py_ped_constraint_obj_new (constraint, self, 0);
-+
-+ return (PyObject *) pyconstraint;
-+}
-+
-+static PyObject *
-+py_ped_geometry_new (PyPedDisk * self, PyObject * args)
-+{
-+ PedSector start, length;
-+ PedGeometry *geom;
-+ PyPedGeometry *pygeom;
-+
-+ if (!PyArg_ParseTuple(args, "LL", &start, &length)) {
-+ return NULL;
-+ }
-+
-+ py_ped_exception_string_clear ();
-+ geom = ped_geometry_new (self->disk, start, length);
-+ if (geom == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ pygeom = py_ped_geometry_obj_new (geom, self, 0);
-+ pygeom->disk = self;
-+ Py_INCREF (self);
-+
-+ return (PyObject *) pygeom;
-+}
-+
-+static PyObject *
-+py_ped_disk_minimize_extended_partition (PyPedDisk * self, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_disk_minimize_extended_partition (self->disk)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+
-+}
-+
-+static PyObject *
-+py_ped_disk_maximize_partition (PyPedDisk * self, PyObject * args)
-+{
-+ PyPedPartition *part;
-+ PyPedConstraint *constraint;
-+
-+ if (!PyArg_ParseTuple(args, "O!O!", &PyPedPartitionType, &part,
-+ &PyPedConstraintType, &constraint)) {
-+ return NULL;
-+ }
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_disk_maximize_partition (self->disk, part->part,
-+ constraint->constraint)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_disk_is_busy (PyPedDisk *d, PyObject * args)
-+{
-+ int state;
-+
-+ py_ped_exception_string_clear ();
-+ state = ped_disk_is_busy (d->disk);
-+ if (py_ped_exception_string_check ()) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return PyInt_FromLong (state);
-+}
-+
-+/* partition implementation */
-+
-+PyPedPartition *
-+py_ped_partition_obj_new (PedPartition *part, PyPedDisk *disk, int borrowed)
-+{
-+ PyPedPartition *p;
-+
-+ p = (PyPedPartition *) PyObject_NEW(PyObject, &PyPedPartitionType);
-+ p->part = part;
-+ p->borrowed = borrowed;
-+ p->disk = disk;
-+ Py_INCREF (disk);
-+
-+ return p;
-+}
-+
-+static void
-+py_ped_partition_dealloc (PyPedPartition * p)
-+{
-+ if (!p->borrowed)
-+ ped_partition_destroy (p->part);
-+ Py_XDECREF (p->disk);
-+ PyMem_DEL(p);
-+}
-+
-+static PyObject *
-+py_ped_partition_getattr (PyPedPartition * p, char * name)
-+{
-+ if (!strcmp (name, "num"))
-+ return PyInt_FromLong (p->part->num);
-+ if (!strcmp (name, "type"))
-+ return PyInt_FromLong (p->part->type);
-+ if (!strcmp (name, "type_name"))
-+ return PyString_FromString (
-+ ped_partition_type_get_name (p->part->type));
-+ if (!strcmp (name, "geom"))
-+ return (PyObject *) py_ped_geometry_obj_new (&p->part->geom, p->disk, 1);
-+ if (!strcmp (name, "fs_type")) {
-+ if (p->part->fs_type)
-+ return (PyObject *)
-+ py_ped_file_system_type_obj_new (p->part->fs_type);
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+ }
-+ return Py_FindMethod (PyPedPartitionMethods, (PyObject *) p, name);
-+}
-+
-+static PyObject *
-+py_ped_partition_is_flag_available (PyPedPartition *p, PyObject * args)
-+{
-+ int av, flag;
-+
-+ if (!PyArg_ParseTuple(args, "i", &flag))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ av = ped_partition_is_flag_available (p->part, flag);
-+ if (py_ped_exception_string_check ()) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return PyInt_FromLong (av);
-+}
-+
-+static PyObject *
-+py_ped_partition_set_flag (PyPedPartition *p, PyObject * args)
-+{
-+ int flag, state;
-+
-+ if (!PyArg_ParseTuple(args, "ii", &flag, &state))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_partition_set_flag (p->part, flag, state)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_partition_get_flag (PyPedPartition *p, PyObject * args)
-+{
-+ int flag, state;
-+
-+ if (!PyArg_ParseTuple(args, "i", &flag))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ state = ped_partition_get_flag (p->part, flag);
-+ if (py_ped_exception_string_check ()) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return PyInt_FromLong (state);
-+}
-+
-+
-+static PyObject *
-+py_ped_partition_is_active (PyPedPartition *p, PyObject * args)
-+{
-+ int state;
-+
-+ py_ped_exception_string_clear ();
-+ state = ped_partition_is_active (p->part);
-+ if (py_ped_exception_string_check ()) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return PyInt_FromLong (state);
-+}
-+
-+static PyObject *
-+py_ped_partition_set_system (PyPedPartition *p, PyObject * args)
-+{
-+ PyPedFileSystemTypeObj *fs_type;
-+
-+ if (!PyArg_ParseTuple(args, "O!",
-+ &PyPedFileSystemTypeType, &fs_type))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_partition_set_system (p->part, fs_type->fs_type)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+
-+static PyObject *
-+py_ped_partition_set_name (PyPedPartition *p, PyObject * args)
-+{
-+ char *name;
-+
-+ if (!PyArg_ParseTuple(args, "s", &name))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_partition_set_name (p->part, name)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_partition_get_name (PyPedPartition *p, PyObject * args)
-+{
-+ const char *name;
-+
-+ py_ped_exception_string_clear ();
-+ if ((name = ped_partition_get_name (p->part)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return PyString_FromString (name);
-+}
-+
-+
-+static PyObject *
-+py_ped_partition_is_busy (PyPedPartition *p, PyObject * args)
-+{
-+ int state;
-+
-+ py_ped_exception_string_clear ();
-+ state = ped_partition_is_busy (p->part);
-+ if (py_ped_exception_string_check ()) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return PyInt_FromLong (state);
-+}
-diff -urN parted-1.4.17.orig/python/pydisk.h parted-1.4.17/python/pydisk.h
---- parted-1.4.17.orig/python/pydisk.h Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/python/pydisk.h Wed Aug 1 20:24:45 2001
-@@ -0,0 +1,45 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#ifndef PYDISK_H_INCLUDED
-+#define PYDISK_H_INCLUDED
-+
-+#include <Python.h>
-+
-+#include "parted/disk.h"
-+
-+typedef struct _PyPedDisk PyPedDisk;
-+
-+struct _PyPedDisk {
-+ PyObject_HEAD;
-+ PedDisk *disk;
-+};
-+
-+extern PyTypeObject PyPedDiskType;
-+
-+typedef struct _PyPedPartition PyPedPartition;
-+
-+struct _PyPedPartition {
-+ PyObject_HEAD;
-+ PedPartition *part;
-+ PyPedDisk *disk;
-+ int borrowed;
-+};
-+
-+extern PyTypeObject PyPedPartitionType;
-+
-+extern PyPedPartition * py_ped_partition_obj_new (PedPartition *part, PyPedDisk *disk,
-+ int borrowed);
-+
-+#endif /* PYDISK_H_INCLUDED */
-diff -urN parted-1.4.17.orig/python/pyexception.c parted-1.4.17/python/pyexception.c
---- parted-1.4.17.orig/python/pyexception.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/python/pyexception.c Wed Aug 1 20:24:46 2001
-@@ -0,0 +1,78 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include "pyexception.h"
-+
-+static void py_ped_exception_dealloc (PyPedException * s);
-+static PyObject * py_ped_exception_getattr (PyPedException * s, char * name);
-+
-+static char PyPedExceptionType__doc__[] = "This is the PartEd exception object";
-+PyTypeObject PyPedExceptionType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedException", /* tp_name */
-+ sizeof(PyPedException), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_exception_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_exception_getattr, /* tp_getattr */
-+ 0, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /*tp_hash*/
-+ 0, /*tp_call*/
-+ 0, /*tp_str*/
-+ 0, /*tp_getattro*/
-+ 0, /*tp_setattro*/
-+ 0, /*tp_as_buffer*/
-+ 0L, /*tp_flags*/
-+ PyPedExceptionType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+
-+/* exception implementation */
-+
-+static void
-+py_ped_exception_dealloc (PyPedException * s)
-+{
-+ PyMem_DEL(s);
-+}
-+
-+static PyObject *
-+py_ped_exception_getattr (PyPedException * e, char * name)
-+{
-+ if (!strcmp (name, "message"))
-+ return PyString_FromString (e->ex->message);
-+ else if (!strcmp (name, "type"))
-+ return PyInt_FromLong (e->ex->type);
-+ else if (!strcmp (name, "type_string"))
-+ return PyString_FromString (ped_exception_get_type_string (e->ex->type));
-+ else if (!strcmp (name, "options"))
-+ return PyInt_FromLong (e->ex->options);
-+ return NULL;
-+}
-+
-+PyPedException *
-+py_ped_exception_obj_new (PedException *ex)
-+{
-+ PyPedException *e;
-+
-+ e = (PyPedException *) PyObject_NEW(PyObject, &PyPedExceptionType);
-+ e->ex = ex;
-+ return e;
-+}
-diff -urN parted-1.4.17.orig/python/pyexception.h parted-1.4.17/python/pyexception.h
---- parted-1.4.17.orig/python/pyexception.h Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/python/pyexception.h Wed Aug 1 20:24:46 2001
-@@ -0,0 +1,35 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#ifndef PYEXCEPTION_H_INCLUDED
-+#define PYEXCEPTION_H_INCLUDED
-+
-+#include <Python.h>
-+
-+#include "parted/exception.h"
-+
-+extern PyTypeObject PyPedExceptionType;
-+
-+typedef struct _PyPedException PyPedException;
-+
-+struct _PyPedException {
-+ PyObject_HEAD;
-+ PedException *ex;
-+};
-+
-+PyPedException *
-+py_ped_exception_obj_new (PedException *ex);
-+
-+#endif /* PYEXCEPTION_H_INCLUDED */
-+
-diff -urN parted-1.4.17.orig/python/pyfilesystem.c parted-1.4.17/python/pyfilesystem.c
---- parted-1.4.17.orig/python/pyfilesystem.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/python/pyfilesystem.c Wed Aug 1 20:24:46 2001
-@@ -0,0 +1,228 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include "partedmodule.h"
-+
-+#include "pyfilesystem.h"
-+#include "pyconstraint.h"
-+#include "pygeometry.h"
-+
-+/* filesystem python object */
-+
-+static void py_ped_file_system_dealloc (PyPedFileSystem* fs);
-+static PyObject * py_ped_file_system_getattr (PyPedFileSystem * fs, char * name);
-+
-+static char PyPedFileSystemType__doc__[] = "This is the PartEd filesystem object";
-+PyTypeObject PyPedFileSystemType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedFileSystem", /* tp_name */
-+ sizeof(PyPedFileSystem), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_file_system_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_file_system_getattr, /* tp_getattr */
-+ 0, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /* tp_hash */
-+ 0, /* tp_call */
-+ 0, /* tp_str */
-+ 0, /* tp_getattro */
-+ 0, /* tp_setattro */
-+ 0, /* tp_as_buffer */
-+ 0L, /* tp_flags */
-+ PyPedFileSystemType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+static PyObject * py_ped_file_system_check (PyPedFileSystem * fs, PyObject * args);
-+static PyObject * py_ped_file_system_copy (PyPedFileSystem * fs, PyObject * args);
-+static PyObject * py_ped_file_system_resize (PyPedFileSystem * fs, PyObject * args);
-+static PyObject * py_ped_file_system_get_resize_constraint (PyPedFileSystem * fs, PyObject * args);
-+
-+static struct PyMethodDef PyPedFileSystemMethods[] = {
-+ { "check", (PyCFunction) py_ped_file_system_check, METH_VARARGS, NULL },
-+ { "copy", (PyCFunction) py_ped_file_system_copy, METH_VARARGS, NULL },
-+ { "resize", (PyCFunction) py_ped_file_system_resize, METH_VARARGS, NULL },
-+ { "get_resize_constraint", (PyCFunction) py_ped_file_system_get_resize_constraint, METH_VARARGS, NULL },
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+
-+/* file system type python object */
-+
-+static void py_ped_file_system_type_dealloc (PyPedFileSystemTypeObj* fst);
-+static PyObject * py_ped_file_system_type_getattr (PyPedFileSystemTypeObj* fst, char * name);
-+
-+static char PyPedFileSystemTypeType__doc__[] = "This is the PartEd filesystem object";
-+PyTypeObject PyPedFileSystemTypeType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedFileSystemType", /* tp_name */
-+ sizeof(PyPedFileSystemType), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_file_system_type_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_file_system_type_getattr, /* tp_getattr */
-+ 0, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /* tp_hash */
-+ 0, /* tp_call */
-+ 0, /* tp_str */
-+ 0, /* tp_getattro */
-+ 0, /* tp_setattro */
-+ 0, /* tp_as_buffer */
-+ 0L, /* tp_flags */
-+ PyPedFileSystemTypeType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+static struct PyMethodDef PyPedFileSystemTypeMethods[] = {
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+/*
-+ * filesystem implementation
-+ */
-+
-+PyPedFileSystem *
-+py_ped_file_system_obj_new (PedFileSystem *filesys,
-+ PyPedGeometry *geom)
-+{
-+ PyPedFileSystem *fs;
-+
-+ fs = (PyPedFileSystem *) PyObject_NEW(PyObject, &PyPedFileSystemType);
-+ fs->fs = filesys;
-+ fs->geom = geom;
-+ Py_INCREF (geom);
-+ return fs;
-+}
-+
-+static void
-+py_ped_file_system_dealloc (PyPedFileSystem * fs)
-+{
-+ ped_file_system_close (fs->fs);
-+ Py_XDECREF (fs->geom);
-+ PyMem_DEL(fs);
-+}
-+
-+static PyObject *
-+py_ped_file_system_getattr (PyPedFileSystem * fs, char * name)
-+{
-+ if (!strcmp (name, "type"))
-+ return PyString_FromString (fs->fs->type->name);
-+ if (!strcmp (name, "geom"))
-+ return (PyObject *) py_ped_geometry_obj_new (fs->fs->geom, fs->geom->disk, 1);
-+ return Py_FindMethod (PyPedFileSystemMethods, (PyObject *) fs, name);
-+}
-+
-+static PyObject *
-+py_ped_file_system_check (PyPedFileSystem * fs, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_file_system_check (fs->fs)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_file_system_copy (PyPedFileSystem * fs, PyObject * args)
-+{
-+ PyPedGeometry *geom;
-+
-+ if (!PyArg_ParseTuple(args, "O!", &PyPedGeometryType, &geom))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_file_system_copy (fs->fs, geom->geom)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_file_system_resize (PyPedFileSystem * fs, PyObject * args)
-+{
-+ PyPedGeometry *geom;
-+
-+ if (!PyArg_ParseTuple(args, "O!", &PyPedGeometryType, &geom))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_file_system_resize (fs->fs, geom->geom)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_file_system_get_resize_constraint (PyPedFileSystem * fs, PyObject * args)
-+{
-+ PedConstraint *constraint;
-+
-+ py_ped_exception_string_clear ();
-+ if ((constraint = ped_file_system_get_resize_constraint (fs->fs)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return (PyObject *) py_ped_constraint_obj_new (constraint, fs->geom->disk, 0);
-+}
-+
-+/*
-+ * file system type implementation
-+ */
-+
-+
-+PyPedFileSystemTypeObj *
-+py_ped_file_system_type_obj_new (const PedFileSystemType *fs_type)
-+{
-+ PyPedFileSystemTypeObj *fst;
-+
-+ fst = (PyPedFileSystemTypeObj *) PyObject_NEW(PyObject, &PyPedFileSystemTypeType);
-+ fst->fs_type = fs_type;
-+ return fst;
-+}
-+
-+static void
-+py_ped_file_system_type_dealloc (PyPedFileSystemTypeObj* fst)
-+{
-+ PyMem_DEL(fst);
-+}
-+
-+static PyObject *
-+py_ped_file_system_type_getattr (PyPedFileSystemTypeObj * fst, char * name)
-+{
-+ if (!strcmp (name, "name"))
-+ return PyString_FromString (fst->fs_type->name);
-+ return NULL;
-+}
-diff -urN parted-1.4.17.orig/python/pyfilesystem.h parted-1.4.17/python/pyfilesystem.h
---- parted-1.4.17.orig/python/pyfilesystem.h Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/python/pyfilesystem.h Wed Aug 1 20:24:46 2001
-@@ -0,0 +1,49 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#ifndef PYFILESYSTEM_H_INCLUDED
-+#define PYFILESYSTEM_H_INCLUDED
-+
-+#include <Python.h>
-+#include "parted/disk.h"
-+#include "pygeometry.h"
-+
-+typedef struct _PyPedFileSystem PyPedFileSystem;
-+
-+struct _PyPedFileSystem {
-+ PyObject_HEAD;
-+ PedFileSystem* fs;
-+ PyPedGeometry *geom;
-+};
-+
-+extern PyTypeObject PyPedFileSystemType;
-+
-+PyPedFileSystem *
-+py_ped_file_system_obj_new (PedFileSystem* fs,
-+ PyPedGeometry *geom);
-+
-+typedef struct _PyPedFileSystemTypeObj PyPedFileSystemTypeObj;
-+
-+struct _PyPedFileSystemTypeObj {
-+ PyObject_HEAD;
-+ const PedFileSystemType* fs_type;
-+};
-+
-+extern PyTypeObject PyPedFileSystemTypeType;
-+
-+PyPedFileSystemTypeObj*
-+py_ped_file_system_type_obj_new (const PedFileSystemType* fs_type);
-+
-+#endif /* PYFILESYSTEM_H_INCLUDED */
-+
-diff -urN parted-1.4.17.orig/python/pygeometry.c parted-1.4.17/python/pygeometry.c
---- parted-1.4.17.orig/python/pygeometry.c Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/python/pygeometry.c Wed Aug 1 20:24:46 2001
-@@ -0,0 +1,245 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#include "partedmodule.h"
-+#include "pygeometry.h"
-+#include "pyfilesystem.h"
-+
-+static void py_ped_geometry_dealloc (PyPedGeometry * g);
-+static PyObject * py_ped_geometry_getattr (PyPedGeometry * g, char * name);
-+static int py_ped_geometry_setattr (PyPedGeometry * g, char * name, PyObject *value);
-+
-+static char PyPedGeometryType__doc__[] = "This is the PartEd geometry object";
-+PyTypeObject PyPedGeometryType = {
-+ PyObject_HEAD_INIT(&PyType_Type)
-+ 0, /* ob_size */
-+ "PedGeometry", /* tp_name */
-+ sizeof(PyPedGeometry), /* tp_size */
-+ 0, /* tp_itemsize */
-+ (destructor) py_ped_geometry_dealloc, /* tp_dealloc */
-+ 0, /* tp_print */
-+ (getattrfunc) py_ped_geometry_getattr, /* tp_getattr */
-+ (setattrfunc) py_ped_geometry_setattr, /* tp_setattr */
-+ 0, /* tp_compare */
-+ 0, /* tp_repr */
-+ 0, /* tp_as_number */
-+ 0, /* tp_as_sequence */
-+ 0, /* tp_as_mapping */
-+ 0, /* tp_hash */
-+ 0, /* tp_call */
-+ 0, /* tp_str */
-+ 0, /* tp_getattro */
-+ 0, /* tp_setattro */
-+ 0, /* tp_as_buffer */
-+ 0L, /* tp_flags */
-+ PyPedGeometryType__doc__,
-+ 0L,0L,0L,0L
-+};
-+
-+/* geometry implementation */
-+
-+PyPedGeometry *
-+py_ped_geometry_obj_new (PedGeometry* geom, PyPedDisk *disk, int borrowed)
-+{
-+ PyPedGeometry *g;
-+
-+ g = (PyPedGeometry *) PyObject_NEW (PyObject, &PyPedGeometryType);
-+ g->geom = geom;
-+ g->borrowed = borrowed;
-+ g->disk = disk;
-+ Py_INCREF (disk);
-+ return g;
-+}
-+
-+static void
-+py_ped_geometry_dealloc (PyPedGeometry * g)
-+{
-+ if (!g->borrowed)
-+ ped_geometry_destroy (g->geom);
-+ Py_XDECREF (g->disk);
-+ PyMem_DEL(g);
-+}
-+
-+static PyObject *
-+py_ped_file_system_open (PyPedGeometry * self, PyObject * args)
-+{
-+ PedFileSystem *fs;
-+ PyPedFileSystem *pyfs;
-+
-+ py_ped_exception_string_clear ();
-+ if ((fs = ped_file_system_open (self->geom)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ pyfs = py_ped_file_system_obj_new (fs, self);
-+ return (PyObject *) pyfs;
-+}
-+
-+static PyObject *
-+py_ped_file_system_probe (PyPedGeometry * self, PyObject * args)
-+{
-+ PedFileSystemType *fst;
-+
-+ py_ped_exception_string_clear ();
-+ if ((fst = ped_file_system_probe (self->geom)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return (PyObject *) py_ped_file_system_type_obj_new (fst);
-+}
-+
-+static PyObject *
-+py_ped_file_system_create (PyPedGeometry * self, PyObject * args)
-+{
-+ PedFileSystem *fs;
-+ PyPedFileSystemTypeObj *fs_type;
-+ PyPedFileSystem *pyfs;
-+
-+ if (!PyArg_ParseTuple(args, "O!",
-+ &PyPedFileSystemTypeType, &fs_type))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if ((fs = ped_file_system_create (self->geom, fs_type->fs_type)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ pyfs = py_ped_file_system_obj_new (fs, self);
-+ return (PyObject *) pyfs;
-+}
-+
-+
-+static PyObject *
-+py_ped_file_system_clobber (PyPedGeometry * self, PyObject * args)
-+{
-+ py_ped_exception_string_clear ();
-+ if (!ped_file_system_clobber (self->geom)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_geometry_set_end (PyPedGeometry * self, PyObject * args)
-+{
-+ PedSector end;
-+
-+ if (!PyArg_ParseTuple(args, "L", &end))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_geometry_set_end (self->geom, end)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+
-+static PyObject *
-+py_ped_geometry_set_start (PyPedGeometry * self, PyObject * args)
-+{
-+ PedSector start;
-+
-+ if (!PyArg_ParseTuple(args, "L", &start))
-+ return NULL;
-+
-+ py_ped_exception_string_clear ();
-+ if (!ped_geometry_set_start (self->geom, start)) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ Py_INCREF(Py_None);
-+ return Py_None;
-+}
-+
-+static PyObject *
-+py_ped_geometry_duplicate (PyPedGeometry * self, PyObject * args)
-+{
-+ PedGeometry *geom;
-+
-+ py_ped_exception_string_clear ();
-+ if ((geom = ped_geometry_duplicate (self->geom)) == NULL) {
-+ py_ped_set_error_from_ped_exception ();
-+ return NULL;
-+ }
-+
-+ return (PyObject *) py_ped_geometry_obj_new (geom, self->disk, 0);
-+}
-+
-+static struct PyMethodDef PyPedGeometryMethods[] = {
-+ { "file_system_open",
-+ (PyCFunction) py_ped_file_system_open, METH_VARARGS, NULL },
-+ { "file_system_probe",
-+ (PyCFunction) py_ped_file_system_probe, METH_VARARGS, NULL },
-+ { "file_system_create",
-+ (PyCFunction) py_ped_file_system_create, METH_VARARGS, NULL },
-+ { "file_system_clobber",
-+ (PyCFunction) py_ped_file_system_clobber, METH_VARARGS, NULL },
-+ { "set_start",
-+ (PyCFunction) py_ped_geometry_set_start, METH_VARARGS, NULL },
-+ { "set_end",
-+ (PyCFunction) py_ped_geometry_set_end, METH_VARARGS, NULL },
-+ { "duplicate",
-+ (PyCFunction) py_ped_geometry_duplicate, METH_VARARGS, NULL },
-+
-+ { NULL, NULL, 0, NULL }
-+};
-+
-+static PyObject *
-+py_ped_geometry_getattr (PyPedGeometry * g, char * name)
-+{
-+
-+#define RETURN_GEOM_VALUE(var) \
-+ if (!strcmp (name, #var)) \
-+ return PyLong_FromLongLong (g->geom->var)
-+
-+ RETURN_GEOM_VALUE(start);
-+ RETURN_GEOM_VALUE(end);
-+ RETURN_GEOM_VALUE(length);
-+
-+ return Py_FindMethod (PyPedGeometryMethods, (PyObject *) g, name);
-+}
-+
-+static int
-+py_ped_geometry_setattr (PyPedGeometry * g, char * name, PyObject *value)
-+{
-+#define SET_GEOM_VALUE(var) \
-+ if (!strcmp (name, #var)) { \
-+ if (!PyLong_Check (value)) { \
-+ PyErr_SetString(PyExc_TypeError, \
-+ "expected long long"); \
-+ return -1; \
-+ } \
-+ g->geom->var = PyLong_AsLongLong (value); \
-+ return 0; \
-+ }
-+ SET_GEOM_VALUE(start);
-+ SET_GEOM_VALUE(end);
-+ SET_GEOM_VALUE(length);
-+
-+ PyErr_SetString( PyExc_AttributeError, "unknown attribute" );
-+ return -1;
-+}
-+
-+
-diff -urN parted-1.4.17.orig/python/pygeometry.h parted-1.4.17/python/pygeometry.h
---- parted-1.4.17.orig/python/pygeometry.h Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/python/pygeometry.h Wed Aug 1 20:24:46 2001
-@@ -0,0 +1,37 @@
-+/* -*- Mode: c; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*-
-+ * Matt Wilson <msw@redhat.com>
-+ *
-+ * Copyright 2000 Red Hat, Inc.
-+ *
-+ * This software may be freely redistributed under the terms of the GNU
-+ * library public license.
-+ *
-+ * You should have received a copy of the GNU Library Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
-+ *
-+ */
-+
-+#ifndef PYGEOMETRY_H_INCLUDED
-+#define PYGEOMETRY_H_INCLUDED
-+
-+#include <Python.h>
-+
-+#include "pydisk.h"
-+
-+typedef struct _PyPedGeometry PyPedGeometry;
-+
-+struct _PyPedGeometry {
-+ PyObject_HEAD;
-+ PedGeometry* geom;
-+ PyPedDisk *disk;
-+ int borrowed;
-+};
-+
-+extern PyTypeObject PyPedGeometryType;
-+
-+PyPedGeometry *
-+py_ped_geometry_obj_new (PedGeometry* geom, PyPedDisk *disk, int borrowed);
-+
-+#endif /* PYGEOMETRY_H_INCLUDED */
-+
-diff -urN parted-1.4.17.orig/python/test.py parted-1.4.17/python/test.py
---- parted-1.4.17.orig/python/test.py Wed Dec 31 19:00:00 1969
-+++ parted-1.4.17/python/test.py Wed Aug 1 20:24:46 2001
-@@ -0,0 +1,128 @@
-+#!/usr/bin/env python
-+
-+import sys
-+for dir in ('.', ''):
-+ try:
-+ sys.path.remove(dir)
-+ except ValueError:
-+ pass
-+sys.path = [ ".libs" ] + sys.path
-+
-+import parted
-+
-+def get_flags (part):
-+ string=""
-+ if not part.is_active ():
-+ return string
-+ first=1
-+ flag = parted.partition_flag_next (0)
-+ while flag:
-+ if part.get_flag (flag):
-+ string = string + parted.partition_flag_get_name (flag)
-+ if first:
-+ first = 0
-+ else:
-+ string = string + ", "
-+ flag = parted.partition_flag_next (flag)
-+ return string
-+
-+def do_print (disk):
-+ goodparts = { parted.PARTITION_PRIMARY : None,
-+ parted.PARTITION_EXTENDED : None,
-+ parted.PARTITION_LOGICAL : None,
-+ parted.PARTITION_FREESPACE : None }
-+
-+ print ("%s: %s length %ld, maximum "
-+ "primary partitions: %d" % (disk.dev.path, disk.dev.model,
-+ disk.dev.length, disk.max_primary_partition_count))
-+
-+ part = disk.next_partition()
-+ if part:
-+ print "Device Type Filesystem Start End Length Flags"
-+ print "------ ---- ---------- ----- --- ------ -----"
-+ while part:
-+ if goodparts.has_key(part.type):
-+ device = ""
-+ fs_type_name = ""
-+ if part.num > 0:
-+ device = "%s%d" % (disk.dev.path,
-+ part.num)
-+ if part.fs_type:
-+ fs_type_name = part.fs_type.name
-+ flags = get_flags (part)
-+ print ("%-9s %-12s %-12s %-10ld %-10ld %-10ld %7s"
-+ % (device, part.type_name, fs_type_name,
-+ part.geom.start, part.geom.end, part.geom.length,
-+ flags))
-+ part = disk.next_partition(part)
-+ print
-+
-+def exception_handler(exception):
-+ print "%s: %s" % (exception.type_string, exception.message)
-+ return parted.EXCEPTION_UNHANDLED
-+
-+parted.exception_set_handler (exception_handler)
-+dev = parted.device_get ('/tmp/fstest')
-+disk = dev.disk_open ()
-+
-+do_print (disk)
-+part = disk.get_partition (0)
-+fst = part.geom.file_system_probe ()
-+print "%s filesystem probed on device %s%d" % (fst.name,
-+ disk.dev.path,
-+ part.num)
-+
-+fs = part.geom.file_system_open ()
-+fs.check()
-+const = fs.get_resize_constraint()
-+print "minimum size for this filesystem is %d sectors" % const.min_size
-+print "start range from %d to %d" % (const.start_range.start, const.start_range.end)
-+print "end range from %d to %d" % (const.end_range.start, const.end_range.end)
-+
-+new_end = fs.geom.duplicate()
-+#new_end.set_end (const.min_size + 512)
-+new_end.set_end (const.end_range.end)
-+fs.resize (new_end)
-+
-+def foo():
-+ disk.delete_all ()
-+ do_print (disk)
-+
-+ fs_type = parted.file_system_type_get ("ext2")
-+
-+ sections = disk.dev.length / 4
-+
-+ # add a partition
-+ newp = disk.partition_new (parted.PARTITION_PRIMARY,
-+ fs_type, 0L, sections - 1)
-+ newp.set_flag (parted.PARTITION_RAID, 1)
-+ constraint = disk.constraint_any ()
-+ disk.add_partition (newp, constraint)
-+ do_print (disk)
-+
-+ # add another...
-+ newp = disk.partition_new (parted.PARTITION_PRIMARY,
-+ fs_type, sections, 2 * sections - 1)
-+ newp.set_flag (parted.PARTITION_RAID, 1)
-+ constraint = disk.constraint_any ()
-+ disk.add_partition (newp, constraint)
-+ do_print (disk)
-+
-+ # another
-+ newp = disk.partition_new (parted.PARTITION_PRIMARY,
-+ fs_type, 2 * sections, 3 * sections - 1)
-+ newp.set_flag (parted.PARTITION_RAID, 1)
-+ constraint = disk.constraint_any ()
-+ disk.add_partition (newp, constraint)
-+ do_print (disk)
-+
-+ # another...
-+ newp = disk.partition_new (parted.PARTITION_PRIMARY,
-+ fs_type, 3 * sections, 4 * sections - 1)
-+ newp.set_flag (parted.PARTITION_RAID, 1)
-+ constraint = disk.constraint_any ()
-+ disk.add_partition (newp, constraint)
-+ do_print (disk)
-+
-+ disk.write()
-+
diff --git a/sys-apps/parted/parted-1.4.14-r1.ebuild b/sys-apps/parted/parted-1.4.14-r1.ebuild
deleted file mode 100644
index d09cb0fd0a89..000000000000
--- a/sys-apps/parted/parted-1.4.14-r1.ebuild
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright 1999-2000 Gentoo Technologies, Inc.
-# Distributed under the terms of the GNU General Public License, v2 or later
-# Author Peter Gavin <pete@gentoo.org>
-# $Header: /var/cvsroot/gentoo-x86/sys-apps/parted/parted-1.4.14-r1.ebuild,v 1.2 2001/06/24 20:18:20 achim Exp $
-
-#P=
-A=${P}.tar.gz
-S=${WORKDIR}/${P}
-DESCRIPTION="an advanced partition modification system"
-SRC_URI="ftp://ftp.gnu.org/gnu/${PN}/${A}"
-HOMEPAGE="http://www.gnu.org/software/${PN}"
-
-RDEPEND="virtual/glibc
- >=sys-apps/e2fsprogs-1.19-r2
- readline? ( >=sys-libs/readline-4.1-r2 )
- nls? ( sys-devel/gettext-0.10.38 )
- python? ( >=dev-lang/python-2.0 )"
-
-DEPEND="${RDEPEND}
- sys-devel/autoconf
- sys-devel/automake"
-
-src_unpack() {
- unpack ${A}
- cd ${S}
- try patch -p1 < ${FILESDIR}/${PF}-python-gentoo.diff
- try aclocal
- try autoconf
- try automake
-}
-
-src_compile() {
- if [ "`use readline`" ]
- then
- myconf="${myconf} --with-readline"
- fi
- if [ "`use python`" ]
- then
- myconf="${myconf} --with-python"
- fi
- try PYTHON=/usr/bin/python ./configure --prefix=/usr --target=${CHOST} ${myconf}
- try make
-}
-
-src_install () {
- try make DESTDIR=${D} install
- dodoc ABOUT-NLS AUTHORS BUGS COPYING ChangeLog NEWS README THANKS TODO
- cd doc ; docinto doc
- dodoc API COPYING.DOC FAT USER USER.jp
-}
-
diff --git a/sys-apps/parted/parted-1.4.14-r2.ebuild b/sys-apps/parted/parted-1.4.14-r2.ebuild
deleted file mode 100644
index 59e7edc5dc45..000000000000
--- a/sys-apps/parted/parted-1.4.14-r2.ebuild
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright 1999-2000 Gentoo Technologies, Inc.
-# Distributed under the terms of the GNU General Public License, v2 or later
-# Author Peter Gavin <pete@gentoo.org>
-# $Header: /var/cvsroot/gentoo-x86/sys-apps/parted/parted-1.4.14-r2.ebuild,v 1.1 2001/08/04 18:22:45 pete Exp $
-
-#P=
-A=${P}.tar.gz
-S=${WORKDIR}/${P}
-DESCRIPTION="an advanced partition modification system"
-SRC_URI="ftp://ftp.gnu.org/gnu/${PN}/${A}"
-HOMEPAGE="http://www.gnu.org/software/${PN}"
-
-RDEPEND="virtual/glibc
- >=sys-apps/e2fsprogs-1.19-r2
- readline? ( >=sys-libs/readline-4.1-r2 )
- nls? ( sys-devel/gettext-0.10.38 )
- python? ( >=dev-lang/python-2.0 )"
-
-DEPEND="${RDEPEND}
- sys-devel/autoconf
- sys-devel/automake
- sys-devel/libtool"
-
-src_unpack() {
- unpack ${A}
- cd ${S}
- try patch -p1 < ${FILESDIR}/${PF}-gentoo.diff
- echo ">>> Running autoheader..."
- try autoheader
- echo ">>> Running libtoolize..."
- try libtoolize -c --force
- echo ">>> Running aclocal..."
- try aclocal
- echo ">>> Running autoconf..."
- try autoconf
- echo ">>> Running automake..."
- try automake
-}
-
-src_compile() {
- if [ "`use readline`" ]
- then
- myconf="${myconf} --with-readline"
- fi
- if [ "`use python`" ]
- then
- myconf="${myconf} --with-python"
- fi
- try PYTHON=/usr/bin/python ./configure --prefix=/usr --target=${CHOST} ${myconf}
- try make
-}
-
-src_install () {
- try make DESTDIR=${D} install
- if [ -z "`use bootcd`" ]
- then
- dodoc ABOUT-NLS AUTHORS BUGS COPYING ChangeLog NEWS README THANKS TODO
- cd doc ; docinto doc
- dodoc API COPYING.DOC FAT USER USER.jp
- else
- rm -rf ${D}/usr/share/aclocal ${D}/usr/include
- fi
-}
diff --git a/sys-apps/parted/parted-1.4.14.ebuild b/sys-apps/parted/parted-1.4.14.ebuild
deleted file mode 100644
index fcd4cdc7f2b0..000000000000
--- a/sys-apps/parted/parted-1.4.14.ebuild
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 1999-2000 Gentoo Technologies, Inc.
-# Distributed under the terms of the GNU General Public License, v2 or later
-# Author Peter Gavin <pete@gentoo.org>
-# $Header: /var/cvsroot/gentoo-x86/sys-apps/parted/parted-1.4.14.ebuild,v 1.4 2001/06/06 14:40:04 pete Exp $
-
-#P=
-A=${P}.tar.gz
-S=${WORKDIR}/${P}
-DESCRIPTION="an advanced partition modification system"
-SRC_URI="ftp://ftp.gnu.org/gnu/${PN}/${A}"
-HOMEPAGE="http://www.gnu.org/software/${PN}"
-
-DEPEND="virtual/glibc
- >=sys-apps/e2fsprogs-1.19-r2
- readline? ( sys-libs/readline-4.2 )
- nls? ( sys-devel/gettext-0.10.38-r2 )"
-
-src_compile() {
- try ./configure --prefix=/usr --target=${CHOST}
- try make
-}
-
-src_install () {
- try make DESTDIR=${D} install
- dodoc ABOUT-NLS AUTHORS BUGS COPYING ChangeLog NEWS README THANKS TODO
- cd doc ; docinto doc
- dodoc API COPYING.DOC FAT USER USER.jp
-}
-
diff --git a/sys-apps/parted/parted-1.4.17.ebuild b/sys-apps/parted/parted-1.4.17.ebuild
deleted file mode 100644
index 0b27895daed0..000000000000
--- a/sys-apps/parted/parted-1.4.17.ebuild
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright 1999-2000 Gentoo Technologies, Inc.
-# Distributed under the terms of the GNU General Public License, v2 or later
-# Author Peter Gavin <pete@gentoo.org>
-# $Header: /var/cvsroot/gentoo-x86/sys-apps/parted/parted-1.4.17.ebuild,v 1.3 2001/11/17 07:35:22 drobbins Exp $
-
-#P=
-A=${P}.tar.gz
-S=${WORKDIR}/${P}
-DESCRIPTION="an advanced partition modification system"
-SRC_URI="ftp://ftp.gnu.org/gnu/${PN}/${A}"
-HOMEPAGE="http://www.gnu.org/software/${PN}"
-
-RDEPEND="virtual/glibc
- >=sys-apps/e2fsprogs-1.19-r2
- readline? ( >=sys-libs/readline-4.1-r2 )
- nls? ( sys-devel/gettext-0.10.38 )
- python? ( >=dev-lang/python-2.0 )"
-
-DEPEND="${RDEPEND}"
-
-src_unpack() {
- unpack ${A}
- cd ${S}
-
- # gettext was totally hosed in this package, so I had to redo it.
- # I also added the python module
- try patch -p1 < ${FILESDIR}/${PF}-gentoo.diff
- echo ">>> Running aclocal..."
- try aclocal
- echo ">>> Running autoconf..."
- try autoconf
- echo ">>> Running automake..."
- try automake
- echo ">>> Running autoheader..."
- try autoheader
-}
-
-src_compile() {
- if [ "`use readline`" ]
- then
- myconf="${myconf} --with-readline"
- fi
- if [ "`use python`" ]
- then
- myconf="${myconf} --with-python"
- fi
- if [ -z "`use nls`" ]
- then
- myconf="${myconf} --disable-nls"
- else
- myconf="${myconf}"
- fi
- try ./configure --prefix=/usr --target=${CHOST} ${myconf}
- cd ${S}
- try make
-}
-
-src_install () {
- try make DESTDIR=${D} install
- if [ -z "`use bootcd`" ]
- then
- dodoc ABOUT-NLS AUTHORS BUGS COPYING ChangeLog NEWS README THANKS TODO
- cd doc ; docinto doc
- dodoc API COPYING.DOC FAT USER USER.jp
- else
- rm -rf ${D}/usr/share ${D}/usr/include ${D}/usr/lib/lib*.{a,la}
- fi
-}
diff --git a/sys-apps/parted/parted-1.4.24.ebuild b/sys-apps/parted/parted-1.4.24.ebuild
new file mode 100644
index 000000000000..77c952628db6
--- /dev/null
+++ b/sys-apps/parted/parted-1.4.24.ebuild
@@ -0,0 +1,53 @@
+# Copyright 1999-2002 Gentoo Technologies, Inc.
+# Distributed under the terms of the GNU General Public License, v2 or later
+# Maintainer: Peter Gavin <pete@gentoo.org>
+# $Header: /var/cvsroot/gentoo-x86/sys-apps/parted/parted-1.4.24.ebuild,v 1.1 2002/01/28 18:27:13 azarah Exp $
+
+S=${WORKDIR}/${P}
+DESCRIPTION="An advanced partition modification system"
+SRC_URI="ftp://ftp.gnu.org/gnu/${PN}/${P}.tar.gz
+ ftp://gatekeeper.dec.com/pub/GNU/${PN}/${P}.tar.gz"
+HOMEPAGE="http://www.gnu.org/software/${PN}"
+
+DEPEND="virtual/glibc
+ >=sys-apps/e2fsprogs-1.19-r2
+ readline? ( >=sys-libs/readline-4.1-r2 )
+ nls? ( sys-devel/gettext-0.10.38 )
+ python? ( >=dev-lang/python-2.0 )"
+
+
+src_compile() {
+
+ if [ "`use readline`" ]
+ then
+ myconf="${myconf} --with-readline"
+ fi
+ if [ "`use python`" ]
+ then
+ myconf="${myconf} --with-python"
+ fi
+ if [ -z "`use nls`" ]
+ then
+ myconf="${myconf} --disable-nls"
+ fi
+
+ ./configure --prefix=/usr \
+ --target=${CHOST} \
+ ${myconf} || die
+
+ emake || die
+}
+
+src_install() {
+
+ make DESTDIR=${D} install || die
+
+ if [ -z "`use bootcd`" ]
+ then
+ dodoc ABOUT-NLS AUTHORS BUGS COPYING ChangeLog NEWS README THANKS TODO
+ cd doc ; docinto doc
+ dodoc API COPYING.DOC FAT USER USER.jp
+ else
+ rm -rf ${D}/usr/share ${D}/usr/include ${D}/usr/lib/lib*.{a,la}
+ fi
+}