diff options
67 files changed, 18082 insertions, 130 deletions
diff --git a/app-editors/emacs/emacs-20.7.ebuild b/app-editors/emacs/emacs-20.7.ebuild new file mode 100644 index 000000000000..b2ba603fddf6 --- /dev/null +++ b/app-editors/emacs/emacs-20.7.ebuild @@ -0,0 +1,54 @@ +# Copyright 1999-2000 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Author Mikael Hallendal <micke@hallendal.net> + +A=${P}.tar.gz +S=${WORKDIR}/${P} +DESCRIPTION="An incredibly powerful, extensible text editor" +SRC_URI="ftp://ftp.gnu.org/gnu/${PN}/${A}" +HOMEPAGE="http://www.gnu.org/software/emacs" + +DEPEND=">=sys-libs/ncurses-5.2 + X? ( virtual/x11 ) + motif? ( >=x11-libs/openmotif-2.1.30 ) + nls? ( >=sys-devel/gettext-0.10.35 )" + +PROVIDE="virtual/emacs" + +src_compile() { + local myconf + + if [ -z "`use nls`" ] ; then + myconf="${myconf} --disable-nls" + fi + if [ "`use X`" ] ; then + myconf="${myconf} --with-x" + else + myconf="${myconf} --without-x" + fi + if [ "`use motif`" ] ; then + myconf="${myconf} --with-x-toolkit=motif" + fi + + try ./configure --prefix=/usr --libexecdir=/usr/lib --host=${CHOST} \ + --mandir=/usr/share/man --infodir=/usr/share/info ${myconf} + + try make ${MAKEOPTS} +} + +src_install () { + try make prefix=${D}/usr libexecdir=${D}/usr/lib \ + mandir=${D}/usr/share/man infodir=${D}/usr/share/info install + cd ${D}/usr/share/info + rm dir + for i in * + do + mv ${i%.info} $i.info + done + dodoc BUGS ChangeLog README +} + + + + + diff --git a/app-editors/emacs/emacs-21.0.103.ebuild b/app-editors/emacs/emacs-21.0.103.ebuild new file mode 100644 index 000000000000..77f4b3d18e46 --- /dev/null +++ b/app-editors/emacs/emacs-21.0.103.ebuild @@ -0,0 +1,58 @@ +# Copyright 1999-2000 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Author Mikael Hallendal <micke@hallendal.net> + +A=${P}.tar.gz +S=${WORKDIR}/${P} +DESCRIPTION="An incredibly powerful, extensible text editor" +SRC_URI="ftp://ftp.eecs.umich.edu/pub/NetBSD/packages/distfiles/LOCAL_PORTS/${A}" +HOMEPAGE="http://www.gnu.org/software/emacs" + +DEPEND=">=sys-libs/ncurses-5.2 + X? ( virtual/x11 + media-libs/libungif-4.1.0 + media-libs/jpeg-6b-r2 + media-libs/tiff-3.5.5-r3 + media-libs/libpng-1.0.9 ) + motif? ( >=x11-libs/openmotif-2.1.30 ) + nls? ( >=sys-devel/gettext-0.10.35 )" + +PROVIDE="virtual/emacs" + +src_compile() { + local myconf + + if [ -z "`use nls`" ] ; then + myconf="${myconf} --disable-nls" + fi + if [ "`use X`" ] ; then + myconf="${myconf} --with-x --with-xpm --with-jpeg --with-tiff --with-gif --with-png" + else + myconf="${myconf} --without-x" + fi + if [ "`use motif`" ] ; then + myconf="${myconf} --with-x-toolkit=motif" + fi + + try ./configure --prefix=/usr --libexecdir=/usr/lib --host=${CHOST} \ + --mandir=/usr/share/man --infodir=/usr/share/info ${myconf} + + try make ${MAKEOPTS} +} + +src_install () { + try make prefix=${D}/usr libexecdir=${D}/usr/lib \ + mandir=${D}/usr/share/man infodir=${D}/usr/share/info install + cd ${D}/usr/share/info + rm dir + for i in * + do + mv ${i%.info} $i.info + done + dodoc BUGS ChangeLog README +} + + + + + diff --git a/app-editors/nano/nano-1.0.3-r1.ebuild b/app-editors/nano/nano-1.0.3-r1.ebuild index f53555af1430..860c45dc993d 100644 --- a/app-editors/nano/nano-1.0.3-r1.ebuild +++ b/app-editors/nano/nano-1.0.3-r1.ebuild @@ -24,6 +24,6 @@ src_install () { then dodoc COPYING ChangeLog README else - rm -rf ${D}/usr/share/{man,info} + rm -rf ${D}/usr/share fi } diff --git a/files/isoinitrd-20010726.packages b/files/isoinitrd-20010726.packages index 8dfe3da41298..db0f1a620dc9 100644 --- a/files/isoinitrd-20010726.packages +++ b/files/isoinitrd-20010726.packages @@ -9,21 +9,26 @@ sys-apps/findutils/findutils-4.1-r6.ebuild sys-apps/gawk/gawk-3.0.6-r4.ebuild sys-apps/grep/grep-2.4.2-r4.ebuild sys-apps/gzip/gzip-1.2.4a-r4.ebuild -sys-apps/portage/portage-1.5.2.ebuild +sys-apps/portage/portage-1.5.3.ebuild sys-apps/sed/sed-3.02.80-r3.ebuild sys-apps/sh-utils/sh-utils-2.0j-r4.ebuild sys-apps/tar/tar-1.13.19-r1.ebuild sys-apps/textutils/textutils-2.0.10-r3.ebuild -sys-devel/spython/spython-2.0-r6.ebuild +sys-devel/spython/spython-2.0-r7.ebuild net-misc/wget/wget-1.7-r1.ebuild net-misc/rsync/rsync-2.4.6-r4.ebuild sys-apps/util-linux/util-linux-2.11g-r1.ebuild -sys-apps/net-tools/net-tools-1.60-r1.ebuild sys-apps/psmisc/psmisc-19-r3.ebuild sys-apps/net-tools/net-tools-1.60-r1.ebuild sys-apps/ed/ed-0.2-r2.ebuild -sys-apps/procps/procps-2.0.6-r2.ebuild +sys-apps/procps/procps-2.0.7-r4.ebuild sys-apps/sysvinit/sysvinit-2.78-r4.ebuild sys-apps/shadow/shadow-20001016-r4.ebuild sys-apps/netkit-base/netkit-base-0.17-r3.ebuild sys-apps/console-tools/console-tools-0.2.3-r4.ebuild +sys-apps/parted/parted-1.4.17.ebuild +app-editors/nano/nano-1.0.3-r1.ebuild +net-misc/dhcpcd/dhcpcd-1.3.20_p0-r1.ebuild +sys-apps/modutils/modutils-2.4.6-r1.ebuild +sys-apps/reiserfs-utils/reiserfs-utils-3.6.25-r7.ebuild +sys-apps/e2fsprogs/e2fsprogs-1.22-r1.ebuild diff --git a/files/isoinitrd/etc/inittab b/files/isoinitrd/etc/inittab new file mode 100644 index 000000000000..0dd9be2ffd82 --- /dev/null +++ b/files/isoinitrd/etc/inittab @@ -0,0 +1,57 @@ +# +# inittab This file describes how the INIT process should set up +# the system in a certain run-level. +# +# Author: Miquel van Smoorenburg, <miquels@cistron.nl> +# Modified by: Patrick J. Volkerding, <volkerdi@ftp.cdrom.com> +# Modified by: Daniel Robbins, <drobbins@gentoo.org> + +# +# Default runlevel. + +id:1:initdefault: + +# System initialization (runs when system boots). +si:S:sysinit:/etc/rc.d/init.d/rc S + +# Script to run when going single user (runlevel 1). +~~:S:wait:/sbin/sulogin + +# RUNLEVELS +# 0=halt +# 1=single user +# 2=multi-user, no net +# 3=multi-user, network +# 4=multi-user, xdm (graphical terminal) +# 5=customize it to your own liking +# 6=reboot + +l0:0:wait:/etc/rc.d/init.d/rc 0 +l1:1:wait:/etc/rc.d/init.d/rc 1 +l2:2:wait:/etc/rc.d/init.d/rc 2 +l3:3:wait:/etc/rc.d/init.d/rc 3 +l4:4:wait:/etc/rc.d/init.d/rc 4 +l5:5:wait:/etc/rc.d/init.d/rc 5 +l6:6:wait:/etc/rc.d/init.d/rc 6 +z6:6:respawn:/sbin/sulogin + +# If you use Login.app, this is how you get it working +# x1:4:respawn:/usr/bin/Login.app >& /dev/null + +# TERMINALS +c1:12345:respawn:/sbin/agetty 38400 tty1 linux +c2:12345:respawn:/sbin/agetty 38400 tty2 linux +c3:12345:respawn:/sbin/agetty 38400 tty3 linux +c4:12345:respawn:/sbin/agetty 38400 tty4 linux +c5:23:respawn:/sbin/agetty 38400 tty5 linux +c6:23:respawn:/sbin/agetty 38400 tty6 linux + +# What to do at the "Three Finger Salute". +ca:12345:ctrlaltdel:/sbin/shutdown -t1 -r now + +# Start svscan process in runlevels 2 through 5 +# Placing it here makes sure that it respawns if it dies, but keeping it our of runlevel 1 prevents +# svscan from starting before the system is ready. +#SV:2345:respawn:env - PATH=/usr/local/bin:/usr/sbin:/usr/bin:/bin svscan /var/lib/supervise/control < /dev/null > /dev/console 2>/dev/console + +# End of /etc/inittab diff --git a/files/isoinitrd/etc/rc.d/init.d/cdboot b/files/isoinitrd/etc/rc.d/init.d/cdboot new file mode 100644 index 000000000000..119c9b65d0b2 --- /dev/null +++ b/files/isoinitrd/etc/rc.d/init.d/cdboot @@ -0,0 +1,12 @@ +#!/bin/bash + +if [ "$1" != "start" ] +then + exit +fi +umask 022 +mount / -o remount,rw +: > /etc/mtab +mount /proc +/bin/hostname cdimage + diff --git a/files/isoinitrd/etc/rc.d/init.d/cdscan b/files/isoinitrd/etc/rc.d/init.d/cdscan new file mode 100644 index 000000000000..c0eccdbeec38 --- /dev/null +++ b/files/isoinitrd/etc/rc.d/init.d/cdscan @@ -0,0 +1,40 @@ +#!/bin/bash + +#CD Detection +for x in /dev/cdroms/* +do + mount $x /mnt/cdrom -o iso9660,ro + if [ $? -ne 0 ] + then + continue + fi + if [ ! -e /mnt/cdrom/.id-gentoo-linux ] + then + umount /mnt/cdrom + continue + fi +done +if [ ! -e /mnt/cdrom/.id-gentoo-linux* ] +then + echo "!!! Couldn't find and mount Gentoo Linux CD." + echo "!!! You may need to load some SCSI modules." +fi + +#mount compressed loopback fs +/bin/mknod /dev/cloop b 240 0 +/sbin/insmod /lib/cloop.o file=/mnt/cdrom/usr.iso /usr +/bin/mount -o ro /dev/cloop /usr +if [ -d /mnt/cdrom/gentoo/packages ] +then + mount --bind /mnt/cdrom/gentoo/packages /usr/portage/packages +fi +if [ -d /mnt/cdrom/gentoo/distfiles ] +then + mount --bind /mnt/cdrom/gentoo/distfiles /usr/portage/distfiles +fi +#LVM init +/sbin/vgscan +/sbin/vgchange -ay +#general init +/usr/sbin/env-update +. /etc/profile diff --git a/files/isoinitrd/etc/rc.d/init.d/devfsd b/files/isoinitrd/etc/rc.d/init.d/devfsd new file mode 100644 index 000000000000..71afbdd55a08 --- /dev/null +++ b/files/isoinitrd/etc/rc.d/init.d/devfsd @@ -0,0 +1,13 @@ +#!/bin/sh +#RCUPDATE:boot:04:This line is required for script management + + +. /etc/rc.d/config/basic +. /etc/rc.d/config/functions + +# Test if we use devfs and start devfsd +mount --bind /dev /dev-state +mount -t devfs none /dev +//sbin/devfsd /dev + + diff --git a/media-libs/glide-v3/glide-v3-0.ebuild b/media-libs/glide-v3/glide-v3-0.ebuild new file mode 100644 index 000000000000..2b170f39bb08 --- /dev/null +++ b/media-libs/glide-v3/glide-v3-0.ebuild @@ -0,0 +1,30 @@ +# Copyright 1999-2001 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Author Peter Gavin <your email> +# $Header: /var/cvsroot/gentoo-x86/media-libs/glide-v3/glide-v3-0.ebuild,v 1.1 2001/08/04 18:22:45 pete Exp $ + +S=${WORKDIR}/${P} +DESCRIPTION="the glide library (for voodoo3 cards)" +SRC_URI="http://dri.sourceforge.net/res/glide3headers.tar.gz + http://dri.sourceforge.net/res/voodoo3/x86/libglide3.so" +HOMEPAGE="http://dri.sourceforge.net/" +DEPEND="" +RDEPEND="" + +src_unpack() { + mkdir ${S} + cd ${S} + unpack glide3headers.tar.gz + chown -R 0.0 glide +} + +src_compile() { + +} + +src_install () { + dodir /usr/include + cp -a ${S}/glide /usr/include + cp -a ${DISTDIR}/libglide.so /usr/lib +} + diff --git a/media-libs/glide-v5/glide-v5-0.ebuild b/media-libs/glide-v5/glide-v5-0.ebuild new file mode 100644 index 000000000000..565be9beaeac --- /dev/null +++ b/media-libs/glide-v5/glide-v5-0.ebuild @@ -0,0 +1,30 @@ +# Copyright 1999-2001 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Author Peter Gavin <your email> +# $Header: /var/cvsroot/gentoo-x86/media-libs/glide-v5/glide-v5-0.ebuild,v 1.1 2001/08/04 18:22:45 pete Exp $ + +S=${WORKDIR}/${P} +DESCRIPTION="the glide library (for voodoo5 cards)" +SRC_URI="http://dri.sourceforge.net/res/glide3headers.tar.gz + http://dri.sourceforge.net/res/voodoo5/x86/libglide3.so" +HOMEPAGE="http://dri.sourceforge.net/" +DEPEND="" +RDEPEND="" + +src_unpack() { + mkdir ${S} + cd ${S} + unpack glide3headers.tar.gz + chown -R 0.0 glide +} + +src_compile() { + +} + +src_install () { + dodir /usr/include + cp -a ${S}/glide /usr/include + cp -a ${DISTDIR}/libglide.so /usr/lib +} + diff --git a/net-misc/dhcpcd/dhcpcd-1.3.20_p0-r1.ebuild b/net-misc/dhcpcd/dhcpcd-1.3.20_p0-r1.ebuild new file mode 100644 index 000000000000..ea302e05210b --- /dev/null +++ b/net-misc/dhcpcd/dhcpcd-1.3.20_p0-r1.ebuild @@ -0,0 +1,37 @@ +# Copyright 1999-2000 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Author Your Name <your email> +# $Header: /var/cvsroot/gentoo-x86/net-misc/dhcpcd/dhcpcd-1.3.20_p0-r1.ebuild,v 1.1 2001/08/04 18:22:45 pete Exp $ + +A=${PN}-1.3.20-pl0.tar.gz +S=${WORKDIR}/${PN}-1.3.20-pl0 +DESCRIPTION="A dhcp client only" +SRC_URI="ftp://ftp.phystech.cm/pub/${A}" +HOMEPAGE="http://" + +DEPEND="" + +src_compile() { + + try ./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --sbindir=/sbin --host=${CHOST} + try make + +} + +src_install () { + + try make DESTDIR=${D} install + if [ -z "`use bootcd`" ] + then + dodoc AUTHORS COPYING ChangeLog NEWS README + else + rm -rf ${D}/usr/share + fi + if [ "`use pcmcia`" ] || [ "`use pcmcia-cs`" ] + then + insinto /etc/pcmcia + doins pcmcia/network* + fi + +} + diff --git a/net-misc/dhcpcd/files/digest-dhcpcd-1.3.20_p0-r1 b/net-misc/dhcpcd/files/digest-dhcpcd-1.3.20_p0-r1 new file mode 100644 index 000000000000..66b474ce04c6 --- /dev/null +++ b/net-misc/dhcpcd/files/digest-dhcpcd-1.3.20_p0-r1 @@ -0,0 +1 @@ +MD5 5f52904ac354295ce64f74f254ac1d0d dhcpcd-1.3.20-pl0.tar.gz diff --git a/net-misc/rsync/rsync-2.4.6-r4.ebuild b/net-misc/rsync/rsync-2.4.6-r4.ebuild index 9d5e0fa0b1aa..b159b27e53d6 100644 --- a/net-misc/rsync/rsync-2.4.6-r4.ebuild +++ b/net-misc/rsync/rsync-2.4.6-r4.ebuild @@ -1,7 +1,7 @@ # Copyright 1999-2000 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License, v2 or later # Author Achim Gottinger <achim@gentoo.org> -# $Header: /var/cvsroot/gentoo-x86/net-misc/rsync/rsync-2.4.6-r4.ebuild,v 1.1 2001/07/28 15:49:20 pete Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-misc/rsync/rsync-2.4.6-r4.ebuild,v 1.2 2001/08/04 18:22:45 pete Exp $ A=${P}.tar.gz S=${WORKDIR}/${P} @@ -34,13 +34,13 @@ src_compile() { } src_install () { - - if [ -z "`use build`" ] && [ -z "`use bootcd`" ] ; then - try make prefix=${D}/usr mandir=${D}/usr/share/man install + + try make prefix=${D}/usr mandir=${D}/usr/share/man install + if [ -z "`use build`" ] && [ -z "`use bootcd`" ] ; then dodir /etc/rsync dodoc COPYING README else - dobin rsync + rm -rf ${D}/usr/share fi } diff --git a/net-misc/wget/wget-1.7-r1.ebuild b/net-misc/wget/wget-1.7-r1.ebuild index 629be84dfbcc..ba8ed23f6bd2 100644 --- a/net-misc/wget/wget-1.7-r1.ebuild +++ b/net-misc/wget/wget-1.7-r1.ebuild @@ -1,7 +1,7 @@ # Copyright 1999-2000 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License, v2 or later # Author Achim Gottinger <achim@gentoo.org> -# $Header: /var/cvsroot/gentoo-x86/net-misc/wget/wget-1.7-r1.ebuild,v 1.1 2001/07/28 15:49:20 pete Exp $ +# $Header: /var/cvsroot/gentoo-x86/net-misc/wget/wget-1.7-r1.ebuild,v 1.2 2001/08/04 18:22:45 pete Exp $ A="${P}.tar.gz wget-new-percentage-1.7-20010606.diff" S=${WORKDIR}/${P} @@ -43,15 +43,15 @@ src_compile() { } src_install() { - + + try make prefix=${D}/usr sysconfdir=${D}/etc/wget \ + mandir=${D}/usr/share/man infodir=${D}/usr/share/info install + if [ "`use build`" ] || [ "`use bootcd`" ] ; then - dobin src/wget + rm -rf ${D}/usr else - try make prefix=${D}/usr sysconfdir=${D}/etc/wget \ - mandir=${D}/usr/share/man infodir=${D}/usr/share/info install - - dodoc AUTHORS COPYING ChangeLog MACHINES MAILING-LIST NEWS README TODO - dodoc doc/sample.wgetrc + dodoc AUTHORS COPYING ChangeLog MACHINES MAILING-LIST NEWS README TODO + dodoc doc/sample.wgetrc fi } diff --git a/profiles/package.mask b/profiles/package.mask index 1463c0f7b782..71c6a916c032 100644 --- a/profiles/package.mask +++ b/profiles/package.mask @@ -24,7 +24,7 @@ sys-kernel/linux-sources-vanilla app-admin/powertweak media-video/avi-xmms app-text/sgml2x ->=sys-apps/procps-2.0.7 +#>=sys-apps/procps-2.0.7 # unfinished app-admin/va-systemimager-server diff --git a/scripts/autodist.sh b/scripts/autodist.sh index f68a6116fa03..68b146c195ef 100644 --- a/scripts/autodist.sh +++ b/scripts/autodist.sh @@ -17,6 +17,8 @@ ISOROOT="${AUTODISTDIR}/isoroot" INITRDROOT="${AUTODISTDIR}/initrdroot" [ -z "${BUILDTARBALL}" ] && BUILDTARBALL="build-${TODAY}.tbz2" [ -z "${SYSTARBALL}" ] && SYSTARBALL="sys-${TODAY}.tbz2" +# shouldn't allow CFLAGS to be overridden +export CFLAGS="-O2 -mcpu=i486 -march=i486" [ -d "${DISTRODIR}" ] || mkdir -p "${DISTRODIR}" @@ -25,6 +27,9 @@ INITRDROOT="${AUTODISTDIR}/initrdroot" [ -z "${SYS_PACKAGES}" ] && SYS_PACKAGES=`ls -1 ${PORTDIR}/files/sys-*.packages | sort | tail -1` [ -z "${KERNEL_SRC}" ] && KERNEL_SRC="/usr/src/`readlink /usr/src/linux`" [ -z "${KERNEL_VERSION}" ] && KERNEL_VERSION="`echo ${KERNEL_SRC} | sed 's,.*-\([0-9]\.[0-9]\.[0-9]\+\(-ac[0-9]\+\)\?\)$,\1,'`" +export PORTDIR +export DISTRODIR +export AUTODISTDIR if grep -qs "${AUTODISTDIR}" /proc/mounts then @@ -56,14 +61,25 @@ echo ">>> Cleaning up ${AUTODISTDIR}..." rm -rf ${AUTODISTDIR} echo ">>> Creating ISO directory tree..." -mkdir -p -mkdir -v ${ISOROOT}/{doc,gentoo{,/distfiles,/packages{,/All}},isolinux{,/kernels},stuff} +mkdir -pv ${ISOROOT}/{doc,gentoo{,/distfiles,/packages{,/All}},isolinux{,/kernels},stuff} -echo ">>> Building initrd..." -mkdir -p "${INITRDROOT}" +echo ">>> Building initrd packages..." +mkdir -p ${INITRDROOT} ERRQUIT=yes CHECK=no USE=bootcd ROOT="${INITRDROOT}" STEPS="clean unpack compile install qmerge clean" ${PORTDIR}/scripts/autocompile.sh ${ISOINITRD_PACKAGES} if [ ${?} != 0 ] then - echo "Error building initrd, quitting" + echo "Error building initrd packages, quitting" exit 1 fi +echo ">>> Cleaning up ${INITRDROOT}/tmp" +rm -rf ${INITRDROOT}/tmp/* + +echo ">>> Setting up initrd..." +find ${INITRDROOT}/etc -name "*._cfg_*" exec rm -vf {} \; +for dir in etc{,/rc.d{,/config,/init.d,/rc{1,2,3,4,5,boot,halt}}.d} +do + cp -v ${PORTDIR}/files/isoinitrd/${dir}/* ${INITRDROOT}/${dir} +done +ROOT=${INITRDROOT} rc-update autogen boot force +ROOT=${INITRDROOT} rc-update autogen normal force +ROOT=${INITRDROOT} rc-update autogen halt force diff --git a/scripts/sortpkglist.py b/scripts/sortpkglist.py index 233fbb237c59..c589046e7476 100644 --- a/scripts/sortpkglist.py +++ b/scripts/sortpkglist.py @@ -8,15 +8,3 @@ import portage import sys -digraph = portage.digraph() - -if len(sys.argv) != 2: - print 'usage: %s packagelist' % sys.argv[0] - -try: - packagelist = open(sys.argv[1], "r") -except: - sys.stderr.write("could not open %s\n" % sys.argv[1]) - sys.exit(1) - -packages = packagelist.readlines() diff --git a/sys-apps/baselayout/files/fstab b/sys-apps/baselayout/files/fstab index f4c1dc991dc9..13e8e4f7af2c 100644 --- a/sys-apps/baselayout/files/fstab +++ b/sys-apps/baselayout/files/fstab @@ -7,7 +7,7 @@ # # <fs> <mountpoint> <type> <opts> <dump/pass> -/dev/#BOOT# /boot ext2 noauto,noatime 1 1 +/dev/#BOOT# /boot ext2 noauto,noatime,notail 1 1 /dev/#ROOT# / reiserfs notail,noatime 0 0 /dev/#SWAP# none swap sw 0 0 /dev/#CD# /mnt/cdrom iso9660 noauto,ro 0 0 diff --git a/sys-apps/bash/bash-2.04-r4.ebuild b/sys-apps/bash/bash-2.04-r4.ebuild index 7e2e53740b16..891f8d4d0353 100644 --- a/sys-apps/bash/bash-2.04-r4.ebuild +++ b/sys-apps/bash/bash-2.04-r4.ebuild @@ -1,7 +1,7 @@ # Copyright 1999-2000 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License, v2 or later # Author Daniel Robbins <drobbins@gentoo.org> -# $Header: /var/cvsroot/gentoo-x86/sys-apps/bash/bash-2.04-r4.ebuild,v 1.1 2001/07/28 15:49:20 pete Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-apps/bash/bash-2.04-r4.ebuild,v 1.2 2001/08/04 18:22:45 pete Exp $ A=${P}.tar.gz S=${WORKDIR}/${P} @@ -82,4 +82,3 @@ src_install() { fi } - diff --git a/sys-apps/bzip2/bzip2-1.0.1-r4.ebuild b/sys-apps/bzip2/bzip2-1.0.1-r4.ebuild new file mode 100644 index 000000000000..2933690d6232 --- /dev/null +++ b/sys-apps/bzip2/bzip2-1.0.1-r4.ebuild @@ -0,0 +1,72 @@ +# Copyright 1999-2000 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Author Daniel Robbins <drobbins@gentoo.org> +# $Header: /var/cvsroot/gentoo-x86/sys-apps/bzip2/bzip2-1.0.1-r4.ebuild,v 1.1 2001/08/04 18:22:45 pete Exp $ + +A=${P}.tar.gz +S=${WORKDIR}/${P} +DESCRIPTION="A high-quality data compressor used extensively by Gentoo" +SRC_URI="ftp://sourceware.cygnus.com/pub/bzip2/v100/${A} + ftp://ftp.freesoftware.com/pub/sourceware/bzip2/v100/${A}" + +HOMEPAGE="http://sourceware.cygnus.com/bzip2/" + +DEPEND="virtual/glibc" + +src_unpack() { + + unpack ${A} + + cd ${S} + patch -p0 < ${FILESDIR}/bzip2-1.0.1-Makefile-gentoo.diff + cp ${FILESDIR}/Makefile.dietlibc . +} + +src_compile() { + if [ -z "`use build`" ] && [ -z "`use bootcd`" ] + then + try pmake -f Makefile-libbz2_so all + fi + if [ -z "`use static`" ] + then + try pmake all + else + if [ "`use diet`" ] + then + try pmake LDFLAGS=-static -f Makefile.dietlibc all + else + try pmake LDFLAGS=-static all + fi + fi +} +src_install() { + + if [ -z "`use build`" ] + then + try make DESTDIR=${D} install + mv ${D}/usr/bin ${D} + + if [ -z "`use bootcd`" ] + then + try make DESTDIR=${D} -f Makefile-libbz2_so install + + dodoc README LICENSE CHANGES Y2K_INFO + docinto txt + dodoc bzip2.txt + docinto ps + dodoc manual.ps + docinto html + dodoc manual_*.html + else + rm -rf ${D}/usr + fi + else + into / + dobin bzip2 + cd ${D}/bin + ln -s bzip2 bunzip2 + fi + +} + + diff --git a/sys-apps/console-tools/console-tools-0.2.3-r4.ebuild b/sys-apps/console-tools/console-tools-0.2.3-r4.ebuild new file mode 100644 index 000000000000..eb8328bee2b2 --- /dev/null +++ b/sys-apps/console-tools/console-tools-0.2.3-r4.ebuild @@ -0,0 +1,69 @@ +# Copyright 1999-2000 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Author Daniel Robbins <drobbins@gentoo.org> +# $Header: /var/cvsroot/gentoo-x86/sys-apps/console-tools/console-tools-0.2.3-r4.ebuild,v 1.1 2001/08/04 18:22:45 pete Exp $ + +S=${WORKDIR}/${P} +DESCRIPTION="Console and font utilities" +SRC_URI="ftp://metalab.unc.edu/pub/Linux/system/keyboards/${P}.tar.gz" +HOMEPAGE="http://altern.org/ydirson/en/lct/" + +DEPEND="virtual/glibc + sys-devel/autoconf sys-devel/automake sys-devel/libtool + nls? ( sys-devel/gettext )" +RDEPEND="virtual/glibc" + +src_unpack() { + + unpack ${A} + cd ${S} + patch -p1 < ${FILESDIR}/${P}.patch + + patch -p0 < ${FILESDIR}/${P}-po-Makefile.in.in-gentoo.diff + try aclocal + try libtoolize --force -c + try autoheader + try automake -c + try autoconf +} + +src_compile() { + + local myconf + + if [ "$DEBUG" ] + then + myconf="--enable-debugging" + fi + if [ -z "`use nls`" ] + then + myconf="${myconf} --disable-nls" + fi + + try ./configure --prefix=/usr --mandir=/usr/share/man --target=${CHOST} ${myconf} + try make $MAKEOPTS all +} + +src_install() { + + # DESTDIR does not work correct + try make DESTDIR=${D} install + + if [ -z "`use bootcd`" ] + then + dodoc BUGS COPYING* CREDITS ChangeLog NEWS README RELEASE TODO + docinto txt + dodoc doc/*.txt doc/README.* + docinto sgml + dodoc doc/*.sgml + docinto txt/contrib + dodoc doc/contrib/* + docinto txt/dvorak + dodoc doc/dvorak/* + docinto txt/file-formats + dodoc doc/file-formats/* + doman doc/man/*.[1-8] + else + rm -rf ${D}/usr/share ${D}/usr/include ${D}/usr/lib/lib*.{a,la} + fi +} diff --git a/sys-apps/console-tools/files/digest-console-tools-0.2.3-r4 b/sys-apps/console-tools/files/digest-console-tools-0.2.3-r4 new file mode 100644 index 000000000000..7c2347441144 --- /dev/null +++ b/sys-apps/console-tools/files/digest-console-tools-0.2.3-r4 @@ -0,0 +1 @@ +MD5 983d4586a791b3fdfa0fbeff76aadf43 console-tools-0.2.3.tar.gz diff --git a/sys-apps/debianutils/debianutils-1.13.3-r4.ebuild b/sys-apps/debianutils/debianutils-1.13.3-r4.ebuild index e5fe3e532c77..7f329d74a14c 100644 --- a/sys-apps/debianutils/debianutils-1.13.3-r4.ebuild +++ b/sys-apps/debianutils/debianutils-1.13.3-r4.ebuild @@ -1,7 +1,7 @@ # Copyright 1999-2000 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License, v2 or later # Author Daniel Robbins <drobbins@gentoo.org> -# $Header: /var/cvsroot/gentoo-x86/sys-apps/debianutils/debianutils-1.13.3-r4.ebuild,v 1.1 2001/07/28 15:49:20 pete Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-apps/debianutils/debianutils-1.13.3-r4.ebuild,v 1.2 2001/08/04 18:22:45 pete Exp $ S=${WORKDIR}/${P} DESCRIPTION="A selection of tools from Debian" @@ -33,17 +33,21 @@ src_install() { into / dobin readlink tempfile mktemp - if [ -z "`use build`" ] && [ -z "`use bootcd`" ] + if [ -z "`use build`" ] then dobin run-parts insopts -m755 exeinto /usr/sbin doexe savelog - - doman mktemp.1 readlink.1 tempfile.1 run-parts.8 savelog.8 - - cd debian - dodoc changelog control copyright + + if [ -z "`use bootcd`" ] + then + into /usr + doman mktemp.1 readlink.1 tempfile.1 run-parts.8 savelog.8 + + cd debian + dodoc changelog control copyright + fi fi } diff --git a/sys-apps/e2fsprogs/e2fsprogs-1.22-r1.ebuild b/sys-apps/e2fsprogs/e2fsprogs-1.22-r1.ebuild new file mode 100644 index 000000000000..b56289dcf528 --- /dev/null +++ b/sys-apps/e2fsprogs/e2fsprogs-1.22-r1.ebuild @@ -0,0 +1,82 @@ +# Copyright 1999-2000 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Author Daniel Robbins <drobbins@gentoo.org> +# $Header: /var/cvsroot/gentoo-x86/sys-apps/e2fsprogs/e2fsprogs-1.22-r1.ebuild,v 1.1 2001/08/04 18:22:45 pete Exp $ + +S=${WORKDIR}/${P} +DESCRIPTION="Standard ext2 filesystem utilities" +SRC_URI="ftp://download.sourceforge.net/pub/sourceforge/${PN}/${P}.tar.gz" +HOMEPAGE="http://e2fsprogs.sourceforge.net/" + +DEPEND="virtual/glibc + nls? ( sys-devel/gettext ) + sys-apps/texinfo" +RDEPEND="virtual/glibc" + +src_unpack() { + unpack ${A} + cd ${S} + patch -p0 < ${FILESDIR}/e2fsprogs-1.19-po-Makefile.in.in-gentoo.diff + cd ${S}/po + cp POTFILES.in POTFILES.in.orig + sed -e 's/recover\.c/recovery.c/g' POTFILES.in.orig > POTFILES.in +} + +src_compile() { + + local myconf + if [ "`use nls`" ] + then + myconf="--enable-nls" + else + myconf="--disable-nls" + fi + try ./configure --host=${CHOST} --prefix=/usr \ + --mandir=/usr/share/man --infodir=/usr/share/info \ + --enable-elf-shlibs ${myconf} + + # Parallel make sometimes fails + try make + +} + +src_install() { + + local myopts + if [ "$DEBUG" ] + then + myopts="STRIP=\"echo\"" + fi + + myopts="${myopts} mandir=/usr/share/man infodir=/usr/share/info" + + try make DESTDIR=${D} ${myopts} install + try make DESTDIR=${D} ${myopts} install-libs + + if [ "`use nls`" ] + then + cd po + try make DESTDIR=${D} install + fi + dodir /sbin + mv ${D}/usr/sbin/fsck* ${D}/sbin + dodoc COPYING ChangeLog README RELEASE-NOTES SHLIBS + docinto e2fsck + dodoc e2fsck/ChangeLog e2fsck/CHANGES + for i in e2p et ext2fs ss uuid + do + docinto lib/${i} + dodoc lib/${i}/ChangeLog + done + docinto misc + dodoc misc/ChangeLog + docinto resize + dodoc resize/ChangeLog + docinto util + dodoc util/ChangeLog + if [ "`use bootcd`" ] + then + rm -rf ${D}/usr/lib/lib*.a + rm -rf ${D}/usr/share ${D}/usr/include + fi +} diff --git a/sys-apps/e2fsprogs/e2fsprogs-1.22.ebuild b/sys-apps/e2fsprogs/e2fsprogs-1.22.ebuild index 406bd53bee87..bc4e80de72b2 100644 --- a/sys-apps/e2fsprogs/e2fsprogs-1.22.ebuild +++ b/sys-apps/e2fsprogs/e2fsprogs-1.22.ebuild @@ -1,7 +1,7 @@ # Copyright 1999-2000 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License, v2 or later # Author Daniel Robbins <drobbins@gentoo.org> -# $Header: /var/cvsroot/gentoo-x86/sys-apps/e2fsprogs/e2fsprogs-1.22.ebuild,v 1.1 2001/07/09 21:55:03 drobbins Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-apps/e2fsprogs/e2fsprogs-1.22.ebuild,v 1.2 2001/08/04 18:22:45 pete Exp $ S=${WORKDIR}/${P} DESCRIPTION="Standard ext2 filesystem utilities" @@ -58,23 +58,28 @@ src_install() { cd po try make DESTDIR=${D} install fi - dodir /sbin - mv ${D}/usr/sbin/fsck* ${D}/sbin - dodoc COPYING ChangeLog README RELEASE-NOTES SHLIBS - docinto e2fsck - dodoc e2fsck/ChangeLog e2fsck/CHANGES - for i in e2p et ext2fs ss uuid - do - docinto lib/${i} - dodoc lib/${i}/ChangeLog - done - docinto misc - dodoc misc/ChangeLog - docinto resize - dodoc resize/ChangeLog - docinto util - dodoc util/ChangeLog - + dodir /sbin + mv ${D}/usr/sbin/fsck* ${D}/sbin + + if [ -z "`use bootcd`" ] + then + dodoc COPYING ChangeLog README RELEASE-NOTES SHLIBS + docinto e2fsck + dodoc e2fsck/ChangeLog e2fsck/CHANGES + for i in e2p et ext2fs ss uuid + do + docinto lib/${i} + dodoc lib/${i}/ChangeLog + done + docinto misc + dodoc misc/ChangeLog + docinto resize + dodoc resize/ChangeLog + docinto util + dodoc util/ChangeLog + else + rm -rf ${D}/usr/lib/lib*.a ${D}/usr/share ${D}/usr/include + fi } diff --git a/sys-apps/e2fsprogs/files/digest-e2fsprogs-1.22-r1 b/sys-apps/e2fsprogs/files/digest-e2fsprogs-1.22-r1 new file mode 100644 index 000000000000..8f6883ba0290 --- /dev/null +++ b/sys-apps/e2fsprogs/files/digest-e2fsprogs-1.22-r1 @@ -0,0 +1 @@ +MD5 a2b689fda4e954df0258c2605bc65d9b e2fsprogs-1.22.tar.gz diff --git a/sys-apps/ed/ed-0.2-r3.ebuild b/sys-apps/ed/ed-0.2-r3.ebuild new file mode 100644 index 000000000000..ce64a0a7b14e --- /dev/null +++ b/sys-apps/ed/ed-0.2-r3.ebuild @@ -0,0 +1,36 @@ +#!/usr/bin/ebuild +# Copyright 1999-2000 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Author Daniel Robbins <drobbins@gentoo.org> +# $Header: /var/cvsroot/gentoo-x86/sys-apps/ed/ed-0.2-r3.ebuild,v 1.1 2001/08/04 18:22:45 pete Exp $ + +A=${P}.tar.gz +S=${WORKDIR}/${P} +DESCRIPTION="Your basic line editor" +SRC_URI="ftp://gatekeeper.dec.com/pub/GNU/ed/${A} + ftp://ftp.gnu.org/pub/gnu/ed/${A}" +HOMEPAGE="http://www.gnu.org/software/ed/" +DEPEND="virtual/glibc" + +src_unpack() { + unpack ${A} + cd ${WORKDIR} + patch -p0 < ${FILESDIR}/${PF}-gentoo.diff +} + +src_compile() { + + try ./configure --prefix=/ --host=${CHOST} + try pmake +} + +src_install() { + try make prefix=${D}/ mandir=${D}/usr/share/man/man1 infodir=${D}/usr/share/info \ + install + if [ -z "`use bootcd`" ] + then + dodoc COPYING ChangeLog NEWS POSIX README THANKS TODO + else + rm -rf ${D}/usr/share + fi +} diff --git a/sys-apps/ed/files/ed-0.2-r3-gentoo.diff b/sys-apps/ed/files/ed-0.2-r3-gentoo.diff new file mode 100644 index 000000000000..f99b00fd7626 --- /dev/null +++ b/sys-apps/ed/files/ed-0.2-r3-gentoo.diff @@ -0,0 +1,15 @@ +diff -r -C2 ed-0.2.orig/ed.texinfo ed-0.2/ed.texinfo +*** ed-0.2.orig/ed.texinfo Sat Nov 19 07:38:01 1994 +--- ed-0.2/ed.texinfo Fri Aug 3 19:03:33 2001 +*************** +*** 8,11 **** +--- 8,16 ---- + + @ifinfo ++ ++ @direntry ++ * ed: (ed). line editor. ++ @end direntry ++ + This file documents the @code{ed} command, which has the purpose of + editing text files. diff --git a/sys-apps/file/file-3.33-r3.ebuild b/sys-apps/file/file-3.33-r3.ebuild index d3fde78e9cc1..48876dd62a8d 100644 --- a/sys-apps/file/file-3.33-r3.ebuild +++ b/sys-apps/file/file-3.33-r3.ebuild @@ -1,7 +1,7 @@ # Copyright 1999-2000 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License, v2 or later # Author Daniel Robbins <drobbins@gentoo.org> -# $Header: /var/cvsroot/gentoo-x86/sys-apps/file/file-3.33-r3.ebuild,v 1.1 2001/07/28 15:49:20 pete Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-apps/file/file-3.33-r3.ebuild,v 1.2 2001/08/04 18:22:45 pete Exp $ A=${P}.tar.gz S=${WORKDIR}/${P} @@ -25,15 +25,13 @@ src_compile() { } src_install() { - try make DESTDIR=${D} install if [ -z "`use build`" ] && [ -z "`use bootcd`" ] then dodoc LEGAL.NOTICE MAINT README else - rm -rf ${D}/usr/share/man + rm -rf ${D}/usr/share/man fi - } diff --git a/sys-apps/fileutils/fileutils-4.1-r2.ebuild b/sys-apps/fileutils/fileutils-4.1-r2.ebuild index 557cd0b5a91d..0e3605ad8ace 100644 --- a/sys-apps/fileutils/fileutils-4.1-r2.ebuild +++ b/sys-apps/fileutils/fileutils-4.1-r2.ebuild @@ -1,7 +1,7 @@ # Copyright 1999-2000 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License, v2 or later # Author Achim Gottinger <achim@gentoo.org> -# $Header: /var/cvsroot/gentoo-x86/sys-apps/fileutils/fileutils-4.1-r2.ebuild,v 1.1 2001/07/28 15:49:20 pete Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-apps/fileutils/fileutils-4.1-r2.ebuild,v 1.2 2001/08/04 18:22:45 pete Exp $ A=${P}.tar.gz S=${WORKDIR}/${P} @@ -33,24 +33,19 @@ src_compile() { src_install() { - if [ -z "`use build`" ] && [ -z "`use bootcd`" ] - then - make prefix=${D}/usr mandir=${D}/usr/share/man infodir=${D}/usr/share/info bindir=${D}/bin install - cd ${D} - dodir /usr/bin - rm -rf usr/lib - cd usr/bin - ln -s ../../bin/* . - cd ${S} - dodoc COPYING NEWS README* THANKS TODO ChangeLog ChangeLog-1997 AUTHORS - else - cd ${S}/src - into / - dobin chgrp chown dd dir du ln mkdir mknod rm touch \ - chmod cp df ls mkfifo mv rmdir sync - newbin ginstall install - dosym /bin/install /usr/bin/install - fi + make prefix=${D}/usr mandir=${D}/usr/share/man infodir=${D}/usr/share/info bindir=${D}/bin install + cd ${D} + dodir /usr/bin + rm -rf usr/lib + cd usr/bin + ln -s ../../bin/* . + if [ -z "`use bootcd`" ] && [ -z "`use build`" ] + then + cd ${S} + dodoc COPYING NEWS README* THANKS TODO ChangeLog ChangeLog-1997 AUTHORS + else + rm -rf ${D}/usr/share + fi } diff --git a/sys-apps/gawk/gawk-3.0.6-r4.ebuild b/sys-apps/gawk/gawk-3.0.6-r4.ebuild index d8403962703e..0b04ab9d862c 100644 --- a/sys-apps/gawk/gawk-3.0.6-r4.ebuild +++ b/sys-apps/gawk/gawk-3.0.6-r4.ebuild @@ -1,7 +1,7 @@ # Copyright 1999-2000 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License, v2 or later # Author Daniel Robbins <drobbins@gentoo.org> -# $Header: /var/cvsroot/gentoo-x86/sys-apps/gawk/gawk-3.0.6-r4.ebuild,v 1.1 2001/07/28 15:49:20 pete Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-apps/gawk/gawk-3.0.6-r4.ebuild,v 1.2 2001/08/04 18:22:45 pete Exp $ A=${P}.tar.gz S=${WORKDIR}/${P} @@ -43,10 +43,7 @@ src_install() { docinto posix dodoc posix/ChangeLog else - rm -rf ${D}/usr/share/man ${D}/usr/share/info + rm -rf ${D}/usr/share fi } - - - diff --git a/sys-apps/grep/grep-2.4.2-r4.ebuild b/sys-apps/grep/grep-2.4.2-r4.ebuild index 5c788728afab..9e4e3026c20d 100644 --- a/sys-apps/grep/grep-2.4.2-r4.ebuild +++ b/sys-apps/grep/grep-2.4.2-r4.ebuild @@ -1,7 +1,7 @@ # Copyright 1999-2000 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License, v2 or later # Author Daniel Robbins <drobbins@gentoo.org> -# $Header: /var/cvsroot/gentoo-x86/sys-apps/grep/grep-2.4.2-r4.ebuild,v 1.1 2001/07/28 15:49:20 pete Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-apps/grep/grep-2.4.2-r4.ebuild,v 1.2 2001/08/04 18:22:45 pete Exp $ A=${P}.tar.gz S=${WORKDIR}/${P} @@ -39,7 +39,7 @@ src_install() { if [ -z "`use build`" ] && [ -z "`use bootcd`" ] then - dodoc AUTHORS COPYING ChangeLog NEWS README THANKS TODO + dodoc AUTHORS COPYING ChangeLog NEWS README THANKS TODO else rm -rf ${D}/usr/share fi diff --git a/sys-apps/modutils/files/digest-modutils-2.4.6-r1 b/sys-apps/modutils/files/digest-modutils-2.4.6-r1 new file mode 100644 index 000000000000..eec66e3ee301 --- /dev/null +++ b/sys-apps/modutils/files/digest-modutils-2.4.6-r1 @@ -0,0 +1 @@ +MD5 76d17cc4db31d054654cbd48717739c4 modutils-2.4.6.tar.bz2 diff --git a/sys-apps/modutils/modutils-2.4.6-r1.ebuild b/sys-apps/modutils/modutils-2.4.6-r1.ebuild new file mode 100644 index 000000000000..173833d37c19 --- /dev/null +++ b/sys-apps/modutils/modutils-2.4.6-r1.ebuild @@ -0,0 +1,27 @@ +# Copyright 1999-2000 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Author Daniel Robbins <drobbins@gentoo.org> +# $Header: /var/cvsroot/gentoo-x86/sys-apps/modutils/modutils-2.4.6-r1.ebuild,v 1.1 2001/08/04 18:22:45 pete Exp $ + +A=${P}.tar.bz2 +S=${WORKDIR}/${P} +DESCRIPTION="Standard kernel module utilities" +SRC_URI="http://www.kernel.org/pub/linux/utils/kernel/modutils/v2.4/${A}" + +DEPEND="virtual/glibc" + +src_compile() { + try ./configure --prefix=/ --mandir=/usr/share/man --host=${CHOST} --disable-strip + try make ${MAKEOPTS} +} + +src_install() { + try make prefix=${D} mandir=${D}/usr/share/man install + if [ -z "`use bootcd`" ] + then + dodoc COPYING CREDITS ChangeLog NEWS README TODO + else + rm -rf ${D}/usr + fi + +} diff --git a/sys-apps/net-tools/files/digest-net-tools-1.60-r1 b/sys-apps/net-tools/files/digest-net-tools-1.60-r1 new file mode 100644 index 000000000000..07bfa015d70c --- /dev/null +++ b/sys-apps/net-tools/files/digest-net-tools-1.60-r1 @@ -0,0 +1 @@ +MD5 888774accab40217dde927e21979c165 net-tools-1.60.tar.bz2 diff --git a/sys-apps/net-tools/net-tools-1.60-r1.ebuild b/sys-apps/net-tools/net-tools-1.60-r1.ebuild new file mode 100644 index 000000000000..519636fda281 --- /dev/null +++ b/sys-apps/net-tools/net-tools-1.60-r1.ebuild @@ -0,0 +1,57 @@ +# Copyright 1999-2000 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Author Daniel Robbins <drobbins@gentoo.org> +# $Header: /var/cvsroot/gentoo-x86/sys-apps/net-tools/net-tools-1.60-r1.ebuild,v 1.1 2001/08/04 18:22:45 pete Exp $ + +A=${P}.tar.bz2 +S=${WORKDIR}/${P} +DESCRIPTION="standard Linux network tools" +SRC_URI="http://www.tazenda.demon.co.uk/phil/net-tools/${A}" +HOMEPAGE="http://sites.inka.de/lina/linux/NetTools/" + +DEPEND="virtual/glibc + sys-devel/gettext" +RDEPEND="virtual/glibc" + +src_unpack() { + + unpack ${A} + cd ${S} + cp ${FILESDIR}/config.h . + cp ${FILESDIR}/config.make . + cp Makefile Makefile.orig + sed -e "s/-O2 -Wall -g/${CFLAGS}/" Makefile.orig > Makefile + cd man + cp Makefile Makefile.orig + sed -e "s:/usr/man:/usr/share/man:" Makefile.orig > Makefile + +} + +src_compile() { + + try make ${MAKEOPTS} + cd po + try make ${MAKEOPTS} + +} + +src_install() { + + try make BASEDIR=${D} install + mv ${D}/bin/* ${D}/sbin + for i in hostname domainname netstat dnsdomainname ypdomainname nisdomainname + do + mv ${D}/sbin/${i} ${D}/bin + done + dosym /bin/hostname /usr/bin/hostname + + if [ -z "`use bootcd`" ] + then + dodoc COPYING README README.ipv6 TODO + else + rm -rf ${D}/usr/share + fi +} + + + diff --git a/sys-apps/netkit-base/files/digest-netkit-base-0.17-r3 b/sys-apps/netkit-base/files/digest-netkit-base-0.17-r3 new file mode 100644 index 000000000000..8f379421bf7a --- /dev/null +++ b/sys-apps/netkit-base/files/digest-netkit-base-0.17-r3 @@ -0,0 +1 @@ +MD5 1f0193358e92559ec0f598b09ccbc0ec netkit-base-0.17.tar.gz diff --git a/sys-apps/netkit-base/netkit-base-0.17-r3.ebuild b/sys-apps/netkit-base/netkit-base-0.17-r3.ebuild new file mode 100644 index 000000000000..35ae3cad6156 --- /dev/null +++ b/sys-apps/netkit-base/netkit-base-0.17-r3.ebuild @@ -0,0 +1,42 @@ +# Copyright 1999-2000 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Author Daniel Robbins <drobbins@gentoo.org> +# $Header: /var/cvsroot/gentoo-x86/sys-apps/netkit-base/netkit-base-0.17-r3.ebuild,v 1.1 2001/08/04 18:22:45 pete Exp $ + +P=netkit-base-0.17 +A=${P}.tar.gz +S=${WORKDIR}/${P} +DESCRIPTION="Standard linux net thingees -- inetd, ping" +SRC_URI="ftp://ftp.uk.linux.org/pub/linux/Networking/netkit/${A}" + +DEPEND="virtual/glibc" + +src_compile() { + + try ./configure + cp MCONFIG MCONFIG.orig + #sed -e "s/-O2/${CFLAGS} -Wstrict-prototypes -fomit-frame-pointer/" + sed -e "s:^CFLAGS=.*:CFLAGS=${CFLAGS} -Wall -Wbad-function-cast -Wcast-qual -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations -Wnested-externs -Winline:" \ + MCONFIG.orig > MCONFIG + + try make ${MAKEOPTS} +} + + +src_install() { + into / + dobin ping/ping + if [ -z "`use bootcd`" ] + then + into /usr + dosbin inetd/inetd + doman inetd/inetd.8 inetd/daemon.3 ping/ping.8 + + dodoc BUGS ChangeLog README + docinto samples + dodoc etc.sample/* + fi +} + + + diff --git a/sys-apps/parted/files/digest-parted-1.4.14-r2 b/sys-apps/parted/files/digest-parted-1.4.14-r2 new file mode 100644 index 000000000000..3bfb1847bfb1 --- /dev/null +++ b/sys-apps/parted/files/digest-parted-1.4.14-r2 @@ -0,0 +1 @@ +MD5 d8380734aca46a3bb32da867800d01f9 parted-1.4.14.tar.gz diff --git a/sys-apps/parted/files/digest-parted-1.4.17 b/sys-apps/parted/files/digest-parted-1.4.17 new file mode 100644 index 000000000000..e1aa5d473d91 --- /dev/null +++ b/sys-apps/parted/files/digest-parted-1.4.17 @@ -0,0 +1 @@ +MD5 ec35196a50d7d2e5052a986dd1ff149d parted-1.4.17.tar.gz 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 new file mode 100644 index 000000000000..db4dd1b881ca --- /dev/null +++ b/sys-apps/parted/files/parted-1.4.14-r2-gentoo.diff @@ -0,0 +1,2336 @@ +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 new file mode 100644 index 000000000000..fbf2d17e4d22 --- /dev/null +++ b/sys-apps/parted/files/parted-1.4.17-gentoo.diff @@ -0,0 +1,13318 @@ +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-r2.ebuild b/sys-apps/parted/parted-1.4.14-r2.ebuild new file mode 100644 index 000000000000..59e7edc5dc45 --- /dev/null +++ b/sys-apps/parted/parted-1.4.14-r2.ebuild @@ -0,0 +1,63 @@ +# 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.17.ebuild b/sys-apps/parted/parted-1.4.17.ebuild new file mode 100644 index 000000000000..375d9c83044a --- /dev/null +++ b/sys-apps/parted/parted-1.4.17.ebuild @@ -0,0 +1,70 @@ +# 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.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-2.50 + >=sys-devel/automake-1.4_p5" + +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 PYTHON=/usr/bin/python ./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/procps/files/digest-procps-2.0.6-r2 b/sys-apps/procps/files/digest-procps-2.0.6-r2 new file mode 100644 index 000000000000..765fe621dd40 --- /dev/null +++ b/sys-apps/procps/files/digest-procps-2.0.6-r2 @@ -0,0 +1 @@ +MD5 2e6e156f0791b0e209d05aaf7204a219 procps-2.0.6.tar.gz diff --git a/sys-apps/procps/files/digest-procps-2.0.7-r4 b/sys-apps/procps/files/digest-procps-2.0.7-r4 new file mode 100644 index 000000000000..47a95728f6a2 --- /dev/null +++ b/sys-apps/procps/files/digest-procps-2.0.7-r4 @@ -0,0 +1 @@ +MD5 bd8d68a9fd0c3f37365f924e75009c8a procps-2.0.7.tar.gz diff --git a/sys-apps/procps/procps-2.0.6-r2.ebuild b/sys-apps/procps/procps-2.0.6-r2.ebuild new file mode 100644 index 000000000000..b98fb28dc19c --- /dev/null +++ b/sys-apps/procps/procps-2.0.6-r2.ebuild @@ -0,0 +1,59 @@ +# Copyright 1999-2000 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Author Achim Gottinger <achim@gentoo.org> +# $Header: /var/cvsroot/gentoo-x86/sys-apps/procps/procps-2.0.6-r2.ebuild,v 1.1 2001/08/04 18:22:45 pete Exp $ + +A=${P}.tar.gz +S=${WORKDIR}/${P} +DESCRIPTION="Standard informational utilities and process-handling tools" +SRC_URI="ftp://people.redhat.com/johnsonm/procps/${A}" +DEPEND="virtual/glibc >=sys-libs/ncurses-5.2-r2" + +src_unpack() { + + unpack ${A} + + cd ${S} + patch -p0 < ${FILESDIR}/${PF}.diff + + mv Makefile Makefile.orig + sed -e "s/-O3/${CFLAGS}/" -e 's/all: config/all: /' \ + -e "s:--strip::" -e 's:/usr/man:/usr/share/man:' Makefile.orig > Makefile + + cd ${S}/ps + mv Makefile Makefile.orig + sed -e "s/-O2/${CFLAGS}/" -e "s:--strip::" -e 's:/usr/man:/usr/share/man:' Makefile.orig > Makefile + + cd ${S}/proc + mv Makefile Makefile.orig + sed -e "s/-O2/${CFLAGS}/" -e "s:--strip::" -e 's:/usr/man:/usr/share/man:' Makefile.orig > Makefile + +} + +src_compile() { + try make ${MAKEOPTS} +} + +src_install() { + + dodir /usr/bin + dodir /sbin + dodir /usr/X11R6/bin + dodir /usr/share/man/man{1,5,8} + dodir /lib + dodir /bin + try make DESTDIR=${D} install + + preplib / + if [ -z "`use bootcd`" ] + then + dodoc BUGS COPYING COPYING.LIB NEWS TODO + docinto proc + dodoc proc/COPYING + docinto ps + dodoc ps/COPYING ps/HACKING + else + rm -rf ${D}/usr/X11R6 + rm -rf ${D}/usr/share + fi +} diff --git a/sys-apps/procps/procps-2.0.7-r3.ebuild b/sys-apps/procps/procps-2.0.7-r3.ebuild index 5ed1687af6e2..1e399b6ecf10 100644 --- a/sys-apps/procps/procps-2.0.7-r3.ebuild +++ b/sys-apps/procps/procps-2.0.7-r3.ebuild @@ -1,7 +1,7 @@ # Copyright 1999-2000 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License, v2 or later # Author Achim Gottinger <achim@gentoo.org> -# $Header: /var/cvsroot/gentoo-x86/sys-apps/procps/procps-2.0.7-r3.ebuild,v 1.2 2001/06/09 14:11:57 achim Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-apps/procps/procps-2.0.7-r3.ebuild,v 1.3 2001/08/04 18:22:45 pete Exp $ A=${P}.tar.gz S=${WORKDIR}/${P} @@ -20,15 +20,15 @@ src_unpack() { mv Makefile Makefile.orig sed -e "s/-O3/${CFLAGS}/" -e 's/all: config/all: /' \ - -e "s:--strip::" Makefile.orig > Makefile + -e "s:--strip::" -e 's:/usr/man:/usr/share/man:' Makefile.orig > Makefile cd ${S}/ps mv Makefile Makefile.orig - sed -e "s/-O2/${CFLAGS}/" -e "s:--strip::" Makefile.orig > Makefile + sed -e "s/-O2/${CFLAGS}/" -e "s:--strip::" -e 's:/usr/man:/usr/share/man:' Makefile.orig > Makefile cd ${S}/proc mv Makefile Makefile.orig - sed -e "s/-O2/${CFLAGS}/" -e "s:--strip::" Makefile.orig > Makefile + sed -e "s/-O2/${CFLAGS}/" -e "s:--strip::" -e 's:/usr/man:/usr/share/man:' Makefile.orig > Makefile } diff --git a/sys-apps/procps/procps-2.0.7-r4.ebuild b/sys-apps/procps/procps-2.0.7-r4.ebuild new file mode 100644 index 000000000000..a32a6efe0eb7 --- /dev/null +++ b/sys-apps/procps/procps-2.0.7-r4.ebuild @@ -0,0 +1,64 @@ +# Copyright 1999-2000 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Author Achim Gottinger <achim@gentoo.org> +# $Header: /var/cvsroot/gentoo-x86/sys-apps/procps/procps-2.0.7-r4.ebuild,v 1.1 2001/08/04 18:22:45 pete Exp $ + +A=${P}.tar.gz +S=${WORKDIR}/${P} +DESCRIPTION="Standard informational utilities and process-handling tools" +SRC_URI="ftp://people.redhat.com/johnsonm/procps/${A}" +RDEPEND=">=sys-libs/ncurses-5.2-r2" +DEPEND="${RDEPEND} + >=sys-devel/gettext-0.10.35" + +src_unpack() { + + unpack ${A} + + cd ${S} + patch -p1 < ${FILESDIR}/${P}.diff + + mv Makefile Makefile.orig + sed -e "s/-O3/${CFLAGS}/" -e 's/all: config/all: /' \ + -e "s:--strip::" -e 's:/usr/man:/usr/share/man:' Makefile.orig > Makefile + + cd ${S}/ps + mv Makefile Makefile.orig + sed -e "s/-O2/${CFLAGS}/" -e "s:--strip::" -e 's:/usr/man:/usr/share/man:' Makefile.orig > Makefile + + cd ${S}/proc + mv Makefile Makefile.orig + sed -e "s/-O2/${CFLAGS}/" -e "s:--strip::" -e 's:/usr/man:/usr/share/man:' Makefile.orig > Makefile + +} + +src_compile() { + try make ${MAKEOPTS} +} + +src_install() { + + dodir /usr/bin + dodir /sbin + dodir /usr/X11R6/bin + dodir /usr/share/man/man{1,5,8} + dodir /lib + dodir /bin + try make DESTDIR=${D} MANDIR=/usr/share/man install + + preplib / + + if [ -z "`use bootcd`" ] + then + dodoc BUGS COPYING COPYING.LIB NEWS TODO + docinto proc + dodoc proc/COPYING + docinto ps + dodoc ps/COPYING ps/HACKING + else + rm -rf ${D}/usr/X11R6 ${D}/usr/share + fi +} + + + diff --git a/sys-apps/psmisc/files/digest-psmisc-19-r3 b/sys-apps/psmisc/files/digest-psmisc-19-r3 new file mode 100644 index 000000000000..f5049b5a2da9 --- /dev/null +++ b/sys-apps/psmisc/files/digest-psmisc-19-r3 @@ -0,0 +1 @@ +MD5 1d56ac6c32b657fdf8f780084b095932 psmisc-19.tar.gz diff --git a/sys-apps/psmisc/psmisc-19-r3.ebuild b/sys-apps/psmisc/psmisc-19-r3.ebuild new file mode 100644 index 000000000000..bb467207b9c0 --- /dev/null +++ b/sys-apps/psmisc/psmisc-19-r3.ebuild @@ -0,0 +1,41 @@ +# Copyright 1999-2000 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Author Daniel Robbins <drobbins@gentoo.org> +# $Header: /var/cvsroot/gentoo-x86/sys-apps/psmisc/psmisc-19-r3.ebuild,v 1.1 2001/08/04 18:22:45 pete Exp $ + +#from Debian ;) + +A=${P}.tar.gz +S=${WORKDIR}/psmisc +DESCRIPTION="Handy process-related utilities from Debian" +SRC_URI="ftp://lrcftp.epfl.ch/pub/linux/local/psmisc/"${A} +DEPEND="virtual/glibc >=sys-libs/ncurses-5.2-r2" + +src_unpack() { + unpack ${A} + cd ${S} + cp Makefile Makefile.orig + sed -e "s/-ltermcap/-lncurses/g" -e "s/-O/${CFLAGS}/" -e "s:-Wpointer-arith::" Makefile.orig > Makefile +} + +src_compile() { + try pmake +} + +src_install() { + if [ "`use bootcd`" ] + then + into / + fi + dobin killall pstree + dosym killall /usr/bin/pidof + + into / + dobin fuser + + if [ -z "`use bootcd`" ] + then + doman *.1 + dodoc CHANGES COPYING README VERSION psmisc-19.lsm + fi +} diff --git a/sys-apps/reiserfs-utils/files/digest-reiserfs-utils-3.6.25-r7 b/sys-apps/reiserfs-utils/files/digest-reiserfs-utils-3.6.25-r7 new file mode 100644 index 000000000000..76ec362bf324 --- /dev/null +++ b/sys-apps/reiserfs-utils/files/digest-reiserfs-utils-3.6.25-r7 @@ -0,0 +1 @@ +MD5 48e4c6c7ea0b7a4199e9c3310bbf19ce reiserfsprogs-3.x.0j.tar.gz diff --git a/sys-apps/reiserfs-utils/reiserfs-utils-3.6.25-r7.ebuild b/sys-apps/reiserfs-utils/reiserfs-utils-3.6.25-r7.ebuild new file mode 100644 index 000000000000..fa0e6aa6ac6c --- /dev/null +++ b/sys-apps/reiserfs-utils/reiserfs-utils-3.6.25-r7.ebuild @@ -0,0 +1,31 @@ +# Copyright 1999-2000 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Author Your Name <your email> +# $Header: /var/cvsroot/gentoo-x86/sys-apps/reiserfs-utils/reiserfs-utils-3.6.25-r7.ebuild,v 1.1 2001/08/04 18:22:45 pete Exp $ + +S=${WORKDIR}/reiserfsprogs-3.x.0j +DESCRIPTION="Reiserfs Utilities" +SRC_URI="ftp://ftp.namesys.com/pub/reiserfsprogs/reiserfsprogs-3.x.0j.tar.gz" +HOMEPAGE="http://www.namesys.com" + +DEPEND="virtual/glibc" + +src_compile() { + cd ${S} + try ./configure --host=${CHOST} + try make +} + +src_install () { + try make DESTDIR=${D} install + dodir /usr/share + cd ${D} + mv man usr/share + cd ${D}/sbin + ln -s fsck.reiserfs reiserfsck + if [ "`use bootcd`" ] + then + rm -rf ${D}/usr + fi +} + diff --git a/sys-apps/sh-utils/sh-utils-2.0j-r4.ebuild b/sys-apps/sh-utils/sh-utils-2.0j-r4.ebuild index c2853ea08510..95a8e41c688d 100644 --- a/sys-apps/sh-utils/sh-utils-2.0j-r4.ebuild +++ b/sys-apps/sh-utils/sh-utils-2.0j-r4.ebuild @@ -2,7 +2,7 @@ # Copyright 1999-2000 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License, v2 or later # Author Achim Gottinger <achim@gentoo.org> -# $Header: /var/cvsroot/gentoo-x86/sys-apps/sh-utils/sh-utils-2.0j-r4.ebuild,v 1.1 2001/07/28 15:49:20 pete Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-apps/sh-utils/sh-utils-2.0j-r4.ebuild,v 1.2 2001/08/04 18:22:45 pete Exp $ A=${P}.tar.gz S=${WORKDIR}/${P} @@ -29,10 +29,10 @@ src_compile() { myconf="--disable-nls" fi - try CFLAGS=\"${CFLAGS}\" ./configure --host=${CHOST} --build=${CHOST} \ + CFLAGS="${CFLAGS}" try ./configure --host=${CHOST} --build=${CHOST} \ --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info \ --without-included-regex ${myconf} - + if [ -z "`use static`" ] then try make ${MAKEOPTS} @@ -42,7 +42,6 @@ src_compile() { } src_install() { - try make prefix=${D}/usr mandir=${D}/usr/share/man infodir=${D}/usr/share/info install rm -rf ${D}/usr/lib dodir /bin @@ -52,14 +51,13 @@ src_install() { if [ -z "`use build`" ] && [ -z "`use bootcd`" ] then # We must use hostname from net-base - rm hostname - cd ${S} - dodoc AUTHORS COPYING ChangeLog ChangeLog.0 \ - NEWS README THANKS TODO - else - rm -rf ${D}/usr/lib ${D}/usr/share - fi - + rm ${D}/usr/bin/hostname + cd ${S} + dodoc AUTHORS COPYING ChangeLog ChangeLog.0 \ + NEWS README THANKS TODO + else + rm -rf ${D}/usr/share + fi } diff --git a/sys-apps/shadow/shadow-20001016-r4.ebuild b/sys-apps/shadow/shadow-20001016-r4.ebuild index 89ebb72f6aa6..558b4a392c1c 100644 --- a/sys-apps/shadow/shadow-20001016-r4.ebuild +++ b/sys-apps/shadow/shadow-20001016-r4.ebuild @@ -1,7 +1,7 @@ # Copyright 1999-2000 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License, v2 or later # Author Achim Gottinger <achim@gentoo.org> -# $Header: /var/cvsroot/gentoo-x86/sys-apps/shadow/shadow-20001016-r4.ebuild,v 1.3 2001/08/04 16:53:56 drobbins Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-apps/shadow/shadow-20001016-r4.ebuild,v 1.4 2001/08/04 18:22:45 pete Exp $ A=${P}.tar.gz S=${WORKDIR}/${P} @@ -61,19 +61,23 @@ src_install() { #Now using a new securetty with devfs device names added #(compat names kept for non-devfs compatibility) doins ${FILESDIR}/securetty - - cd pam.d - insinto /etc/pam.d - insopts -m0644 - doins ${FILESDIR}/shadow - newins ${FILESDIR}/shadow groupadd - newins ${FILESDIR}/shadow useradd - - cd ${S}/doc - dodoc ANNOUNCE INSTALL LICENSE README WISHLIST - docinto txt - dodoc HOWTO LSM README.* *.txt - + + cd pam.d + insinto /etc/pam.d + insopts -m0644 + doins ${FILESDIR}/shadow + newins ${FILESDIR}/shadow groupadd + newins ${FILESDIR}/shadow useradd + + if [ -z "`use bootcd`" ] + then + cd ${S}/doc + dodoc ANNOUNCE INSTALL LICENSE README WISHLIST + docinto txt + dodoc HOWTO LSM README.* *.txt + else + rm -rf ${D}/usr/share ${D}/usr/lib/lib*.{a,la} + fi } diff --git a/sys-apps/sysvinit/files/digest-sysvinit-2.78-r4 b/sys-apps/sysvinit/files/digest-sysvinit-2.78-r4 new file mode 100644 index 000000000000..762e3231d98c --- /dev/null +++ b/sys-apps/sysvinit/files/digest-sysvinit-2.78-r4 @@ -0,0 +1 @@ +MD5 cf40920a0423b05479504d79c0bd70ea sysvinit-2.78.tar.gz diff --git a/sys-apps/sysvinit/sysvinit-2.78-r4.ebuild b/sys-apps/sysvinit/sysvinit-2.78-r4.ebuild new file mode 100644 index 000000000000..99fa516dcd7e --- /dev/null +++ b/sys-apps/sysvinit/sysvinit-2.78-r4.ebuild @@ -0,0 +1,49 @@ +# Copyright 1999-2000 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Author Daniel robbins <achim@gentoo.org> +# $Header: /var/cvsroot/gentoo-x86/sys-apps/sysvinit/sysvinit-2.78-r4.ebuild,v 1.1 2001/08/04 18:22:45 pete Exp $ + +A=${P}.tar.gz +S=${WORKDIR}/${P}/src +DESCRIPTION="System initialization stuff" +SRC_URI="ftp://metalab.unc.edu/pub/Linux/system/daemons/init/${A}" +DEPEND="virtual/glibc" + +src_unpack() { + + unpack ${A} + cd ${S} + mv Makefile Makefile.orig + sed -e "s/-O2/${CFLAGS}/" Makefile.orig > Makefile +} + +src_compile() { + + try pmake LDFLAGS="" + cd ../contrib + try gcc ${CFLAGS} start-stop-daemon.c -o start-stop-daemon +} + + +src_install() { + + into / + dosbin halt init killall5 runlevel shutdown sulogin + dosym init /sbin/telinit + dobin last mesg utmpdump wall + dosym killall5 /sbin/pidof + dosym halt /sbin/reboot + cd ../contrib + dosbin start-stop-daemon + if [ -z "`use bootcd`" ] + then + into /usr + cd ../man + doman *.[1-9] + cd .. + dodoc README doc/* contrib/start-stop-daemon.README + else + rm -rf ${D}/usr/share + fi + +} diff --git a/sys-apps/tar/files/tar-1.13.19-r1-gentoo.diff b/sys-apps/tar/files/tar-1.13.19-r1-gentoo.diff new file mode 100644 index 000000000000..26c0d63bedc1 --- /dev/null +++ b/sys-apps/tar/files/tar-1.13.19-r1-gentoo.diff @@ -0,0 +1,40 @@ +*** misc.c.orig Sat Jan 13 08:59:29 2001 +--- misc.c Mon Jul 9 15:45:09 2001 +*************** +*** 201,217 **** + { + char const *p = name + FILESYSTEM_PREFIX_LEN (name); + + for (;;) + { +! if (p[0] == '.' && p[1] == '.' && (ISSLASH (p[2]) || !p[2])) + return 1; + + do + { +! if (! *p++) + return 0; + } +! while (! ISSLASH (*p)); + } + } + +--- 201,218 ---- + { + char const *p = name + FILESYSTEM_PREFIX_LEN (name); + ++ if(ISSLASH (*p) ) return 1; + for (;;) + { +! if (p[0] == '.' && p[1] == '.' && (!p[2] || ISSLASH (p[2]))) + return 1; + + do + { +! if (! *p) + return 0; + } +! while (! ISSLASH (*p++)); + } + } + diff --git a/sys-apps/tar/tar-1.13.19-r1.ebuild b/sys-apps/tar/tar-1.13.19-r1.ebuild index aed64224a93d..d6b60dda0660 100644 --- a/sys-apps/tar/tar-1.13.19-r1.ebuild +++ b/sys-apps/tar/tar-1.13.19-r1.ebuild @@ -1,7 +1,7 @@ # Copyright 1999-2000 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License, v2 or later # Author Achim Gottinger <achim@gentoo.org> -# $Header: /var/cvsroot/gentoo-x86/sys-apps/tar/tar-1.13.19-r1.ebuild,v 1.1 2001/07/28 15:49:20 pete Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-apps/tar/tar-1.13.19-r1.ebuild,v 1.2 2001/08/04 18:22:45 pete Exp $ A=${P}.tar.gz S=${WORKDIR}/${P} @@ -18,7 +18,7 @@ RDEPEND="virtual/glibc" src_unpack() { unpack ${A} cd ${S}/src - patch -p0 < ${FILESDIR}/tar-1.13.19.patch + patch -p0 < ${FILESDIR}/${PF}-gentoo.diff } src_compile() { @@ -57,5 +57,3 @@ src_install() { fi } - - diff --git a/sys-apps/util-linux/files/digest-util-linux-2.11g-r1 b/sys-apps/util-linux/files/digest-util-linux-2.11g-r1 new file mode 100644 index 000000000000..b0cb31eb9a9d --- /dev/null +++ b/sys-apps/util-linux/files/digest-util-linux-2.11g-r1 @@ -0,0 +1 @@ +MD5 d3f23c93f96b94cf339b233fe3cbc7ae util-linux-2.11g.tar.gz diff --git a/sys-apps/util-linux/util-linux-2.11g-r1.ebuild b/sys-apps/util-linux/util-linux-2.11g-r1.ebuild new file mode 100644 index 000000000000..153c98f7f606 --- /dev/null +++ b/sys-apps/util-linux/util-linux-2.11g-r1.ebuild @@ -0,0 +1,63 @@ +# Copyright 1999-2000 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Author Daniel Robbins <drobbins@gentoo.org> +# $Header: /var/cvsroot/gentoo-x86/sys-apps/util-linux/util-linux-2.11g-r1.ebuild,v 1.1 2001/08/04 18:22:45 pete Exp $ + +S=${WORKDIR}/${P} +DESCRIPTION="Various useful Linux utilities" +SRC_URI="ftp://ftp.win.tue.nl/pub/linux-local/utils/util-linux/${P}.tar.gz" + +DEPEND="virtual/glibc >=sys-libs/ncurses-5.2-r2" + +RDEPEND="$DEPEND + sys-devel/perl" + +src_unpack() { + + unpack ${P}.tar.gz + cd ${S} + cp MCONFIG MCONFIG.orig + sed -e "s:-pipe -O2 \$(CPUOPT) -fomit-frame-pointer:${CFLAGS}:" \ + -e "s:CPU=.*:CPU=${CHOST%%-*}:" \ + -e "s:HAVE_PAM=no:HAVE_PAM=yes:" \ + -e "s:HAVE_SLN=no:HAVE_SLN=yes:" \ + -e "s:HAVE_TSORT=no:HAVE_TSORT=yes:" \ + -e "s:usr/man:usr/share/man:" \ + -e "s:usr/info:usr/share/info:" \ + MCONFIG.orig > MCONFIG.orig2 + if [ "`use simpleinit`" ] + then + sed -e "s:HAVE_SYSVINIT=yes:HAVE_SYSVINIT=no:" \ + -e "s:HAVE_SYSVINIT_UTILS=yes:HAVE_SYSVINIT_UTILS=no:" \ + MCONFIG.orig2 > MCONFIG + else + mv MCONFIG.orig2 MCONFIG + fi + +} + +src_compile() { + + try ./configure + try make ${MAKEOPTS} LDFLAGS="" +} + + +src_install() { + + try make DESTDIR=${D} install + + if [ -z "`use bootcd`" ] + then + dodoc HISTORY MAINTAINER README VERSION + docinto licenses + dodoc licenses/* HISTORY + docinto examples + dodoc example.files/* + else + rm -rf ${D}/usr/games + rm -rf ${D}/usr/share/{doc,man,info,misc/getopt,locale} + fi +} + + diff --git a/sys-devel/gettext/files/digest-gettext-0.10.39 b/sys-devel/gettext/files/digest-gettext-0.10.39 new file mode 100644 index 000000000000..d8e7c8d32b03 --- /dev/null +++ b/sys-devel/gettext/files/digest-gettext-0.10.39 @@ -0,0 +1 @@ +MD5 dbf95acae3cd03c85c86efed85969d30 gettext-0.10.39.tar.gz diff --git a/sys-devel/gettext/gettext-0.10.39.ebuild b/sys-devel/gettext/gettext-0.10.39.ebuild new file mode 100644 index 000000000000..fb6251ee819e --- /dev/null +++ b/sys-devel/gettext/gettext-0.10.39.ebuild @@ -0,0 +1,44 @@ +# Copyright 1999-2000 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Author Daniel Robbins <drobbins@gentoo.org> +# $Header: /var/cvsroot/gentoo-x86/sys-devel/gettext/gettext-0.10.39.ebuild,v 1.1 2001/08/04 18:22:45 pete Exp $ + +A=${P}.tar.gz +S=${WORKDIR}/${P} +DESCRIPTION="GNU locale utilities" +SRC_URI="ftp://gatekeeper.dec.com/pub/GNU/gettext/${A} + ftp://prep.ai.mit.edu/gnu/gettext/${A}" +HOMEPAGE="http://www.gnu.org/software/gettext/gettext.html" + +if [ -z "`use build`" ] ; then +DEPEND="virtual/glibc" +fi + +src_compile() { + local myconf + if [ -z "`use nls`" ] + then + myconf="--disable-nls" + fi + try ./configure --prefix=/usr --infodir=/usr/share/info --mandir=/usr/share/man \ + --with-included-gettext --disable-shared --host=${CHOST} ${myconf} + try make ${MAKEOPTS} +} + +src_install() { + + try make prefix=${D}/usr infodir=${D}/usr/share/info \ + mandir=${D}/usr/share/man \ + lispdir=${D}/usr/share/emacs/site-lisp install + + dodoc AUTHORS BUGS COPYING ChangeLog DISCLAIM NEWS README* THANKS TODO + if [ -d ${D}/usr/doc/gettext ] ; then + mv ${D}/usr/doc/gettext ${D}/usr/share/doc/${PF}/html + rm -rf ${D}/usr/doc + fi + exeopts -m0755 + exeinto /usr/bin + doexe misc/gettextize +} + + diff --git a/sys-devel/spython/files/spython-2.0-r7-gentoo.diff b/sys-devel/spython/files/spython-2.0-r7-gentoo.diff new file mode 100644 index 000000000000..0aba7fdd0980 --- /dev/null +++ b/sys-devel/spython/files/spython-2.0-r7-gentoo.diff @@ -0,0 +1,477 @@ +diff -urP Python-2.0.orig/Makefile.in Python-2.0/Makefile.in +--- Python-2.0.orig/Makefile.in Mon Oct 16 17:50:06 2000 ++++ Python-2.0/Makefile.in Wed Jul 11 20:03:34 2001 +@@ -73,11 +73,11 @@ + SCRIPTDIR= $(prefix)/lib + + # Detailed destination directories +-BINLIBDEST= $(LIBDIR)/python$(VERSION) +-LIBDEST= $(SCRIPTDIR)/python$(VERSION) +-INCLUDEPY= $(INCLUDEDIR)/python$(VERSION) +-CONFINCLUDEPY= $(CONFINCLUDEDIR)/python$(VERSION) +-LIBP= $(LIBDIR)/python$(VERSION) ++BINLIBDEST= $(LIBDIR)/spython$(VERSION) ++LIBDEST= $(SCRIPTDIR)/spython$(VERSION) ++INCLUDEPY= $(INCLUDEDIR)/spython$(VERSION) ++CONFINCLUDEPY= $(CONFINCLUDEDIR)/spython$(VERSION) ++LIBP= $(LIBDIR)/spython$(VERSION) + + # Symbols used for using shared libraries + SO= @SO@ +@@ -129,14 +129,14 @@ + # Compilation flags for getbuildinfo.c only + CFLAGS= $(OPT) -I. $(DEFS) + +-LIBRARY= libpython$(VERSION).a ++LIBRARY= libspython$(VERSION).a + LDLIBRARY= @LDLIBRARY@ + + # Default target +-all: $(LIBRARY) python$(EXE) sharedmods ++all: $(LIBRARY) spython$(EXE) sharedmods + + # Build the interpreter +-python$(EXE): $(LIBRARY) buildno Modules/python.o ++spython$(EXE): $(LIBRARY) buildno Modules/python.o + expr `cat buildno` + 1 >buildno1 + mv -f buildno1 buildno + $(CC) -c $(CFLAGS) -DBUILD=`cat buildno` \ +@@ -155,7 +155,7 @@ + echo 0 >buildno + + # Build the shared modules +-sharedmods: python$(EXE) ++sharedmods: spython$(EXE) + cd Modules; $(MAKE) OPT="$(OPT)" VERSION="$(VERSION)" \ + prefix="$(prefix)" exec_prefix="$(exec_prefix)" \ + sharedmods +@@ -169,7 +169,7 @@ + (cd $$i; $(MAKE) VERSION="$(VERSION)" add2lib); done + + # This rule is only here for DG/UX and BeOS!!! +-libpython$(VERSION).so: $(LIBRARY) ++libspython$(VERSION).so: $(LIBRARY) + case `uname -s | tr -d '/ ' | tr '[A-Z]' '[a-z]'` in \ + *dgux*) \ + test -d dgux || mkdir dgux; \ +@@ -182,7 +182,7 @@ + esac + + # This rule is here for OPENSTEP/Rhapsody/MacOSX +-libpython$(VERSION).dylib: $(LIBRARY) ++libspython$(VERSION).dylib: $(LIBRARY) + libtool -o $(LDLIBRARY) -dynamic $(OTHER_LIBTOOL_OPT) $(LIBRARY) -framework System @LIBTOOL_CRUFT@ + + $(SUBDIRS): Makefiles +@@ -210,7 +210,7 @@ + # Test the interpreter (twice, once without .pyc files, once with) + TESTOPTS= -l + TESTPROG= $(srcdir)/Lib/test/regrtest.py +-TESTPYTHON= ./python$(EXE) -tt ++TESTPYTHON= ./spython$(EXE) -tt + test: all + -rm -f $(srcdir)/Lib/test/*.py[co] + -PYTHONPATH= $(TESTPYTHON) $(TESTPROG) $(TESTOPTS) +@@ -224,15 +224,15 @@ + + # Install the interpreter (by creating a hard link to python$(VERSION)) + bininstall: altbininstall +- -if test -f $(BINDIR)/python$(EXE); \ +- then rm -f $(BINDIR)/python$(EXE); \ ++ -if test -f $(BINDIR)/spython$(EXE); \ ++ then rm -f $(BINDIR)/spython$(EXE); \ + else true; \ + fi +- (cd $(BINDIR); $(LN) python$(VERSION)$(EXE) python$(EXE)) ++ (cd $(BINDIR); $(LN) spython$(VERSION)$(EXE) spython$(EXE)) + + # Install the interpreter with $(VERSION) affixed + # This goes into $(exec_prefix) +-altbininstall: python$(EXE) ++altbininstall: spython$(EXE) + @for i in $(BINDIR); \ + do \ + if test ! -d $$i; then \ +@@ -242,9 +242,9 @@ + else true; \ + fi; \ + done +- $(INSTALL_PROGRAM) python$(EXE) $(BINDIR)/python$(VERSION)$(EXE) +- if test -f libpython$(VERSION).so; then \ +- $(INSTALL_DATA) libpython$(VERSION).so $(LIBDIR); \ ++ $(INSTALL_PROGRAM) spython$(EXE) $(BINDIR)/spython$(VERSION)$(EXE) ++ if test -f libspython$(VERSION).so; then \ ++ $(INSTALL_DATA) libspython$(VERSION).so $(LIBDIR)/libspython$(VERSION).so; \ + else true; \ + fi + +@@ -260,7 +260,7 @@ + fi; \ + done + $(INSTALL_DATA) $(srcdir)/Misc/python.man \ +- $(MANDIR)/man1/python.1 ++ $(MANDIR)/man1/spython.1 + + # Install the library + PLATDIR= plat-$(MACHDEP) +@@ -268,7 +268,7 @@ + XMLLIBSUBDIRS= xml xml/dom xml/parsers xml/sax + LIBSUBDIRS= lib-old lib-tk site-packages test test/output encodings \ + distutils distutils/command $(XMLLIBSUBDIRS) curses $(MACHDEPS) +-libinstall: python $(srcdir)/Lib/$(PLATDIR) ++libinstall: spython $(srcdir)/Lib/$(PLATDIR) + @for i in $(SCRIPTDIR) $(LIBDEST); \ + do \ + if test ! -d $$i; then \ +@@ -326,9 +326,9 @@ + done + $(INSTALL_DATA) $(srcdir)/LICENSE $(LIBDEST)/LICENSE.txt + PYTHONPATH=$(LIBDEST) \ +- ./python$(EXE) -tt $(LIBDEST)/compileall.py $(LIBDEST) ++ ./spython$(EXE) -tt $(LIBDEST)/compileall.py $(LIBDEST) + PYTHONPATH=$(LIBDEST) \ +- ./python$(EXE) -O $(LIBDEST)/compileall.py $(LIBDEST) ++ ./spython$(EXE) -O $(LIBDEST)/compileall.py $(LIBDEST) + + # Create the PLATDIR source directory, if one wasn't distributed.. + $(srcdir)/Lib/$(PLATDIR): +@@ -457,7 +457,7 @@ + else $(SHELL) $(srcdir)/configure $(WITH); \ + fi + +-.PRECIOUS: config.status python$(EXE) ++.PRECIOUS: config.status spython$(EXE) + + # Rerun configure with the same options as it was run last time, + # provided the config.status script exists +@@ -509,7 +509,7 @@ + done + + localclobber: localclean +- -rm -f tags TAGS python$(EXE) $(LIBRARY) $(LDLIBRARY) *.o ++ -rm -f tags TAGS spython$(EXE) $(LIBRARY) $(LDLIBRARY) *.o + -rm -f config.log config.cache config.h + + clobber: localclobber +diff -urP Python-2.0.orig/Misc/python.man Python-2.0/Misc/python.man +--- Python-2.0.orig/Misc/python.man Mon Oct 16 17:49:35 2000 ++++ Python-2.0/Misc/python.man Wed Jul 11 20:26:32 2001 +@@ -1,8 +1,8 @@ +-.TH PYTHON "1" "5 September, 2000" ++.TH SPYTHON "1" "5 September, 2000" + .SH NAME +-python \- an interpreted, interactive, object-oriented programming language ++spython \- an interpreted, interactive, object-oriented programming language (statically linked) + .SH SYNOPSIS +-.B python ++.B spython + [ + .B \-d + ] +@@ -179,20 +179,20 @@ + conventions; ${prefix} and ${exec_prefix} are installation-dependent + and should be interpreted as for GNU software; they may be the same. + The default for both is \fI/usr/local\fP. +-.IP \fI${exec_prefix}/bin/python\fP ++.IP \fI${exec_prefix}/bin/spython\fP + Recommended location of the interpreter. + .PP +-.I ${prefix}/lib/python<version> ++.I ${prefix}/lib/spython<version> + .br +-.I ${exec_prefix}/lib/python<version> ++.I ${exec_prefix}/lib/spython<version> + .RS + Recommended locations of the directories containing the standard + modules. + .RE + .PP +-.I ${prefix}/include/python<version> ++.I ${prefix}/include/spython<version> + .br +-.I ${exec_prefix}/include/python<version> ++.I ${exec_prefix}/include/spython<version> + .RS + Recommended locations of the directories containing the include files + needed for developing Python extensions and embedding the +@@ -204,8 +204,8 @@ + .SH ENVIRONMENT VARIABLES + .IP PYTHONHOME + Change the location of the standard Python libraries. By default, the +-libraries are searched in ${prefix}/lib/python<version> and +-${exec_prefix}/lib/python<version>, where ${prefix} and ${exec_prefix} ++libraries are searched in ${prefix}/lib/spython<version> and ++${exec_prefix}/lib/spython<version>, where ${prefix} and ${exec_prefix} + are installation-dependent directories, both defaulting to + \fI/usr/local\fP. When $PYTHONHOME is set to a single directory, its value + replaces both ${prefix} and ${exec_prefix}. To specify different values +@@ -216,7 +216,7 @@ + pathnames separated by colons. + Non-existant directories are silently ignored. + The default search path is installation dependent, but generally +-begins with ${prefix}/lib/python<version> (see PYTHONHOME above). ++begins with ${prefix}/lib/spython<version> (see PYTHONHOME above). + The default search path is always appended to $PYTHONPATH. + If a script argument is given, the directory containing the script is + inserted in the path in front of $PYTHONPATH. +diff -urP Python-2.0.orig/Modules/Makefile.pre.in Python-2.0/Modules/Makefile.pre.in +--- Python-2.0.orig/Modules/Makefile.pre.in Mon Oct 16 17:49:33 2000 ++++ Python-2.0/Modules/Makefile.pre.in Wed Jul 11 19:43:14 2001 +@@ -52,10 +52,10 @@ + SCRIPTDIR= $(prefix)/lib + + # Detailed destination directories +-BINLIBDEST= $(LIBDIR)/python$(VERSION) +-LIBDEST= $(SCRIPTDIR)/python$(VERSION) +-INCLUDEPY= $(INCLUDEDIR)/python$(VERSION) +-LIBP= $(LIBDIR)/python$(VERSION) ++BINLIBDEST= $(LIBDIR)/spython$(VERSION) ++LIBDEST= $(SCRIPTDIR)/spython$(VERSION) ++INCLUDEPY= $(INCLUDEDIR)/spython$(VERSION) ++LIBP= $(LIBDIR)/spython$(VERSION) + + # Symbols used for using shared libraries + SO= @SO@ +@@ -103,7 +103,7 @@ + + SYSLIBS= $(LIBM) $(LIBC) + +-LIBRARY= ../libpython$(VERSION).a ++LIBRARY= ../libspython$(VERSION).a + LDLIBRARY= ../@LDLIBRARY@ + + # === Rules === +@@ -124,11 +124,11 @@ + # This target is used by the master Makefile to link the final binary. + link: $(MAINOBJ) + $(LINKCC) $(LDFLAGS) $(LINKFORSHARED) $(MAINOBJ) \ +- $(LDLIBRARY) $(MODLIBS) $(LIBS) $(SYSLIBS) -o python$(EXE) $(LDLAST) +- mv python$(EXE) ../python$(EXE) ++ $(LDLIBRARY) $(MODLIBS) $(LIBS) $(SYSLIBS) -o spython$(EXE) $(LDLAST) ++ mv spython$(EXE) ../spython$(EXE) + + clean: +- -rm -f *.o python$(EXE) core *~ [@,#]* *.old *.orig *.rej ++ -rm -f *.o spython$(EXE) core *~ [@,#]* *.old *.orig *.rej + -rm -f add2lib hassignal + + clobber: clean +@@ -183,10 +183,10 @@ + $(MKDEP) $(CFLAGS) `echo $(OBJS) | tr ' ' '\012' | \ + sed 's|\(.*\)\.o|$(srcdir)/\1.c|'` + +-.PRECIOUS: ../python$(EXE) ++.PRECIOUS: ../spython$(EXE) + + glmodule.c: $(srcdir)/cgen.py $(srcdir)/cstubs +- python $(srcdir)/cgen.py <$(srcdir)/cstubs >glmodule.c ++ spython $(srcdir)/cgen.py <$(srcdir)/cstubs >glmodule.c + + almodule.o: almodule.c + arraymodule.o: arraymodule.c +diff -urP Python-2.0.orig/Modules/getpath.c Python-2.0/Modules/getpath.c +--- Python-2.0.orig/Modules/getpath.c Mon Oct 16 17:49:33 2000 ++++ Python-2.0/Modules/getpath.c Wed Jul 11 19:41:18 2001 +@@ -115,8 +115,8 @@ + + #ifndef PYTHONPATH + /* I know this isn't K&R C, but the Makefile specifies it anyway */ +-#define PYTHONPATH PREFIX "/lib/python" VERSION ":" \ +- EXEC_PREFIX "/lib/python" VERSION "/lib-dynload" ++#define PYTHONPATH PREFIX "/lib/spython" VERSION ":" \ ++ EXEC_PREFIX "/lib/spython" VERSION "/lib-dynload" + #endif + + #ifndef LANDMARK +@@ -127,7 +127,7 @@ + static char exec_prefix[MAXPATHLEN+1]; + static char progpath[MAXPATHLEN+1]; + static char *module_search_path = NULL; +-static char lib_python[] = "lib/python" VERSION; ++static char lib_python[] = "lib/spython" VERSION; + + static void + reduce(char *dir) +diff -urP Python-2.0.orig/Objects/Makefile.in Python-2.0/Objects/Makefile.in +--- Python-2.0.orig/Objects/Makefile.in Mon Oct 16 17:49:24 2000 ++++ Python-2.0/Objects/Makefile.in Wed Jul 11 19:37:39 2001 +@@ -48,7 +48,7 @@ + tupleobject.c typeobject.c \ + unicodeobject.c unicodectype.c + +-LIBRARY= ../libpython$(VERSION).a ++LIBRARY= ../libspython$(VERSION).a + + # === Rules === + +diff -urP Python-2.0.orig/Parser/Makefile.in Python-2.0/Parser/Makefile.in +--- Python-2.0.orig/Parser/Makefile.in Mon Oct 16 17:49:29 2000 ++++ Python-2.0/Parser/Makefile.in Wed Jul 11 19:29:23 2001 +@@ -48,7 +48,7 @@ + + PGEN= pgen + +-LIBRARY= ../libpython$(VERSION).a ++LIBRARY= ../libspython$(VERSION).a + + # === Rules === + +diff -urP Python-2.0.orig/Parser/intrcheck.c Python-2.0/Parser/intrcheck.c +--- Python-2.0.orig/Parser/intrcheck.c Mon Oct 16 17:49:30 2000 ++++ Python-2.0/Parser/intrcheck.c Wed Jul 11 19:31:05 2001 +@@ -132,7 +132,7 @@ + { + extern void Py_Exit(int); + static char message[] = +-"python: to interrupt a truly hanging Python program, interrupt once more.\n"; ++"spython: to interrupt a truly hanging Python program, interrupt once more.\n"; + switch (interrupted++) { + case 0: + break; +diff -urP Python-2.0.orig/Python/Makefile.in Python-2.0/Python/Makefile.in +--- Python-2.0.orig/Python/Makefile.in Mon Oct 16 17:49:29 2000 ++++ Python-2.0/Python/Makefile.in Wed Jul 11 19:29:55 2001 +@@ -51,7 +51,7 @@ + $(LIBOBJS) + OBJS= $(AROBJS) sigcheck.o + +-LIBRARY= ../libpython$(VERSION).a ++LIBRARY= ../libspython$(VERSION).a + + + # === Rules === +diff -urP Python-2.0.orig/Python/dynload_aix.c Python-2.0/Python/dynload_aix.c +--- Python-2.0.orig/Python/dynload_aix.c Mon Oct 16 17:49:29 2000 ++++ Python-2.0/Python/dynload_aix.c Wed Jul 11 19:32:35 2001 +@@ -69,7 +69,7 @@ + prevmodptr = NULL; + do { + if (strstr(progname, ldiptr->ldinfo_filename) == NULL && +- strstr(ldiptr->ldinfo_filename, "python") == NULL) { ++ strstr(ldiptr->ldinfo_filename, "spython") == NULL) { + /* + -- Extract only the modules belonging to the main + -- executable + those containing "python" as a +diff -urP Python-2.0.orig/Python/dynload_win.c Python-2.0/Python/dynload_win.c +--- Python-2.0.orig/Python/dynload_win.c Mon Oct 16 17:49:29 2000 ++++ Python-2.0/Python/dynload_win.c Wed Jul 11 19:33:00 2001 +@@ -124,7 +124,7 @@ + while (DWORD_AT(import_data)) { + import_name = dllbase + DWORD_AT(import_data+12); + if (strlen(import_name) >= 6 && +- !strncmp(import_name,"python",6)) { ++ !strncmp(import_name,"spython",6)) { + char *pch; + + /* Ensure python prefix is followed only +@@ -228,7 +228,7 @@ + } else { + char buffer[256]; + +- sprintf(buffer,"python%d%d.dll", ++ sprintf(buffer,"spython%d%d.dll", + PY_MAJOR_VERSION,PY_MINOR_VERSION); + import_python = GetPythonImport(hDLL); + +diff -urP Python-2.0.orig/Python/pythonrun.c Python-2.0/Python/pythonrun.c +--- Python-2.0.orig/Python/pythonrun.c Mon Oct 16 17:49:29 2000 ++++ Python-2.0/Python/pythonrun.c Wed Jul 11 19:49:19 2001 +@@ -360,7 +360,7 @@ + PyInterpreterState_Delete(interp); + } + +-static char *progname = "python"; ++static char *progname = "spython"; + + void + Py_SetProgramName(char *pn) +@@ -375,7 +375,7 @@ + return progname; + } + +-static char *default_home = NULL; ++static char *default_home = "/usr"; + + void + Py_SetPythonHome(char *home) +@@ -568,7 +568,7 @@ + if (closeit) + fclose(fp); + if( (fp = fopen(filename, "rb")) == NULL ) { +- fprintf(stderr, "python: Can't reopen .pyc file\n"); ++ fprintf(stderr, "spython: Can't reopen .pyc file\n"); + return -1; + } + /* Turn on optimization if a .pyo file is given */ +diff -urP Python-2.0.orig/Python/thread_beos.h Python-2.0/Python/thread_beos.h +--- Python-2.0.orig/Python/thread_beos.h Mon Oct 16 17:49:29 2000 ++++ Python-2.0/Python/thread_beos.h Wed Jul 11 19:31:39 2001 +@@ -123,7 +123,7 @@ + + /* We are so very thread-safe... */ + this_thread = atomic_add( &thread_count, 1 ); +- sprintf( name, "python thread (%d)", this_thread ); ++ sprintf( name, "spython thread (%d)", this_thread ); + + tid = spawn_thread( (thread_func)func, name, + B_NORMAL_PRIORITY, arg ); +@@ -222,7 +222,7 @@ + } + + this_lock = atomic_add( &lock_count, 1 ); +- sprintf( name, "python lock (%d)", this_lock ); ++ sprintf( name, "spython lock (%d)", this_lock ); + + retval = benaphore_create( name, lock ); + if( retval != EOK ) { +@@ -298,7 +298,7 @@ + + dprintf(("PyThread_allocate_sema called\n")); + +- sema = create_sem( value, "python semaphore" ); ++ sema = create_sem( value, "spython semaphore" ); + if( sema < B_NO_ERROR ) { + /* TODO: that's bad, raise an exception */ + return 0; +diff -urP Python-2.0.orig/configure.in Python-2.0/configure.in +--- Python-2.0.orig/configure.in Mon Oct 16 17:50:06 2000 ++++ Python-2.0/configure.in Wed Jul 11 19:26:15 2001 +@@ -251,17 +251,17 @@ + # a bundle using libtool. + if test "$with_next_framework" + then +- LDLIBRARY='libpython$(VERSION).dylib' ++ LDLIBRARY='libspython$(VERSION).dylib' + fi + + # DG/UX requires some fancy ld contortions to produce a .so from an .a + case $MACHDEP in + dguxR4) +- LDLIBRARY='libpython$(VERSION).so' ++ LDLIBRARY='libspython$(VERSION).so' + OPT="$OPT -pic" + ;; + beos*) +- LDLIBRARY='libpython$(VERSION).so' ++ LDLIBRARY='libspython$(VERSION).so' + ;; + esac + AC_MSG_RESULT($LDLIBRARY) +@@ -269,7 +269,7 @@ + # If LDLIBRARY is different from LIBRARY, emit a rule to build it. + if test -z "$LDLIBRARY" + then +- LDLIBRARY='libpython$(VERSION).a' ++ LDLIBRARY='libspython$(VERSION).a' + MAKE_LDLIBRARY="true" + else + MAKE_LDLIBRARY='$(MAKE) $(LDLIBRARY)' +@@ -558,7 +558,7 @@ + then + case $ac_sys_system/$ac_sys_release in + AIX*) LDSHARED="\$(srcdir)/ld_so_aix \$(CC)";; +- BeOS*) LDSHARED="\$(srcdir)/../BeOS/linkmodule -L.. -lpython\$(VERSION)";; ++ BeOS*) LDSHARED="\$(srcdir)/../BeOS/linkmodule -L.. -lspython\$(VERSION)";; + IRIX/5*) LDSHARED="ld -shared";; + IRIX*/6*) LDSHARED="ld ${SGI_ABI} -shared -all";; + SunOS/4*) LDSHARED="ld";; diff --git a/sys-devel/spython/spython-2.0-r6.ebuild b/sys-devel/spython/spython-2.0-r6.ebuild new file mode 100644 index 000000000000..6656acefcd27 --- /dev/null +++ b/sys-devel/spython/spython-2.0-r6.ebuild @@ -0,0 +1,93 @@ +# Copyright 1999-2000 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Author Daniel Robbins <drobbins@gentoo.org> +# $Header: /var/cvsroot/gentoo-x86/sys-devel/spython/spython-2.0-r6.ebuild,v 1.1 2001/08/04 18:22:45 pete Exp $ + +S=${WORKDIR}/Python-2.0 +S2=${WORKDIR}/python-fchksum-1.1 +DESCRIPTION="A really great language -- minimalist python environment" +SRC_URI="http://www.python.org/ftp/python/src/BeOpen-Python-2.0.tar.bz2 + http://www.azstarnet.com/~donut/programs/fchksum/python-fchksum-1.1.tar.gz" + +HOMEPAGE="http://www.python.org http://www.azstarnet.com/~donut/programs/fchksum/" + +DEPEND=">=sys-libs/zlib-1.1.3 readline? ( >=sys-libs/readline-4.1 >=sys-libs/ncurses-5.2 )" + +RDEPEND="virtual/glibc" +PROVIDE="virtual/python" + +src_unpack() { + + unpack BeOpen-Python-2.0.tar.bz2 + + cd ${S}/Modules + + cp ${FILESDIR}/pfconfig.h . + unpack python-fchksum-1.1.tar.gz + + echo '*static*' >> Setup.local + + echo "zlib zlibmodule.c -lz" >> Setup.local + if [ "`use readline`" ] + then + echo "readline readline.c -lreadline -lncurses" >> Setup.local + fi + + echo "fchksum fchksum.c md5_2.c" >> Setup.local + + cd python-fchksum-1.1 + mv md5.h ../md5_2.h + sed -e 's:"md5.h":"md5_2.h":' md5.c > ../md5_2.c + sed -e 's:"md5.h":"md5_2.h":' fchksum.c > ../fchksum.c + + #for some reason, python 2.0 can't find /usr/lib/python2.0 without this fix to the source code. + cd ${S}/Python + cp pythonrun.c pythonrun.c.orig + sed -e 's:static char \*default_home = NULL:static char \*default_home = "/usr":' pythonrun.c.orig > pythonrun.c + +} + +src_compile() { + + export LDFLAGS=-static + + try ./configure --prefix=/usr --without-libdb + + #libdb3 support is available from http://pybsddb.sourceforge.net/; the one + #included with python is for db 1.85 only. + + cp Makefile Makefile.orig + sed -e "s/-g -O2/${CFLAGS}/" Makefile.orig > Makefile + cd ${S}/Modules + cp Makefile.pre Makefile.orig + sed -e "s:MODOBJS=:MODOBJS=fchksum.o md5_2.o:" \ + Makefile.orig > Makefile.pre + + # Parallel make does not work + cd ${S} + try make + +} + +src_install() { + + dodir /usr/share/man + try make install prefix=${D}/usr MANDIR=${D}/usr/share/man + rm ${D}/usr/bin/python + mv ${D}/usr/bin/python2.0 ${D}/usr/bin/spython + + if [ "`use build`" ] || [ "`use bootcd`" ] + then + rm -rf ${D}/usr/share/man + rm -rf ${D}/usr/lib/python${PV}/{test,config} + rm -rf ${D}/usr/include + fi +} + +pkg_postinst() { + + if [ ! -e "${ROOT}/usr/bin/python" ] + then + ln -s spython ${ROOT}/usr/bin/python + fi +} diff --git a/sys-kernel/linux/linux-2.4.6-r2.ebuild b/sys-kernel/linux/linux-2.4.6-r2.ebuild new file mode 100644 index 000000000000..15f0bb79b4b1 --- /dev/null +++ b/sys-kernel/linux/linux-2.4.6-r2.ebuild @@ -0,0 +1,451 @@ +# Copyright 1999-2000 Gentoo Technologies, Inc. +# Distributed under the terms of the GNU General Public License, v2 or later +# Author Daniel Robbins <drobbins@gentoo.org> +# /home/cvsroot/gentoo-x86/sys-kernel/linux/linux-2.4.4.3.ebuild,v 1.1 2001/05/02 14:31:06 achim Exp + +#OKV=original kernel version, KV=patched kernel version + +OKV=2.4.6 +KV=2.4.6 +S=${WORKDIR}/linux-${KV} +S2=${WORKDIR}/linux-${KV}-extras +if [ $PN = "linux-extras" ] || [ $PN = "linux-headers" ] +then + KS=/usr/src/linux-${KV} + KS2=/usr/src/linux-${KV}-extras +else + KS=${S} + KS2=${S2} +fi + +# Kernel Features Enabled USE Variable Status +# +# Reiserfs Y - Production-ready +# JFS N jfs Testing-only (commented out for now) +# LVM Y lvm almost production-ready (still has race conditions during pvmove) +# ext3 Y ext3 Production-ready +# MOSIX Y mosix Testing only +# XFS N xfs Will add soon +# PCMCIA-CS N pcmcia Need to move this to its own ebuild +# lm-sensors N lm_sensors Need to move this to its own ebuild + +[ "`use bootcd`" ] && USE="bootcd lvm ext2" + +LVMV=0.9.1_beta7 +EXT3V=2.4-0.9.2-246 +MOSV=1.1.0 +CLOOPV=0.6 +CLOOPAV=0.60-1 +# AV=0.5.11 +#JFSV=1.0.0 +#KNV="6.g" +#PIV="1.d" +#PCV="3.1.27" + +[ "${PN}" = "linux" ] && DESCRIPTION="Linux kernel version ${KV}, including modules, binary tools, libraries and includes" +[ "${PN}" = "linux-sources" ] && DESCRIPTION="Linux kernel version ${KV} - full sources" +[ "${PN}" = "linux-extras" ] && DESCRIPTION="Linux kernel support tools and libraries" + +# We use build in /usr/src/linux in case of linux-extras +# so we need no sources +if [ ! "${PN}" = "linux-extras" ] ; then +SRC_URI="http://www.kernel.org/pub/linux/kernel/v2.4/linux-${OKV}.tar.bz2 + http://www.zip.com.au/~akpm/ext3-${EXT3V}.gz + http://oss.software.ibm.com/developerworks/opensource/jfs/project/pub/jfs-1.0.0-patch.tar.gz + ftp://ftp.cs.huji.ac.il/users/mosix/MOSIX-${MOSV}.tar.gz + ftp://ftp.sistina.com/pub/LVM/0.9.1_beta/lvm_${LVMV}.tar.gz + http://www.knopper.net/download/knoppix/cloop_${CLOOPAV}.tar.gz" +fi +# http://www.netroedge.com/~lm78/archive/lm_sensors-${SENV}.tar.gz +# http://www.netroedge.com/~lm78/archive/i2c-${SENV}.tar.gz +# http://prdownloads.sourceforge.net/pcmcia-cs/pcmcia-cs-${PCV}.tar.gz + +if [ "$PN" != "linux-extras" ] +then + PROVIDE="virtual/kernel" +fi + +HOMEPAGE="http://www.kernel.org/ + http://www.netroedge.com/~lm78/ + http://www.namesys.com + http://www.sistina.com/lvm/" + +DEPEND=">=sys-apps/modutils-2.4.2 sys-devel/perl" +#these deps are messed up; fix 'em and add ncurses (required my mosix compile, menuconfig) +if [ $PN = "linux" ] +then + RDEPEND="mosix? ( ~sys-apps/mosix-user-${MOSV} ) >=sys-apps/e2fsprogs-1.22 >=sys-apps/util-linux-2.11f >=sys-apps/reiserfs-utils-3.6.25-r1" +elif [ $PN = "linux-sources" ] +then + if [ "`use build`" ] + then + DEPEND="" + RDEPEND="" + else + #ncurses is required for "make menuconfig" + RDEPEND=">=sys-libs/ncurses-5.2" + fi +elif [ $PN = "linux-extras" ] || [ $PN = "linux-headers" ] +then + #linux-extras/headers requires a rev of the current kernel sources to be installed + DEPEND="~sys-kernel/linux-sources-${PV}" +fi + +# this is not pretty... +LINUX_HOSTCFLAGS="-Wall -Wstrict-prototypes -O2 -fomit-frame-pointer -I${S}/include" + +src_unpack() { + if [ "$PN" = "linux-extras" ] || [ "$PN" = "linux-headers" ] + then + return + fi + + mkdir ${S2} + + #unpack kernel and apply reiserfs-related patches + cd ${WORKDIR} + unpack linux-${OKV}.tar.bz2 + try mv linux linux-${KV} + cd ${S} + if [ "$KV" != "$OKV" ] + then + echo "Applying ${KV} patch..." + try bzip2 -dc ${DISTDIR}/patch-${KV}.bz2 | patch -p1 + fi +# This patch is just *too* unweildy and creates tons of rejects all over the place (boo!) +# echo "Applying XFS patch..." +# local x +# for x in easy only tricky acl-extattr misc +# do +# cat ${DISTDIR}/patch-2.4.6-xfs-${x}.bz2 | bzip2 -d | patch -p1 +# done + + dodir /usr/src/linux-${KV}-extras + + if [ "`use mosix`" ] + then + echo "Applying MOSIX patch..." + cd ${S2} + mkdir MOSIX-${MOSV} + cd MOSIX-${MOSV} + tar xzf MOSIX-${MOSV}.tar.gz patches.${OKV} kernel.new.${OKV}.tar + cd ${S} + try cat ${S2}/MOSIX-${MOSV}/patches.2.4.6 | patch -p0 + tar -x --no-same-owner -vf ${S2}/MOSIX-${MOSV}/kernel.new.2.4.6.tar + fi + + cd ${S} + echo "Applying reiserfs-NFS fix..." + try cat ${FILESDIR}/2.4.6/linux-2.4.6-reiserfs-NFS.patch | patch -N -p1 + + if [ "`use lvm`" ] + then + #create and apply LVM patch. The tools get built later. + cd ${S2} + echo "Unpacking and applying LVM patch..." + unpack lvm_${LVMV}.tar.gz + try cd LVM/${LVMV} + + # I had to hack this in so that LVM will look in the current linux + # source directory instead of /usr/src/linux for stuff - pete + try CFLAGS=\""${CFLAGS} -I${S}/include"\" ./configure --prefix=/ --mandir=/usr/share/man --with-kernel_dir="${S}" + cd PATCHES + try make KERNEL_VERSION=${KV} KERNEL_DIR=${S} + cd ${S} + # the -l option allows this patch to apply cleanly (ignore whitespace changes) + try patch -l -p1 < ${S2}/LVM/${LVMV}/PATCHES/lvm-${LVMV}-${KV}.patch + cd ${S}/drivers/md + try patch -p0 < ${FILESDIR}/${KV}/lvm.c.diff + fi + +# if [ "`use lm_sensors`" ] +# then +# #unpack and apply the lm_sensors patch +# echo "Unpacking and applying lm_sensors patch..." +# cd ${S}/extras +# unpack lm_sensors-${SENV}.tar.gz +# unpack i2c-${SENV}.tar.gz +# try cd i2c-${SENV} +# try rmdir src +# try ln -s ../.. src +# try mkpatch/mkpatch.pl . /usr/src/linux | patch -p1 -E -d /usr/src/linux +# cp Makefile Makefile.orig +# try sed -e \"s:^LINUX=.*:LINUX=src:\" \ +# -e \"s/^COMPILE_KERNEL.*/COMPILE_KERNEL := 2/\" \ +# -e \"s:^I2C_HEADERS.*:I2C_HEADERS=.i2c-src/kernel:\" \ +# -e \"s#^DESTDIR.*#DESTDIR := ${D}#\" \ +# -e \"s#^PREFIX.*#PREFIX := /usr#\" \ +# -e \"s#^MANDIR.*#MANDIR := /usr/share/man#\" \ +# Makefile.orig > Makefile +# try cd ${S}/extras/lm_sensors-${SENV} +# try rmdir src +# try ln -s ../.. src +# try ln -s ../i2c-${SENV} i2c-src +# try mkpatch/mkpatch.pl . /usr/src/linux | patch -p1 -E -d /usr/src/linux +# try sed -e \"s:^LINUX=.*:LINUX=src:\" \ +# -e \"s/^COMPILE_KERNEL.*/COMPILE_KERNEL := 2/\" \ +# -e \"s:^I2C_HEADERS.*:I2C_HEADERS=.i2c-src/kernel:\" \ +# -e \"s#^DESTDIR.*#DESTDIR := ${D}#\" \ +# -e \"s#^PREFIX.*#PREFIX := /usr#\" \ +# -e \"s#^MANDIR.*#MANDIR := /usr/share/man#\" \ +# Makefile.orig > Makefile +# fi +# if [ "`use pcmcia-cs`" ] +# then +# echo "Unpacking pcmcia-cs tools..." +# cd ${S2} +# unpack pcmcia-cs-${PCV}.tar.gz + # patch -p0 < ${FILESDIR}/${KV}/pcmcia-cs-${PCV}-gentoo.diff +# fi + + #JFS patch works; commented out because it's not ready for production use + #if [ "`use jfs`" ] + #then + # echo "Applying JFS patch..." + # cd ${WORKDIR} + # unpack jfs-${JFSV}-patch.tar.gz + # cd ${S} + # patch -p1 < ${WORKDIR}/jfs-common-v1.0.0-patch + # patch -p1 < ${WORKDIR}/jfs-2.4.5-v1.0.0-patch + #fi + + if [ "`use ext3`" ] + then + echo "Applying ext3 patch..." + if [ "`use mosix`" ] + then + echo + echo "There will be one reject; we will fix it. (no worries)" + echo + fi + cd ${S} + gzip -dc ${DISTDIR}/ext3-${EXT3V}.gz | patch -l -p1 + if [ "`use mosix`" ] + then + echo + echo "Fixing reject in include/linux/sched.h..." + echo + cp ${FILESDIR}/${KV}/sched.h include/linux + fi + fi + + cd ${S2} + unpack cloop_${CLOOPAV}.tar.gz + + #get sources ready for compilation or for sitting at /usr/src/linux + echo "Preparing for compilation..." + cd ${S} + #sometimes we have icky kernel symbols; this seems to get rid of them + try make mrproper + + #linux-sources needs to be fully configured, too. Not just linux + #this is the configuration for the default kernel + try cp ${FILESDIR}/${KV}/config.bootcd .config + try yes \"\" \| make oldconfig + echo "Ignore any errors from the yes command above." + + #fix silly permissions in tarball + cd ${WORKDIR} + chown -R 0.0 * + chmod -R a+r-w+X,u+w * +} + +src_compile() { + if [ "${PN}" = "linux-sources" ] || [ "${PN}" = "linux-headers" ] + then + cd ${KS} + try make HOSTCFLAGS=\""${LINUX_HOSTCFLAGS}"\" dep + else + if [ $PN = "linux" ] + then + cd ${KS} + try make symlinks + fi + if [ "`use lvm`" ] + then + #LVM tools are included in the linux and linux-extras pakcages + cd ${KS2}/LVM/${LVMV} + + # This is needed for linux-extras + if [ -f "Makefile" ] + then + try make clean + fi + # I had to hack this in so that LVM will look in the current linux + # source directory instead of /usr/src/linux for stuff - pete + try CFLAGS=\""${CFLAGS} -I${KS}/include"\" ./configure --prefix=/ --mandir=/usr/share/man --with-kernel_dir="${KS}" + try make + fi + +# if [ "`use lm_sensors`" ] +# then +# cd ${KS}/extras/lm_sensors-${SENV} +# try make +# fi + +# Works, just commented out because JFS isn't ready to be used by non-developers +# if [ "`use jfs`" ] +# then +# cd ${S}/fs/jfs/utils +# try make +# cd output +# into / +# dosbin * +# doman `find -iname *.8` +# fi + + if [ "$PN" == "linux" ] + then + try make HOSTCFLAGS=\""${LINUX_HOSTCFLAGS}"\" dep + try make HOSTCFLAGS=\""${LINUX_HOSTCFLAGS}"\" bzImage + #LEX=\""flex -l"\" bzImage + try make HOSTCFLAGS=\""${LINUX_HOSTCFLAGS}"\" modules + #LEX=\""flex -l"\" modules + fi + +# if [ "`use pcmcia-cs`" ] +# then +# cd ${KS2}/pcmcia-cs-${PCV} +# # This is needed for linux-extras +# if [ -f "Makefile" ] +# then +# try make clean +# fi +# try ./Configure -n --kernel=${KS} --moddir=/lib/modules/${KV} \ +# --notrust --cardbus --nopnp --noapm --srctree --sysv --rcdir=/etc/rc.d/ +# try make all +# fi + + cd ${KS2}/cloop-${CLOOPV} + make KERNEL_DIR=${KS} + fi +} + +src_install() { + if [ "${PN}" = "linux" ] || [ "${PN}" = "linux-extras" ] + then + dodir /usr/lib + + if [ "`use lvm`" ] + then + cd ${KS2}/LVM/${LVMV}/tools + + try CFLAGS=\""${CFLAGS} -I${KS}/include"\" make install -e prefix=${D} mandir=${D}/usr/share/man \ + sbindir=${D}/sbin libdir=${D}/lib + #no need for a static library in /lib + mv ${D}/lib/*.a ${D}/usr/lib + fi + +# if [ "`use lm_sensors`" ] +# then +# echo "Install sensor tools..." +# #install sensors tools +# cd ${KS}/extras/lm_sensors-${SENV} +# make install +# fi + + if [ "${PN}" = "linux" ] + then + dodir /usr/src/linux-${KV} + cd ${D}/usr/src + #grab includes and documentation only + echo ">>> Copying includes and documentation..." + cp -ax ${S}/include ${D}/usr/src/linux-${KV} + cp -ax ${S}/Documentation ${D}/usr/src/linux-${KV} + + #grab compiled kernel + dodir /boot/boot + insinto /boot/boot + cd ${S} + doins arch/i386/boot/bzImage + + #grab modules + # Do we have a bug in modutils ? + # Meanwhile we use this quick fix (achim) + + install -d ${D}/lib/modules/`uname -r` + try make INSTALL_MOD_PATH=${D} modules_install + + cd ${S} + depmod -b ${D} -F ${S}/System.map ${KV} + #rm -rf ${D}/lib/modules/`uname -r` + #fix symlink + cd ${D}/lib/modules/${KV} + rm build + ln -sf /usr/src/linux-${KV} build + fi + +# if [ "`use pcmcia-cs`" ] +# then +# #install PCMCIA modules and utilities +# cd ${KS2}/pcmcia-cs-${PCV} +# try make PREFIX=${D} MANDIR=${D}/usr/share/man install +# rm -rf ${D}/etc/rc.d +# exeinto /etc/rc.d/init.d +# doexe ${FILESDIR}/${KV}/pcmcia +# fi + + cd ${KS2}/cloop-${CLOOPV} + insinto /lib/modules/${KV}/kernel/drivers/block + doins cloop.o + into /usr + dobin create_compressed_fs extract_compressed_fs + + elif [ "$PN" = "linux-sources" ] + then + dodir /usr/src + cd ${S} + + if [ "`use build`" ] ; then + dodir /usr/src/linux-${KV} + #grab includes and documentation only + echo ">>> Copying includes..." + cp -ax ${S}/include ${D}/usr/src/linux-${KV} + else + echo ">>> Copying sources..." + cp -ax ${WORKDIR}/* ${D}/usr/src + fi + elif [ "$PN" = "linux-headers" ] + then + #the linux-headers package basically takes a "snapshot" of your current linux headers + dodir /usr/include/linux + cp -ax ${KS}/include/linux/* ${D}/usr/include/linux + dodir /usr/include/asm + cp -ax ${KS}/include/asm-i386/* ${D}/usr/include/asm + fi + if [ -d ${D}/usr/src/linux-${KV} ] + then + #don't overwrite existing .config if present + cd ${D}/usr/src/linux-${KV} + if [ -e .config ] + then + cp -a .config .config.eg + fi + fi +} + +pkg_preinst() { + if [ "$PN" = "linux-headers" ] + then + if [ -L ${ROOT}usr/include/linux ] + then + rm ${ROOT}usr/include/linux + fi + if [ -L ${ROOT}usr/include/asm ] + then + rm ${ROOT}usr/include/asm + fi + fi +} + +pkg_postinst() { + rm -f ${ROOT}/usr/src/linux + ln -sf linux-${KV} ${ROOT}/usr/src/linux + + #copy over our .config if one isn't already present + cd ${ROOT}/usr/src/linux-${KV} + if [ "${PN}" = "linux-sources" ] && [ -e .config.eg ] && [ ! -e .config ] + then + cp -a .config.eg .config + fi +} diff --git a/sys-libs/glibc/glibc-2.2.3-r4.ebuild b/sys-libs/glibc/glibc-2.2.3-r4.ebuild index a5d9ab42af33..131f62f5a897 100644 --- a/sys-libs/glibc/glibc-2.2.3-r4.ebuild +++ b/sys-libs/glibc/glibc-2.2.3-r4.ebuild @@ -1,7 +1,7 @@ # Copyright 1999-2000 Gentoo Technologies, Inc. # Distributed under the terms of the GNU General Public License, v2 or later # Author Achim Gottinger <achim@gentoo.org> -# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-2.2.3-r4.ebuild,v 1.1 2001/07/28 15:49:20 pete Exp $ +# $Header: /var/cvsroot/gentoo-x86/sys-libs/glibc/glibc-2.2.3-r4.ebuild,v 1.2 2001/08/04 18:22:45 pete Exp $ A="$P.tar.gz glibc-linuxthreads-${PV}.tar.gz" S=${WORKDIR}/${P} @@ -49,7 +49,7 @@ src_compile() { # If we build for the build system we use the kernel headers from the target myconf="--with-header=${ROOT}usr/include" fi - if [ "`use gd`" ] && [ -z "`use bootstrap`" ] + if [ "`use gd`" ] && [ -z "`use bootstrap`" ] && [ -z "`use bootcd`" ] && [ -z "`use build`" ] then myconf="${myconf} --with-gd=yes" else |