diff options
author | 2002-01-28 18:27:13 +0000 | |
---|---|---|
committer | 2002-01-28 18:27:13 +0000 | |
commit | 2a65ddbf8116dc2b9afb9cd62f84f5943639283a (patch) | |
tree | 822a7b5f5bf6457cefe45942df9602a2b366db08 /sys-apps/parted | |
parent | version upgrade and fix to bug #262 (diff) | |
download | gentoo-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.14 | 1 | ||||
-rw-r--r-- | sys-apps/parted/files/digest-parted-1.4.14-r1 | 1 | ||||
-rw-r--r-- | sys-apps/parted/files/digest-parted-1.4.14-r2 | 1 | ||||
-rw-r--r-- | sys-apps/parted/files/digest-parted-1.4.17 | 1 | ||||
-rw-r--r-- | sys-apps/parted/files/digest-parted-1.4.24 | 1 | ||||
-rw-r--r-- | sys-apps/parted/files/parted-1.4.14-r1-python-gentoo.diff | 2336 | ||||
-rw-r--r-- | sys-apps/parted/files/parted-1.4.14-r2-gentoo.diff | 2336 | ||||
-rw-r--r-- | sys-apps/parted/files/parted-1.4.17-gentoo.diff | 13318 | ||||
-rw-r--r-- | sys-apps/parted/parted-1.4.14-r1.ebuild | 51 | ||||
-rw-r--r-- | sys-apps/parted/parted-1.4.14-r2.ebuild | 63 | ||||
-rw-r--r-- | sys-apps/parted/parted-1.4.14.ebuild | 29 | ||||
-rw-r--r-- | sys-apps/parted/parted-1.4.17.ebuild | 68 | ||||
-rw-r--r-- | sys-apps/parted/parted-1.4.24.ebuild | 53 |
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", §)) -+ 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", §)) -+ 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", §)) -+ 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 +} |