diff options
author | Chris Larson <clarson@kergoth.com> | 2004-12-09 09:47:41 +0000 |
---|---|---|
committer | Chris Larson <clarson@kergoth.com> | 2004-12-09 09:47:41 +0000 |
commit | 2c5b8ec6d95cf68650265941530e5ce38c8dd6d9 (patch) | |
tree | bf879bea7ef8517ba8c3d1286ef300401d3d484c /psmisc/psmisc-20.2 | |
parent | 101e2f1623def0a355d20aacb8bd93810703e834 (diff) |
Merge oe-devel@oe-devel.bkbits.net:openembedded
into hyperion.kergoth.com:/home/kergoth/code/openembedded
2004/12/09 03:39:39-06:00 kergoth.com!kergoth
Break people's builds again.. this time moving the packages into a packages/ subdir to clean things up a bit.
BKrev: 41b81f3dvlp3rU7_8MUXLcI8LDdDoA
Diffstat (limited to 'psmisc/psmisc-20.2')
-rw-r--r-- | psmisc/psmisc-20.2/gettext.patch | 18062 |
1 files changed, 0 insertions, 18062 deletions
diff --git a/psmisc/psmisc-20.2/gettext.patch b/psmisc/psmisc-20.2/gettext.patch deleted file mode 100644 index 971850f489..0000000000 --- a/psmisc/psmisc-20.2/gettext.patch +++ /dev/null @@ -1,18062 +0,0 @@ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/ABOUT-NLS psmisc-20.2.works.clean/ABOUT-NLS ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/ABOUT-NLS 2001-04-13 23:00:47.000000000 -0500 -+++ psmisc-20.2.works.clean/ABOUT-NLS 2004-10-13 15:18:41.000000000 -0500 -@@ -1,8 +1,8 @@ - Notes on the Free Translation Project - ************************************* - -- Free software is going international! The Free Translation Project --is a way to get maintainers of free software, translators, and users all -+Free software is going international! The Free Translation Project is -+a way to get maintainers of free software, translators, and users all - together, so that will gradually become able to speak many languages. - A few packages already provide translations for their messages. - -@@ -25,7 +25,7 @@ - Quick configuration advice - ========================== - -- If you want to exploit the full power of internationalization, you -+If you want to exploit the full power of internationalization, you - should configure it using - - ./configure --with-included-gettext -@@ -48,10 +48,10 @@ - INSTALL Matters - =============== - -- Some packages are "localizable" when properly installed; the --programs they contain can be made to speak your own native language. --Most such packages use GNU `gettext'. Other packages have their own --ways to internationalization, predating GNU `gettext'. -+Some packages are "localizable" when properly installed; the programs -+they contain can be made to speak your own native language. Most such -+packages use GNU `gettext'. Other packages have their own ways to -+internationalization, predating GNU `gettext'. - - By default, this package will be installed to allow translation of - messages. It will automatically detect whether the system already -@@ -98,18 +98,27 @@ - Using This Package - ================== - -- As a user, if your language has been installed for this package, you -+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. -+`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. - -- Some languages have dialects in different countries. To specify --such a dialect, the notation `LL_CC' can be used, which combines an --ISO 639 language code `LL' and an ISO 3166 two-letter country code --`CC'. For example, `de_AT' is used for Austria, and `pt_BR' for Brazil. -+ You might think that the country code specification is redundant. -+But in fact, some languages have dialects in different countries. For -+example, `de_AT' is used for Austria, and `pt_BR' for Brazil. The -+country code serves to distinguish the dialects. -+ -+ The locale naming convention of `LL_CC', with `LL' denoting the -+language and `CC' denoting the country, is the one use on systems based -+on GNU libc. On other systems, some variations of this scheme are -+used, such as `LL' or `LL_CC.ENCODING'. You can get the list of -+locales supported by your system for your country by running the command -+`locale -a | grep '^LL''. - - Not all programs have translations for all languages. By default, an - English message is shown in place of a nonexistent translation. If you -@@ -120,12 +129,25 @@ - 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'. -+available, set `LANGUAGE' to `sv:de' while leaving `LANG' to `sv_SE'. -+ -+ Special advice for Norwegian users: The language code for Norwegian -+bokma*l changed from `no' to `nb' recently (in 2003). During the -+transition period, while some message catalogs for this language are -+installed under `nb' and some older ones under `no', it's recommended -+for Norwegian users to set `LANGUAGE' to `nb:no' so that both newer and -+older translations are used. -+ -+ In the `LANGUAGE' environment variable, but not in the `LANG' -+environment variable, `LL_CC' combinations can be abbreviated as `LL' -+to denote the language's main dialect. For example, `de' is equivalent -+to `de_DE' (German as spoken in Germany), and `pt' to `pt_PT' -+(Portuguese as spoken in Portugal) in this context. - - Translating Teams - ================= - -- For the Free Translation Project to be a success, we need interested -+For the Free Translation Project to be a success, we need interested - people who like their own language and write it well, and who are also - able to synergize with other translators speaking the same language. - Each translation team has its own mailing list. The up-to-date list of -@@ -155,99 +177,559 @@ - Available Packages - ================== - -- Languages are not equally supported in all packages. The following --matrix shows the current state of internationalization, as of July --2000. The matrix shows, in regard of each package, for which languages -+Languages are not equally supported in all packages. The following -+matrix shows the current state of internationalization, as of January -+2004. 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 hr id it -- .----------------------------------------------. -- a2ps | [] [] | -- bash | [] [] [] | -- bison | [] [] [] [] | -- clisp | [] [] [] [] | -- cpio | [] [] [] | -- diffutils | [] [] [] [] [] | -- enscript | [] [] | -- error | [] | -- fileutils | [] [] [] [] [] [] [] [] | -- findutils | [] [] [] [] [] [] | -- flex | [] [] | -- gcal | | -- gcc | | -- gettext | [] [] [] [] [] [] [] [] [] | -- gnupg | [] [] [] [] | -- grep | [] [] [] [] [] [] [] [] [] [] | -- hello | [] [] [] [] [] [] [] | -- id-utils | [] | -- indent | [] [] [] [] [] | -- libc | [] [] [] [] [] [] [] [] | -- lilypond | | -- lynx | [] [] [] | -- m4 | [] [] [] [] [] [] | -- make | [] [] [] [] | -- music | [] | -- parted | [] [] | -- ptx | [] [] [] [] [] [] [] | -- python | | -- recode | [] [] [] [] [] [] [] | -- sed | [] [] [] [] [] [] [] | -- sh-utils | [] [] [] [] [] [] [] [] [] | -- sharutils | [] [] [] [] [] [] | -- tar | [] [] [] [] [] [] [] | -- texinfo | [] [] [] [] | -- textutils | [] [] [] [] [] [] [] | -- util-linux | | -- wdiff | [] [] [] [] [] | -- wget | [] [] [] [] [] [] [] [] | -- `----------------------------------------------' -- bg cs da de el en eo es et fi fr gl hr id it -- 1 14 15 28 11 1 4 19 12 1 30 16 0 3 12 -+ Ready PO files af am ar az be bg bs ca cs da de el en en_GB eo es -+ +----------------------------------------------------+ -+ a2ps | [] [] [] [] | -+ aegis | () | -+ ant-phone | () | -+ anubis | | -+ ap-utils | | -+ aspell | [] | -+ bash | [] [] [] [] | -+ batchelor | | -+ bfd | [] [] | -+ binutils | [] [] | -+ bison | [] [] [] | -+ bluez-pin | [] [] [] | -+ clisp | | -+ clisp | [] [] [] | -+ console-tools | [] [] | -+ coreutils | [] [] [] [] | -+ cpio | [] [] [] | -+ darkstat | [] () [] | -+ diffutils | [] [] [] [] [] [] [] | -+ e2fsprogs | [] [] [] | -+ enscript | [] [] [] [] | -+ error | [] [] [] [] [] | -+ fetchmail | [] () [] [] [] [] | -+ fileutils | [] [] [] | -+ findutils | [] [] [] [] [] [] [] | -+ flex | [] [] [] [] | -+ fslint | | -+ gas | [] | -+ gawk | [] [] [] [] | -+ gbiff | [] | -+ gcal | [] | -+ gcc | [] [] | -+ gettext | [] [] [] [] [] | -+ gettext-examples | [] [] [] [] | -+ gettext-runtime | [] [] [] [] [] | -+ gettext-tools | [] [] [] | -+ gimp-print | [] [] [] [] [] | -+ gliv | | -+ glunarclock | [] [] | -+ gnubiff | [] | -+ gnucash | [] () [] [] | -+ gnucash-glossary | [] () [] | -+ gnupg | [] () [] [] [] [] | -+ gpe-aerial | [] | -+ gpe-beam | [] [] | -+ gpe-calendar | [] [] | -+ gpe-clock | [] [] | -+ gpe-conf | [] [] | -+ gpe-contacts | [] [] | -+ gpe-edit | [] | -+ gpe-go | [] | -+ gpe-login | [] [] | -+ gpe-ownerinfo | [] [] | -+ gpe-sketchbook | [] [] | -+ gpe-su | [] [] | -+ gpe-taskmanager | [] [] | -+ gpe-timesheet | [] | -+ gpe-today | [] [] | -+ gpe-todo | [] [] | -+ gphoto2 | [] [] [] [] | -+ gprof | [] [] [] | -+ gpsdrive | () () () | -+ gramadoir | [] | -+ grep | [] [] [] [] [] [] | -+ gretl | [] | -+ gtick | [] () | -+ hello | [] [] [] [] [] [] | -+ id-utils | [] [] | -+ indent | [] [] [] [] | -+ iso_3166 | [] [] [] [] [] [] [] [] [] [] | -+ iso_3166_1 | [] [] [] [] [] [] | -+ iso_3166_2 | | -+ iso_3166_3 | [] | -+ iso_4217 | [] [] [] [] | -+ iso_639 | | -+ jpilot | [] [] [] | -+ jtag | | -+ jwhois | [] | -+ kbd | [] [] [] [] [] | -+ latrine | () | -+ ld | [] [] | -+ libc | [] [] [] [] [] [] | -+ libgpewidget | [] [] | -+ libiconv | [] [] [] [] [] | -+ lifelines | [] () | -+ lilypond | [] | -+ lingoteach | | -+ lingoteach_lessons | () () | -+ lynx | [] [] [] [] | -+ m4 | [] [] [] [] | -+ mailutils | [] [] | -+ make | [] [] [] | -+ man-db | [] () [] [] () | -+ minicom | [] [] [] | -+ mysecretdiary | [] [] [] | -+ nano | [] () [] [] [] | -+ nano_1_0 | [] () [] [] [] | -+ opcodes | [] | -+ parted | [] [] [] [] [] | -+ ptx | [] [] [] [] [] | -+ python | | -+ radius | [] | -+ recode | [] [] [] [] [] [] [] | -+ rpm | [] [] | -+ screem | | -+ scrollkeeper | [] [] [] [] [] [] | -+ sed | [] [] [] [] [] [] | -+ sh-utils | [] [] [] | -+ shared-mime-info | | -+ sharutils | [] [] [] [] [] [] | -+ silky | () | -+ skencil | [] () [] | -+ sketch | [] () [] | -+ soundtracker | [] [] [] | -+ sp | [] | -+ tar | [] [] [] [] | -+ texinfo | [] [] [] | -+ textutils | [] [] [] [] | -+ tin | () () | -+ tp-robot | | -+ tuxpaint | [] [] [] [] [] [] [] | -+ unicode-han-tra... | | -+ unicode-transla... | | -+ util-linux | [] [] [] [] [] | -+ vorbis-tools | [] [] [] [] | -+ wastesedge | () | -+ wdiff | [] [] [] [] | -+ wget | [] [] [] [] [] [] | -+ xchat | [] [] [] [] | -+ xfree86_xkb_xml | [] [] | -+ xpad | [] | -+ +----------------------------------------------------+ -+ af am ar az be bg bs ca cs da de el en en_GB eo es -+ 4 0 0 1 9 4 1 40 41 60 78 17 1 5 13 68 - -- ja ko lv nl no pl pt pt_BR ru sk sl sv zh -- .-------------------------------------------. -- a2ps | [] [] [] | 5 -- bash | | 3 -- bison | [] [] [] | 7 -- clisp | [] | 5 -- cpio | [] [] [] [] [] | 8 -- diffutils | [] [] [] | 8 -- enscript | [] [] | 4 -- error | | 1 -- fileutils | [] [] [] [] [] [] [] [] [] | 17 -- findutils | [] [] [] [] [] [] | 12 -- flex | [] [] [] | 5 -- gcal | | 0 -- gcc | [] | 1 -- gettext | [] [] [] [] [] [] [] [] [] | 18 -- gnupg | [] [] [] | 7 -- grep | [] [] [] [] [] [] [] | 17 -- hello | [] [] [] [] [] [] [] [] | 15 -- id-utils | [] [] [] | 4 -- indent | [] [] [] [] [] | 10 -- libc | [] [] [] [] [] [] [] [] | 16 -- lilypond | [] [] | 2 -- lynx | [] [] [] [] | 7 -- m4 | [] [] [] [] [] | 11 -- make | [] [] [] [] [] | 9 -- music | [] | 2 -- parted | [] [] [] [] | 6 -- ptx | [] [] [] [] [] [] | 13 -- python | | 0 -- recode | [] [] [] | 10 -- sed | [] [] [] [] [] [] [] | 14 -- sh-utils | [] [] [] [] [] [] [] [] [] [] | 19 -- sharutils | [] [] [] [] | 10 -- tar | [] [] [] [] [] [] [] [] | 15 -- texinfo | [] [] | 6 -- textutils | [] [] [] [] [] [] [] [] | 15 -- util-linux | [] | 1 -- wdiff | [] [] [] [] [] | 10 -- wget | [] [] [] [] [] [] [] [] [] | 17 -- `-------------------------------------------' -- 28 teams ja ko lv nl no pl pt pt_BR ru sk sl sv zh -- 38 domains 20 8 0 25 6 18 1 16 27 9 10 20 3 330 -+ et eu fa fi fr ga gl he hr hu id is it ja ko lg -+ +-------------------------------------------------+ -+ a2ps | [] [] [] () () | -+ aegis | | -+ ant-phone | [] | -+ anubis | [] | -+ ap-utils | [] | -+ aspell | [] [] | -+ bash | [] [] | -+ batchelor | [] [] | -+ bfd | [] | -+ binutils | [] [] | -+ bison | [] [] [] [] | -+ bluez-pin | [] [] [] [] [] | -+ clisp | | -+ clisp | [] | -+ console-tools | | -+ coreutils | [] [] [] [] [] [] | -+ cpio | [] [] [] [] | -+ darkstat | () [] [] [] | -+ diffutils | [] [] [] [] [] [] [] | -+ e2fsprogs | | -+ enscript | [] [] | -+ error | [] [] [] [] | -+ fetchmail | [] | -+ fileutils | [] [] [] [] [] [] | -+ findutils | [] [] [] [] [] [] [] [] [] [] [] | -+ flex | [] [] [] | -+ fslint | [] | -+ gas | [] | -+ gawk | [] [] [] | -+ gbiff | [] | -+ gcal | [] | -+ gcc | [] | -+ gettext | [] [] [] | -+ gettext-examples | [] [] | -+ gettext-runtime | [] [] [] [] [] | -+ gettext-tools | [] [] [] | -+ gimp-print | [] [] | -+ gliv | () | -+ glunarclock | [] [] [] [] | -+ gnubiff | [] | -+ gnucash | () [] | -+ gnucash-glossary | [] | -+ gnupg | [] [] [] [] [] [] [] | -+ gpe-aerial | [] | -+ gpe-beam | [] | -+ gpe-calendar | [] [] [] | -+ gpe-clock | [] | -+ gpe-conf | [] | -+ gpe-contacts | [] [] | -+ gpe-edit | [] [] | -+ gpe-go | [] | -+ gpe-login | [] [] | -+ gpe-ownerinfo | [] [] [] | -+ gpe-sketchbook | [] | -+ gpe-su | [] | -+ gpe-taskmanager | [] | -+ gpe-timesheet | [] [] [] | -+ gpe-today | [] [] | -+ gpe-todo | [] [] | -+ gphoto2 | [] [] [] | -+ gprof | [] [] | -+ gpsdrive | () () () | -+ gramadoir | [] [] | -+ grep | [] [] [] [] [] [] [] [] [] [] [] | -+ gretl | [] [] | -+ gtick | [] [] [] | -+ hello | [] [] [] [] [] [] [] [] [] [] [] [] [] | -+ id-utils | [] [] [] [] | -+ indent | [] [] [] [] [] [] [] [] [] | -+ iso_3166 | [] [] [] [] [] [] [] | -+ iso_3166_1 | [] [] [] [] [] | -+ iso_3166_2 | | -+ iso_3166_3 | | -+ iso_4217 | [] [] [] [] [] [] | -+ iso_639 | | -+ jpilot | [] () | -+ jtag | [] | -+ jwhois | [] [] [] [] | -+ kbd | [] | -+ latrine | [] | -+ ld | [] | -+ libc | [] [] [] [] [] [] | -+ libgpewidget | [] [] [] [] | -+ libiconv | [] [] [] [] [] [] [] [] [] | -+ lifelines | () | -+ lilypond | [] | -+ lingoteach | [] [] | -+ lingoteach_lessons | | -+ lynx | [] [] [] [] | -+ m4 | [] [] [] [] | -+ mailutils | | -+ make | [] [] [] [] [] [] | -+ man-db | () () | -+ minicom | [] [] [] [] | -+ mysecretdiary | [] [] | -+ nano | [] [] [] [] | -+ nano_1_0 | [] [] [] [] | -+ opcodes | [] | -+ parted | [] [] [] | -+ ptx | [] [] [] [] [] [] [] | -+ python | | -+ radius | [] | -+ recode | [] [] [] [] [] [] | -+ rpm | [] [] | -+ screem | | -+ scrollkeeper | [] | -+ sed | [] [] [] [] [] [] [] [] [] | -+ sh-utils | [] [] [] [] [] [] [] | -+ shared-mime-info | [] [] [] | -+ sharutils | [] [] [] [] [] | -+ silky | () [] () () | -+ skencil | [] | -+ sketch | [] | -+ soundtracker | [] [] | -+ sp | [] () | -+ tar | [] [] [] [] [] [] [] [] [] | -+ texinfo | [] [] [] [] | -+ textutils | [] [] [] [] [] [] | -+ tin | [] () | -+ tp-robot | [] | -+ tuxpaint | [] [] [] [] [] [] [] [] [] | -+ unicode-han-tra... | | -+ unicode-transla... | [] [] | -+ util-linux | [] [] [] [] () [] | -+ vorbis-tools | [] | -+ wastesedge | () | -+ wdiff | [] [] [] [] [] [] | -+ wget | [] [] [] [] [] [] [] | -+ xchat | [] [] [] | -+ xfree86_xkb_xml | [] [] | -+ xpad | [] [] | -+ +-------------------------------------------------+ -+ et eu fa fi fr ga gl he hr hu id is it ja ko lg -+ 22 2 1 26 106 28 24 8 10 41 33 1 26 33 12 0 -+ -+ lt lv mk mn ms mt nb nl nn no nso pl pt pt_BR ro ru -+ +-----------------------------------------------------+ -+ a2ps | [] [] () () [] [] [] | -+ aegis | () () () | -+ ant-phone | [] [] | -+ anubis | [] [] [] [] [] [] | -+ ap-utils | [] () [] | -+ aspell | [] | -+ bash | [] [] [] | -+ batchelor | [] | -+ bfd | [] | -+ binutils | [] | -+ bison | [] [] [] [] [] | -+ bluez-pin | [] [] [] | -+ clisp | | -+ clisp | [] | -+ console-tools | [] | -+ coreutils | [] [] | -+ cpio | [] [] [] [] [] | -+ darkstat | [] [] [] [] | -+ diffutils | [] [] [] [] [] [] | -+ e2fsprogs | [] | -+ enscript | [] [] [] [] | -+ error | [] [] [] | -+ fetchmail | [] [] () [] | -+ fileutils | [] [] [] | -+ findutils | [] [] [] [] [] | -+ flex | [] [] [] [] | -+ fslint | [] [] | -+ gas | | -+ gawk | [] [] [] | -+ gbiff | [] [] | -+ gcal | | -+ gcc | | -+ gettext | [] [] [] | -+ gettext-examples | [] [] [] | -+ gettext-runtime | [] [] [] [] | -+ gettext-tools | [] [] | -+ gimp-print | [] | -+ gliv | [] [] [] | -+ glunarclock | [] [] [] [] | -+ gnubiff | [] | -+ gnucash | [] [] () [] | -+ gnucash-glossary | [] [] | -+ gnupg | [] | -+ gpe-aerial | [] [] [] [] | -+ gpe-beam | [] [] [] [] | -+ gpe-calendar | [] [] [] [] | -+ gpe-clock | [] [] [] [] | -+ gpe-conf | [] [] [] [] | -+ gpe-contacts | [] [] [] [] | -+ gpe-edit | [] [] [] [] | -+ gpe-go | [] [] [] | -+ gpe-login | [] [] [] [] | -+ gpe-ownerinfo | [] [] [] [] | -+ gpe-sketchbook | [] [] [] [] | -+ gpe-su | [] [] [] [] | -+ gpe-taskmanager | [] [] [] [] | -+ gpe-timesheet | [] [] [] [] | -+ gpe-today | [] [] [] [] | -+ gpe-todo | [] [] [] [] | -+ gphoto2 | [] | -+ gprof | [] [] | -+ gpsdrive | () () [] | -+ gramadoir | () [] | -+ grep | [] [] [] [] [] | -+ gretl | | -+ gtick | [] [] [] | -+ hello | [] [] [] [] [] [] [] [] [] [] | -+ id-utils | [] [] [] [] | -+ indent | [] [] [] [] | -+ iso_3166 | [] [] [] | -+ iso_3166_1 | [] [] | -+ iso_3166_2 | | -+ iso_3166_3 | [] | -+ iso_4217 | [] [] [] [] [] [] [] [] | -+ iso_639 | [] | -+ jpilot | () () | -+ jtag | | -+ jwhois | [] [] [] [] () | -+ kbd | [] [] [] | -+ latrine | [] | -+ ld | | -+ libc | [] [] [] [] | -+ libgpewidget | [] [] [] | -+ libiconv | [] [] [] [] [] | -+ lifelines | | -+ lilypond | | -+ lingoteach | | -+ lingoteach_lessons | | -+ lynx | [] [] [] | -+ m4 | [] [] [] [] [] | -+ mailutils | [] [] [] | -+ make | [] [] [] [] | -+ man-db | [] | -+ minicom | [] [] [] [] | -+ mysecretdiary | [] [] [] | -+ nano | [] [] [] [] [] | -+ nano_1_0 | [] [] [] [] [] [] | -+ opcodes | [] [] | -+ parted | [] [] [] [] | -+ ptx | [] [] [] [] [] [] [] [] | -+ python | | -+ radius | [] [] | -+ recode | [] [] [] [] | -+ rpm | [] [] [] | -+ screem | | -+ scrollkeeper | [] [] [] [] [] | -+ sed | [] [] [] | -+ sh-utils | [] [] | -+ shared-mime-info | [] [] | -+ sharutils | [] [] | -+ silky | () | -+ skencil | [] [] | -+ sketch | [] [] | -+ soundtracker | | -+ sp | | -+ tar | [] [] [] [] [] [] | -+ texinfo | [] [] [] [] | -+ textutils | [] [] | -+ tin | | -+ tp-robot | [] | -+ tuxpaint | [] [] [] [] [] [] [] [] | -+ unicode-han-tra... | | -+ unicode-transla... | | -+ util-linux | [] [] [] | -+ vorbis-tools | [] [] [] | -+ wastesedge | | -+ wdiff | [] [] [] [] [] | -+ wget | [] [] [] | -+ xchat | [] [] [] | -+ xfree86_xkb_xml | [] [] | -+ xpad | [] [] | -+ +-----------------------------------------------------+ -+ lt lv mk mn ms mt nb nl nn no nso pl pt pt_BR ro ru -+ 1 2 0 3 12 0 10 69 6 7 1 40 26 36 76 63 -+ -+ sk sl sr sv ta th tr uk ven vi wa xh zh_CN zh_TW zu -+ +-----------------------------------------------------+ -+ a2ps | [] [] [] [] | 16 -+ aegis | | 0 -+ ant-phone | | 3 -+ anubis | [] [] | 9 -+ ap-utils | () | 3 -+ aspell | | 4 -+ bash | | 9 -+ batchelor | | 3 -+ bfd | [] [] | 6 -+ binutils | [] [] [] | 8 -+ bison | [] [] | 14 -+ bluez-pin | [] [] [] | 14 -+ clisp | | 0 -+ clisp | | 5 -+ console-tools | | 3 -+ coreutils | [] [] [] [] | 16 -+ cpio | [] [] | 14 -+ darkstat | [] [] [] () () | 12 -+ diffutils | [] [] [] | 23 -+ e2fsprogs | [] [] | 6 -+ enscript | [] [] | 12 -+ error | [] [] [] | 15 -+ fetchmail | [] [] | 11 -+ fileutils | [] [] [] [] [] | 17 -+ findutils | [] [] [] [] [] [] | 29 -+ flex | [] [] | 13 -+ fslint | | 3 -+ gas | [] | 3 -+ gawk | [] [] | 12 -+ gbiff | | 4 -+ gcal | [] [] | 4 -+ gcc | [] | 4 -+ gettext | [] [] [] [] [] | 16 -+ gettext-examples | [] [] [] [] [] | 14 -+ gettext-runtime | [] [] [] [] [] [] [] [] | 22 -+ gettext-tools | [] [] [] [] [] [] | 14 -+ gimp-print | [] [] | 10 -+ gliv | | 3 -+ glunarclock | [] [] [] | 13 -+ gnubiff | | 3 -+ gnucash | [] [] | 9 -+ gnucash-glossary | [] [] [] | 8 -+ gnupg | [] [] [] [] | 17 -+ gpe-aerial | [] | 7 -+ gpe-beam | [] | 8 -+ gpe-calendar | [] [] [] [] | 13 -+ gpe-clock | [] [] [] | 10 -+ gpe-conf | [] [] | 9 -+ gpe-contacts | [] [] [] | 11 -+ gpe-edit | [] [] [] [] [] | 12 -+ gpe-go | | 5 -+ gpe-login | [] [] [] [] [] | 13 -+ gpe-ownerinfo | [] [] [] [] | 13 -+ gpe-sketchbook | [] [] | 9 -+ gpe-su | [] [] [] | 10 -+ gpe-taskmanager | [] [] [] | 10 -+ gpe-timesheet | [] [] [] [] | 12 -+ gpe-today | [] [] [] [] [] | 13 -+ gpe-todo | [] [] [] [] | 12 -+ gphoto2 | [] [] [] | 11 -+ gprof | [] [] | 9 -+ gpsdrive | [] [] | 3 -+ gramadoir | [] | 5 -+ grep | [] [] [] [] | 26 -+ gretl | | 3 -+ gtick | | 7 -+ hello | [] [] [] [] [] | 34 -+ id-utils | [] [] | 12 -+ indent | [] [] [] [] | 21 -+ iso_3166 | [] [] [] [] [] [] [] | 27 -+ iso_3166_1 | [] [] [] | 16 -+ iso_3166_2 | | 0 -+ iso_3166_3 | | 2 -+ iso_4217 | [] [] [] [] [] [] | 24 -+ iso_639 | | 1 -+ jpilot | [] [] [] [] [] | 9 -+ jtag | [] | 2 -+ jwhois | () [] [] | 11 -+ kbd | [] [] | 11 -+ latrine | | 2 -+ ld | [] [] | 5 -+ libc | [] [] [] [] | 20 -+ libgpewidget | [] [] [] [] | 13 -+ libiconv | [] [] [] [] [] [] [] [] | 27 -+ lifelines | [] | 2 -+ lilypond | [] | 3 -+ lingoteach | | 2 -+ lingoteach_lessons | () | 0 -+ lynx | [] [] [] | 14 -+ m4 | [] [] | 15 -+ mailutils | | 5 -+ make | [] [] [] | 16 -+ man-db | [] | 5 -+ minicom | | 11 -+ mysecretdiary | [] [] | 10 -+ nano | [] [] [] [] | 17 -+ nano_1_0 | [] [] [] | 17 -+ opcodes | [] [] | 6 -+ parted | [] [] [] | 15 -+ ptx | [] [] | 22 -+ python | | 0 -+ radius | | 4 -+ recode | [] [] [] | 20 -+ rpm | [] [] | 9 -+ screem | [] [] | 2 -+ scrollkeeper | [] [] [] | 15 -+ sed | [] [] [] [] [] [] | 24 -+ sh-utils | [] [] | 14 -+ shared-mime-info | [] [] | 7 -+ sharutils | [] [] [] [] | 17 -+ silky | () | 3 -+ skencil | [] | 6 -+ sketch | [] | 6 -+ soundtracker | [] [] | 7 -+ sp | [] | 3 -+ tar | [] [] [] [] [] | 24 -+ texinfo | [] [] [] | 14 -+ textutils | [] [] [] [] | 16 -+ tin | | 1 -+ tp-robot | | 2 -+ tuxpaint | [] [] [] [] [] | 29 -+ unicode-han-tra... | | 0 -+ unicode-transla... | | 2 -+ util-linux | [] [] | 15 -+ vorbis-tools | | 8 -+ wastesedge | | 0 -+ wdiff | [] [] [] | 18 -+ wget | [] [] [] [] [] [] [] [] | 24 -+ xchat | [] [] [] [] [] | 15 -+ xfree86_xkb_xml | [] [] [] [] [] | 11 -+ xpad | | 5 -+ +-----------------------------------------------------+ -+ 63 teams sk sl sr sv ta th tr uk ven vi wa xh zh_CN zh_TW zu -+ 131 domains 47 19 28 83 0 0 59 13 1 1 11 0 22 22 0 1373 - - 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 -@@ -260,7 +742,7 @@ - lag between the mere existence a PO file and its wide availability in a - distribution. - -- If July 2000 seems to be old, you may fetch a more recent copy of -+ If January 2004 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'. -@@ -268,15 +750,17 @@ - Using `gettext' in new packages - =============================== - -- If you are writing a freely available program and want to -+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 Public License applies to your sources from --then if you include `gettext' directly in your distribution on but --since you are writing free software anyway this is no restriction. -+package. Of course you have to respect the GNU Library General Public -+License which covers the use of the GNU `gettext' library. This means -+in particular that even non-free programs can use `libintl' as a shared -+library, whereas only free software can use `libintl' as a static -+library or use modified versions of `libintl'. - -- Once the sources are change 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 -+ Once the sources are changed appropriately and the setup can handle -+the use of `gettext' the only thing missing are the translations. The -+Free Translation Project is also available for packages which are not - developed inside the GNU project. Therefore the information given above - applies also for every other Free Software Project. Contact - `translation@iro.umontreal.ca' to make the `.pot' files available to -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/ChangeLog psmisc-20.2.works.clean/ChangeLog ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/ChangeLog 2001-10-17 17:43:07.000000000 -0500 -+++ psmisc-20.2.works.clean/ChangeLog 2004-10-13 15:18:42.000000000 -0500 -@@ -1,3 +1,35 @@ -+2004-10-13 gettextize <bug-gnu-gettext@gnu.org> -+ -+ * Makefile.am (SUBDIRS): Add intl. -+ (EXTRA_DIST): Add config.rpath. -+ * configure.in (AC_CONFIG_FILES): Add intl/Makefile. -+ -+2004-10-13 gettextize <bug-gnu-gettext@gnu.org> -+ -+ * Makefile.am (SUBDIRS): Add intl. -+ * configure.in (AC_CONFIG_FILES): Add intl/Makefile. -+ -+2004-10-13 gettextize <bug-gnu-gettext@gnu.org> -+ -+ * Makefile.am (SUBDIRS): Add intl. -+ * configure.in (AC_CONFIG_FILES): Add intl/Makefile. -+ -+2004-10-13 gettextize <bug-gnu-gettext@gnu.org> -+ -+ * configure.in (AC_CONFIG_FILES): Add po/Makefile.in. -+ -+2004-10-13 gettextize <bug-gnu-gettext@gnu.org> -+ -+ * configure.in (AC_CONFIG_FILES): Add intl/Makefile. -+ -+2004-10-13 gettextize <bug-gnu-gettext@gnu.org> -+ -+ * Makefile.am (SUBDIRS): Remove intl. -+ (ACLOCAL_AMFLAGS): New variable. -+ (EXTRA_DIST): Add config.rpath. -+ * configure.in (AC_CONFIG_FILES): Add m4/Makefile. -+ (AC_CONFIG_FILES): Remove intl/Makefile. -+ - Changes in 20.2 (18-OCT-2001) - ============================= - - Added NLS/gettext -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/ChangeLog~ psmisc-20.2.works.clean/ChangeLog~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/Makefile.am psmisc-20.2.works.clean/Makefile.am ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/Makefile.am 2001-06-12 19:49:47.000000000 -0500 -+++ psmisc-20.2.works.clean/Makefile.am 2004-10-13 15:19:08.000000000 -0500 -@@ -1,4 +1,5 @@ -+SUBDIRS = intl po doc src - --SUBDIRS = doc intl src po -+EXTRA_DIST= config.rpath config.rpath ABOUT-NLS - --EXTRA_DIST=ABOUT-NLS -+ACLOCAL_AMFLAGS = -I m4 -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/Makefile.am~ psmisc-20.2.works.clean/Makefile.am~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/Makefile.in psmisc-20.2.works.clean/Makefile.in -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/aclocal.m4 psmisc-20.2.works.clean/aclocal.m4 -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/autom4te.cache/output.0 psmisc-20.2.works.clean/autom4te.cache/output.0 -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/autom4te.cache/output.1 psmisc-20.2.works.clean/autom4te.cache/output.1 -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/autom4te.cache/output.2 psmisc-20.2.works.clean/autom4te.cache/output.2 -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/autom4te.cache/requests psmisc-20.2.works.clean/autom4te.cache/requests -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/autom4te.cache/traces.0 psmisc-20.2.works.clean/autom4te.cache/traces.0 -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/autom4te.cache/traces.1 psmisc-20.2.works.clean/autom4te.cache/traces.1 -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/autom4te.cache/traces.2 psmisc-20.2.works.clean/autom4te.cache/traces.2 -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/config.guess psmisc-20.2.works.clean/config.guess -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/config.h.in psmisc-20.2.works.clean/config.h.in -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/config.rpath psmisc-20.2.works.clean/config.rpath -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/config.sub psmisc-20.2.works.clean/config.sub -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/configure psmisc-20.2.works.clean/configure -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/configure.in psmisc-20.2.works.clean/configure.in ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/configure.in 2001-06-15 07:21:07.000000000 -0500 -+++ psmisc-20.2.works.clean/configure.in 2004-10-13 15:19:18.000000000 -0500 -@@ -1,5 +1,6 @@ - dnl Process this file with autoconf to produce a configure script. --AC_INIT(src/comm.h) -+AC_INIT -+AC_CONFIG_SRCDIR([src/comm.h]) - AM_CONFIG_HEADER(config.h) - AM_INIT_AUTOMAKE(psmisc,20.2) - -@@ -23,7 +24,15 @@ - AC_C_CONST - AC_TYPE_PID_T - AC_TYPE_SIZE_T --AC_STRUCT_ST_RDEV -+AC_DIAGNOSE([obsolete],[AC_STRUCT_ST_RDEV: -+ your code should no longer depend upon `HAVE_ST_RDEV', but -+ `HAVE_STRUCT_STAT_ST_RDEV'. Remove this warning and -+ the `AC_DEFINE' when you adjust the code.]) -+AC_CHECK_MEMBERS([struct stat.st_rdev],[AC_DEFINE(HAVE_ST_RDEV, 1, -+ [Define to 1 if your `struct stat' has `st_rdev'. -+ Deprecated, use `HAVE_STRUCT_STAT_ST_RDEV' -+ instead.])]) -+ - AC_TYPE_UID_T - - dnl Check for language stuff -@@ -33,4 +42,5 @@ - dnl Checks for library functions. - AC_CHECK_FUNCS(strdup strerror strtoul) - --AC_OUTPUT(Makefile doc/Makefile src/Makefile intl/Makefile po/Makefile.in) -+AC_CONFIG_FILES([Makefile doc/Makefile src/Makefile po/Makefile.in m4/Makefile intl/Makefile intl/libgnuintl.h ]) -+AC_OUTPUT -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/configure.in~ psmisc-20.2.works.clean/configure.in~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/depcomp psmisc-20.2.works.clean/depcomp -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/doc/Makefile.in psmisc-20.2.works.clean/doc/Makefile.in ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/doc/Makefile.in 2001-10-17 17:49:50.000000000 -0500 -+++ psmisc-20.2.works.clean/doc/Makefile.in 2004-10-13 15:20:17.000000000 -0500 -@@ -1,6 +1,8 @@ --# Makefile.in generated automatically by automake 1.4-p4 from Makefile.am -+# Makefile.in generated by automake 1.8.4 from Makefile.am. -+# @configure_input@ - --# Copyright (C) 1994, 1995-8, 1999 Free Software Foundation, Inc. -+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -+# 2003, 2004 Free Software Foundation, Inc. - # This Makefile.in is free software; the Free Software Foundation - # gives unlimited permission to copy and/or distribute it, - # with or without modifications, as long as this notice is preserved. -@@ -10,111 +12,192 @@ - # even the implied warranty of MERCHANTABILITY or FITNESS FOR A - # PARTICULAR PURPOSE. - -- --SHELL = @SHELL@ -- -+@SET_MAKE@ - srcdir = @srcdir@ - top_srcdir = @top_srcdir@ - VPATH = @srcdir@ --prefix = @prefix@ --exec_prefix = @exec_prefix@ -- --bindir = @bindir@ --sbindir = @sbindir@ --libexecdir = @libexecdir@ --datadir = @datadir@ --sysconfdir = @sysconfdir@ --sharedstatedir = @sharedstatedir@ --localstatedir = @localstatedir@ --libdir = @libdir@ --infodir = @infodir@ --mandir = @mandir@ --includedir = @includedir@ --oldincludedir = /usr/include -- --DESTDIR = -- - pkgdatadir = $(datadir)/@PACKAGE@ - pkglibdir = $(libdir)/@PACKAGE@ - pkgincludedir = $(includedir)/@PACKAGE@ -- - top_builddir = .. -- --ACLOCAL = @ACLOCAL@ --AUTOCONF = @AUTOCONF@ --AUTOMAKE = @AUTOMAKE@ --AUTOHEADER = @AUTOHEADER@ -- -+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd - INSTALL = @INSTALL@ --INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS) --INSTALL_DATA = @INSTALL_DATA@ --INSTALL_SCRIPT = @INSTALL_SCRIPT@ --transform = @program_transform_name@ -- -+install_sh_DATA = $(install_sh) -c -m 644 -+install_sh_PROGRAM = $(install_sh) -c -+install_sh_SCRIPT = $(install_sh) -c -+INSTALL_HEADER = $(INSTALL_DATA) -+transform = $(program_transform_name) - NORMAL_INSTALL = : - PRE_INSTALL = : - POST_INSTALL = : - NORMAL_UNINSTALL = : - PRE_UNINSTALL = : - POST_UNINSTALL = : --host_alias = @host_alias@ - host_triplet = @host@ -+subdir = doc -+DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in -+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 -+am__aclocal_m4_deps = $(top_srcdir)/configure.in -+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ -+ $(ACLOCAL_M4) -+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs -+CONFIG_HEADER = $(top_builddir)/config.h -+CONFIG_CLEAN_FILES = -+SOURCES = -+DIST_SOURCES = -+man1dir = $(mandir)/man1 -+am__installdirs = "$(DESTDIR)$(man1dir)" -+NROFF = nroff -+MANS = $(man_MANS) -+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) -+ACLOCAL = @ACLOCAL@ -+ALLOCA = @ALLOCA@ -+AMDEP_FALSE = @AMDEP_FALSE@ -+AMDEP_TRUE = @AMDEP_TRUE@ -+AMTAR = @AMTAR@ -+AUTOCONF = @AUTOCONF@ -+AUTOHEADER = @AUTOHEADER@ -+AUTOMAKE = @AUTOMAKE@ -+AWK = @AWK@ - BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@ --CATALOGS = @CATALOGS@ - CATOBJEXT = @CATOBJEXT@ - CC = @CC@ -+CCDEPMODE = @CCDEPMODE@ -+CFLAGS = @CFLAGS@ - CPP = @CPP@ -+CPPFLAGS = @CPPFLAGS@ -+CYGPATH_W = @CYGPATH_W@ - DATADIRNAME = @DATADIRNAME@ --GMOFILES = @GMOFILES@ -+DEFS = @DEFS@ -+DEPDIR = @DEPDIR@ -+ECHO_C = @ECHO_C@ -+ECHO_N = @ECHO_N@ -+ECHO_T = @ECHO_T@ -+EGREP = @EGREP@ -+EXEEXT = @EXEEXT@ -+GENCAT = @GENCAT@ -+GLIBC21 = @GLIBC21@ - GMSGFMT = @GMSGFMT@ -+HAVE_ASPRINTF = @HAVE_ASPRINTF@ -+HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@ -+HAVE_SNPRINTF = @HAVE_SNPRINTF@ -+HAVE_WPRINTF = @HAVE_WPRINTF@ -+INSTALL_DATA = @INSTALL_DATA@ -+INSTALL_PROGRAM = @INSTALL_PROGRAM@ -+INSTALL_SCRIPT = @INSTALL_SCRIPT@ -+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ -+INSTOBJEXT = @INSTOBJEXT@ - INTLBISON = @INTLBISON@ - INTLLIBS = @INTLLIBS@ - INTLOBJS = @INTLOBJS@ - INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@ -+LDFLAGS = @LDFLAGS@ - LIBICONV = @LIBICONV@ -+LIBINTL = @LIBINTL@ -+LIBOBJS = @LIBOBJS@ -+LIBS = @LIBS@ -+LTLIBICONV = @LTLIBICONV@ -+LTLIBINTL = @LTLIBINTL@ -+LTLIBOBJS = @LTLIBOBJS@ - MAKEINFO = @MAKEINFO@ - MKINSTALLDIRS = @MKINSTALLDIRS@ - MSGFMT = @MSGFMT@ -+MSGMERGE = @MSGMERGE@ -+OBJEXT = @OBJEXT@ - PACKAGE = @PACKAGE@ --POFILES = @POFILES@ -+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ -+PACKAGE_NAME = @PACKAGE_NAME@ -+PACKAGE_STRING = @PACKAGE_STRING@ -+PACKAGE_TARNAME = @PACKAGE_TARNAME@ -+PACKAGE_VERSION = @PACKAGE_VERSION@ -+PATH_SEPARATOR = @PATH_SEPARATOR@ - POSUB = @POSUB@ - RANLIB = @RANLIB@ -+SET_MAKE = @SET_MAKE@ -+SHELL = @SHELL@ -+STRIP = @STRIP@ - TERMCAP_LIB = @TERMCAP_LIB@ - USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@ - USE_NLS = @USE_NLS@ - VERSION = @VERSION@ -- -+XGETTEXT = @XGETTEXT@ -+ac_ct_CC = @ac_ct_CC@ -+ac_ct_RANLIB = @ac_ct_RANLIB@ -+ac_ct_STRIP = @ac_ct_STRIP@ -+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@ -+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@ -+am__include = @am__include@ -+am__leading_dot = @am__leading_dot@ -+am__quote = @am__quote@ -+bindir = @bindir@ -+build = @build@ -+build_alias = @build_alias@ -+build_cpu = @build_cpu@ -+build_os = @build_os@ -+build_vendor = @build_vendor@ -+datadir = @datadir@ -+exec_prefix = @exec_prefix@ -+host = @host@ -+host_alias = @host_alias@ -+host_cpu = @host_cpu@ -+host_os = @host_os@ -+host_vendor = @host_vendor@ -+includedir = @includedir@ -+infodir = @infodir@ -+install_sh = @install_sh@ -+libdir = @libdir@ -+libexecdir = @libexecdir@ -+localstatedir = @localstatedir@ -+mandir = @mandir@ -+mkdir_p = @mkdir_p@ -+oldincludedir = @oldincludedir@ -+prefix = @prefix@ -+program_transform_name = @program_transform_name@ -+sbindir = @sbindir@ -+sharedstatedir = @sharedstatedir@ -+sysconfdir = @sysconfdir@ -+target_alias = @target_alias@ - man_MANS = fuser.1 killall.1 pidof.1 pstree.1 -- - EXTRA_DIST = $(man_MANS) --mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs --CONFIG_HEADER = ../config.h --CONFIG_CLEAN_FILES = --man1dir = $(mandir)/man1 --MANS = $(man_MANS) -- --NROFF = nroff --DIST_COMMON = Makefile.am Makefile.in -- -- --DISTFILES = $(DIST_COMMON) $(SOURCES) $(HEADERS) $(TEXINFOS) $(EXTRA_DIST) -+all: all-am - --TAR = tar --GZIP_ENV = --best --all: all-redirect - .SUFFIXES: --$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4) -- cd $(top_srcdir) && $(AUTOMAKE) --gnu --include-deps doc/Makefile -- --Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -- cd $(top_builddir) \ -- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status -+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) -+ @for dep in $?; do \ -+ case '$(am__configure_deps)' in \ -+ *$$dep*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \ -+ && exit 0; \ -+ exit 1;; \ -+ esac; \ -+ done; \ -+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign doc/Makefile'; \ -+ cd $(top_srcdir) && \ -+ $(AUTOMAKE) --foreign doc/Makefile -+.PRECIOUS: Makefile -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ @case '$?' in \ -+ *config.status*) \ -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ -+ *) \ -+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ -+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ -+ esac; - -+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh - --install-man1: -- $(mkinstalldirs) $(DESTDIR)$(man1dir) -- @list='$(man1_MANS)'; \ -- l2='$(man_MANS)'; for i in $$l2; do \ -+$(top_srcdir)/configure: $(am__configure_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+$(ACLOCAL_M4): $(am__aclocal_m4_deps) -+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh -+uninstall-info-am: -+install-man1: $(man1_MANS) $(man_MANS) -+ @$(NORMAL_INSTALL) -+ test -z "$(man1dir)" || $(mkdir_p) "$(DESTDIR)$(man1dir)" -+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ -+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ -+ for i in $$l2; do \ - case "$$i" in \ - *.1*) list="$$list $$i" ;; \ - esac; \ -@@ -123,112 +206,158 @@ - if test -f $(srcdir)/$$i; then file=$(srcdir)/$$i; \ - else file=$$i; fi; \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ -+ case "$$ext" in \ -+ 1*) ;; \ -+ *) ext='1' ;; \ -+ esac; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ -+ inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ -- echo " $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst"; \ -- $(INSTALL_DATA) $$file $(DESTDIR)$(man1dir)/$$inst; \ -+ echo " $(INSTALL_DATA) '$$file' '$(DESTDIR)$(man1dir)/$$inst'"; \ -+ $(INSTALL_DATA) "$$file" "$(DESTDIR)$(man1dir)/$$inst"; \ - done -- - uninstall-man1: -- @list='$(man1_MANS)'; \ -- l2='$(man_MANS)'; for i in $$l2; do \ -+ @$(NORMAL_UNINSTALL) -+ @list='$(man1_MANS) $(dist_man1_MANS) $(nodist_man1_MANS)'; \ -+ l2='$(man_MANS) $(dist_man_MANS) $(nodist_man_MANS)'; \ -+ for i in $$l2; do \ - case "$$i" in \ - *.1*) list="$$list $$i" ;; \ - esac; \ - done; \ - for i in $$list; do \ - ext=`echo $$i | sed -e 's/^.*\\.//'`; \ -+ case "$$ext" in \ -+ 1*) ;; \ -+ *) ext='1' ;; \ -+ esac; \ - inst=`echo $$i | sed -e 's/\\.[0-9a-z]*$$//'`; \ -+ inst=`echo $$inst | sed -e 's/^.*\///'`; \ - inst=`echo $$inst | sed '$(transform)'`.$$ext; \ -- echo " rm -f $(DESTDIR)$(man1dir)/$$inst"; \ -- rm -f $(DESTDIR)$(man1dir)/$$inst; \ -+ echo " rm -f '$(DESTDIR)$(man1dir)/$$inst'"; \ -+ rm -f "$(DESTDIR)$(man1dir)/$$inst"; \ - done --install-man: $(MANS) -- @$(NORMAL_INSTALL) -- $(MAKE) $(AM_MAKEFLAGS) install-man1 --uninstall-man: -- @$(NORMAL_UNINSTALL) -- $(MAKE) $(AM_MAKEFLAGS) uninstall-man1 - tags: TAGS - TAGS: - -+ctags: CTAGS -+CTAGS: - --distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/$(subdir) -- --subdir = doc - - distdir: $(DISTFILES) -- @for file in $(DISTFILES); do \ -- d=$(srcdir); \ -+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \ -+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \ -+ list='$(DISTFILES)'; for file in $$list; do \ -+ case $$file in \ -+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \ -+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \ -+ esac; \ -+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ -+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \ -+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \ -+ dir="/$$dir"; \ -+ $(mkdir_p) "$(distdir)$$dir"; \ -+ else \ -+ dir=''; \ -+ fi; \ - if test -d $$d/$$file; then \ -- cp -pr $$d/$$file $(distdir)/$$file; \ -+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ -+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \ -+ fi; \ -+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \ - else \ - test -f $(distdir)/$$file \ -- || ln $$d/$$file $(distdir)/$$file 2> /dev/null \ -- || cp -p $$d/$$file $(distdir)/$$file || :; \ -+ || cp -p $$d/$$file $(distdir)/$$file \ -+ || exit 1; \ - fi; \ - done --info-am: --info: info-am --dvi-am: --dvi: dvi-am - check-am: all-am - check: check-am --installcheck-am: --installcheck: installcheck-am --install-exec-am: -+all-am: Makefile $(MANS) -+installdirs: -+ for dir in "$(DESTDIR)$(man1dir)"; do \ -+ test -z "$$dir" || $(mkdir_p) "$$dir"; \ -+ done -+install: install-am - install-exec: install-exec-am -- --install-data-am: install-man - install-data: install-data-am -+uninstall: uninstall-am - - install-am: all-am - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am --install: install-am --uninstall-am: uninstall-man --uninstall: uninstall-am --all-am: Makefile $(MANS) --all-redirect: all-am --install-strip: -- $(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install --installdirs: -- $(mkinstalldirs) $(DESTDIR)$(mandir)/man1 -- - -+installcheck: installcheck-am -+install-strip: -+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ -+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ -+ `test -z '$(STRIP)' || \ -+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install - mostlyclean-generic: - - clean-generic: - - distclean-generic: -- -rm -f Makefile $(CONFIG_CLEAN_FILES) -- -rm -f config.cache config.log stamp-h stamp-h[0-9]* -+ -rm -f $(CONFIG_CLEAN_FILES) - - maintainer-clean-generic: --mostlyclean-am: mostlyclean-generic -+ @echo "This command is intended for maintainers to use" -+ @echo "it deletes files that may require special tools to rebuild." -+clean: clean-am - --mostlyclean: mostlyclean-am -+clean-am: clean-generic mostlyclean-am - --clean-am: clean-generic mostlyclean-am -+distclean: distclean-am -+ -rm -f Makefile -+distclean-am: clean-am distclean-generic - --clean: clean-am -+dvi: dvi-am - --distclean-am: distclean-generic clean-am -+dvi-am: - --distclean: distclean-am -+html: html-am - --maintainer-clean-am: maintainer-clean-generic distclean-am -- @echo "This command is intended for maintainers to use;" -- @echo "it deletes files that may require special tools to rebuild." -+info: info-am -+ -+info-am: -+ -+install-data-am: install-man -+ -+install-exec-am: -+ -+install-info: install-info-am -+ -+install-man: install-man1 -+ -+installcheck-am: - - maintainer-clean: maintainer-clean-am -+ -rm -f Makefile -+maintainer-clean-am: distclean-am maintainer-clean-generic - --.PHONY: install-man1 uninstall-man1 install-man uninstall-man tags \ --distdir info-am info dvi-am dvi check check-am installcheck-am \ --installcheck install-exec-am install-exec install-data-am install-data \ --install-am install uninstall-am uninstall all-redirect all-am all \ --installdirs mostlyclean-generic distclean-generic clean-generic \ --maintainer-clean-generic clean mostlyclean distclean maintainer-clean -+mostlyclean: mostlyclean-am -+ -+mostlyclean-am: mostlyclean-generic -+ -+pdf: pdf-am -+ -+pdf-am: -+ -+ps: ps-am - -+ps-am: -+ -+uninstall-am: uninstall-info-am uninstall-man -+ -+uninstall-man: uninstall-man1 -+ -+.PHONY: all all-am check check-am clean clean-generic distclean \ -+ distclean-generic distdir dvi dvi-am html html-am info info-am \ -+ install install-am install-data install-data-am install-exec \ -+ install-exec-am install-info install-info-am install-man \ -+ install-man1 install-strip installcheck installcheck-am \ -+ installdirs maintainer-clean maintainer-clean-generic \ -+ mostlyclean mostlyclean-generic pdf pdf-am ps ps-am uninstall \ -+ uninstall-am uninstall-info-am uninstall-man uninstall-man1 - - # Tell versions [3.59,3.63) of GNU make to not export all variables. - # Otherwise a system limit (for SysV at least) may be exceeded. -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/install-sh psmisc-20.2.works.clean/install-sh -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/ChangeLog psmisc-20.2.works.clean/intl/ChangeLog ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/ChangeLog 2001-04-13 23:00:42.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/ChangeLog 2004-10-13 15:18:41.000000000 -0500 -@@ -1,4 +1,4 @@ --2001-03-09 GNU <bug-gnu-utils@gnu.org> -+2004-01-29 GNU <bug-gnu-gettext@gnu.org> - -- * Version 0.10.36 released. -+ * Version 0.14.1 released. - -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/Makefile.in psmisc-20.2.works.clean/intl/Makefile.in ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/Makefile.in 2001-04-13 23:00:42.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/Makefile.in 2004-10-13 15:18:41.000000000 -0500 -@@ -1,19 +1,20 @@ --# Makefile for directory with message catalog handling in GNU NLS Utilities. --# Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. -+# Makefile for directory with message catalog handling library of GNU gettext -+# Copyright (C) 1995-1998, 2000-2003 Free Software Foundation, Inc. - # --# This program is free software; you can redistribute it and/or modify --# it under the terms of the GNU General Public License as published by --# the Free Software Foundation; either version 2, or (at your option) -+# 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 General Public License for more details. -+# 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 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. -+# 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. - - PACKAGE = @PACKAGE@ - VERSION = @VERSION@ -@@ -23,23 +24,23 @@ - srcdir = @srcdir@ - top_srcdir = @top_srcdir@ - top_builddir = .. --VPATH = @srcdir@ -+#VPATH = $(srcdir) - - prefix = @prefix@ - exec_prefix = @exec_prefix@ - transform = @program_transform_name@ --libdir = $(exec_prefix)/lib --includedir = $(prefix)/include --datadir = $(prefix)/share -+libdir = @libdir@ -+includedir = @includedir@ -+datadir = @datadir@ - localedir = $(datadir)/locale --gettextsrcdir = @datadir@/gettext/intl -+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` -+mkinstalldirs = $(SHELL) $(MKINSTALLDIRS) - - l = @INTL_LIBTOOL_SUFFIX_PREFIX@ - -@@ -51,89 +52,202 @@ - YFLAGS = --name-prefix=__gettext - - DEFS = -DLOCALEDIR=\"$(localedir)\" -DLOCALE_ALIAS_PATH=\"$(aliaspath)\" \ ---DLIBDIR=\"$(libdir)\" @DEFS@ -+-DLIBDIR=\"$(libdir)\" -DIN_LIBINTL \ -+-DENABLE_RELOCATABLE=1 -DIN_LIBRARY -DINSTALLDIR=\"$(libdir)\" -DNO_XMALLOC \ -+-Dset_relocation_prefix=libintl_set_relocation_prefix \ -+-Drelocate=libintl_relocate \ -+-DDEPENDS_ON_LIBICONV=1 @DEFS@ - CPPFLAGS = @CPPFLAGS@ - CFLAGS = @CFLAGS@ - LDFLAGS = @LDFLAGS@ -+LIBS = @LIBS@ - - COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) - --HEADERS = $(COMHDRS) libgnuintl.h libgettext.h loadinfo.h --COMHDRS = gettext.h gettextP.h hash-string.h --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 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 dcigettext.$lo dcngettext.$lo dngettext.$lo ngettext.$lo \ --plural.$lo localcharset.$lo --GETTOBJS = intl-compat.$lo -+HEADERS = \ -+ gmo.h \ -+ gettextP.h \ -+ hash-string.h \ -+ loadinfo.h \ -+ plural-exp.h \ -+ eval-plural.h \ -+ localcharset.h \ -+ relocatable.h \ -+ xsize.h \ -+ printf-args.h printf-args.c \ -+ printf-parse.h wprintf-parse.h printf-parse.c \ -+ vasnprintf.h vasnwprintf.h vasnprintf.c \ -+ os2compat.h \ -+ libgnuintl.h.in -+SOURCES = \ -+ bindtextdom.c \ -+ dcgettext.c \ -+ dgettext.c \ -+ gettext.c \ -+ finddomain.c \ -+ loadmsgcat.c \ -+ localealias.c \ -+ textdomain.c \ -+ l10nflist.c \ -+ explodename.c \ -+ dcigettext.c \ -+ dcngettext.c \ -+ dngettext.c \ -+ ngettext.c \ -+ plural.y \ -+ plural-exp.c \ -+ localcharset.c \ -+ relocatable.c \ -+ localename.c \ -+ log.c \ -+ printf.c \ -+ osdep.c \ -+ os2compat.c \ -+ intl-compat.c -+OBJECTS = \ -+ bindtextdom.$lo \ -+ dcgettext.$lo \ -+ dgettext.$lo \ -+ gettext.$lo \ -+ finddomain.$lo \ -+ loadmsgcat.$lo \ -+ localealias.$lo \ -+ textdomain.$lo \ -+ l10nflist.$lo \ -+ explodename.$lo \ -+ dcigettext.$lo \ -+ dcngettext.$lo \ -+ dngettext.$lo \ -+ ngettext.$lo \ -+ plural.$lo \ -+ plural-exp.$lo \ -+ localcharset.$lo \ -+ relocatable.$lo \ -+ localename.$lo \ -+ log.$lo \ -+ printf.$lo \ -+ osdep.$lo \ -+ intl-compat.$lo - 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 --DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c -+DISTFILES.gettext = COPYING.LIB-2.0 COPYING.LIB-2.1 libintl.glibc \ -+libgnuintl.h_vms Makefile.vms \ -+libgnuintl.h.msvc-static libgnuintl.h.msvc-shared README.woe32 Makefile.msvc -+DISTFILES.obsolete = xopen-msg.sed linux-msg.sed po2tbl.sed.in cat-compat.c \ -+COPYING.LIB-2 gettext.h libgettext.h plural-eval.c libgnuintl.h -+ -+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 libgnuintl.a: $(OBJECTS) -+ rm -f $@ -+ $(AR) cru $@ $(OBJECTS) -+ $(RANLIB) $@ -+ -+libintl.la libgnuintl.la: $(OBJECTS) -+ $(LIBTOOL) --mode=link \ -+ $(CC) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) $(LDFLAGS) -o $@ \ -+ $(OBJECTS) @LTLIBICONV@ $(LIBS) -lc \ -+ -version-info $(LTV_CURRENT):$(LTV_REVISION):$(LTV_AGE) \ -+ -rpath $(libdir) \ -+ -no-undefined - - # 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_CURRENT=7 - LTV_REVISION=0 --LTV_AGE=0 -+LTV_AGE=4 - - .SUFFIXES: - .SUFFIXES: .c .y .o .lo .sin .sed -+ - .c.o: - $(COMPILE) $< --.c.lo: -- $(LIBTOOL) --mode=compile $(COMPILE) $< - - .y.c: - $(YACC) $(YFLAGS) --output $@ $< - rm -f $*.h - --.sin.sed: -- sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $< > t-$@ -- mv t-$@ $@ -- --INCLUDES = -I.. -I. -I$(top_srcdir)/intl -+bindtextdom.lo: $(srcdir)/bindtextdom.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/bindtextdom.c -+dcgettext.lo: $(srcdir)/dcgettext.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcgettext.c -+dgettext.lo: $(srcdir)/dgettext.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dgettext.c -+gettext.lo: $(srcdir)/gettext.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/gettext.c -+finddomain.lo: $(srcdir)/finddomain.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/finddomain.c -+loadmsgcat.lo: $(srcdir)/loadmsgcat.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/loadmsgcat.c -+localealias.lo: $(srcdir)/localealias.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localealias.c -+textdomain.lo: $(srcdir)/textdomain.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/textdomain.c -+l10nflist.lo: $(srcdir)/l10nflist.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/l10nflist.c -+explodename.lo: $(srcdir)/explodename.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/explodename.c -+dcigettext.lo: $(srcdir)/dcigettext.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcigettext.c -+dcngettext.lo: $(srcdir)/dcngettext.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dcngettext.c -+dngettext.lo: $(srcdir)/dngettext.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/dngettext.c -+ngettext.lo: $(srcdir)/ngettext.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/ngettext.c -+plural.lo: $(srcdir)/plural.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural.c -+plural-exp.lo: $(srcdir)/plural-exp.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/plural-exp.c -+localcharset.lo: $(srcdir)/localcharset.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localcharset.c -+relocatable.lo: $(srcdir)/relocatable.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/relocatable.c -+localename.lo: $(srcdir)/localename.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/localename.c -+log.lo: $(srcdir)/log.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/log.c -+printf.lo: $(srcdir)/printf.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/printf.c -+osdep.lo: $(srcdir)/osdep.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/osdep.c -+intl-compat.lo: $(srcdir)/intl-compat.c -+ $(LIBTOOL) --mode=compile $(COMPILE) $(srcdir)/intl-compat.c - --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: -+ref-add.sed: $(srcdir)/ref-add.sin -+ sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-add.sin > t-ref-add.sed -+ mv t-ref-add.sed ref-add.sed -+ref-del.sed: $(srcdir)/ref-del.sin -+ sed -e '/^#/d' -e 's/@''PACKAGE''@/@PACKAGE@/g' $(srcdir)/ref-del.sin > t-ref-del.sed -+ mv t-ref-del.sed ref-del.sed - --libintl.a libgnuintl.a: $(OBJECTS) -- rm -f $@ -- $(AR) cru $@ $(OBJECTS) -- $(RANLIB) $@ -+INCLUDES = -I. -I$(srcdir) -I.. - --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 -+libgnuintl.h: $(srcdir)/libgnuintl.h.in -+ sed -e 's,@''HAVE_POSIX_PRINTF''@,@HAVE_POSIX_PRINTF@,g' \ -+ -e 's,@''HAVE_ASPRINTF''@,@HAVE_ASPRINTF@,g' \ -+ -e 's,@''HAVE_SNPRINTF''@,@HAVE_SNPRINTF@,g' \ -+ -e 's,@''HAVE_WPRINTF''@,@HAVE_WPRINTF@,g' \ -+ < $(srcdir)/libgnuintl.h.in > libgnuintl.h - - libintl.h: libgnuintl.h -- cp $(srcdir)/libgnuintl.h libintl.h -+ cp libgnuintl.h libintl.h - --charset.alias: config.charset -+charset.alias: $(srcdir)/config.charset - $(SHELL) $(srcdir)/config.charset '@host@' > t-$@ - mv t-$@ $@ - - check: all - --# This installation goal is only used in GNU gettext. Packages which --# 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 GNU gettext() function in its C library or in a - # separate library. -@@ -141,25 +255,50 @@ - # 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 "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ -+ && test '@USE_INCLUDED_LIBINTL@' = yes; then \ - $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ - $(INSTALL_DATA) libintl.h $(DESTDIR)$(includedir)/libintl.h; \ - $(LIBTOOL) --mode=install \ - $(INSTALL_DATA) libintl.$la $(DESTDIR)$(libdir)/libintl.$la; \ -+ if test "@RELOCATABLE@" = yes; then \ -+ dependencies=`sed -n -e 's,^dependency_libs=\(.*\),\1,p' < $(DESTDIR)$(libdir)/libintl.la | sed -e "s,^',," -e "s,'\$$,,"`; \ -+ if test -n "$$dependencies"; then \ -+ rm -f $(DESTDIR)$(libdir)/libintl.la; \ -+ fi; \ -+ fi; \ - else \ - : ; \ - fi -- if test '@USE_INCLUDED_LIBINTL@' = yes; then \ -+ if test "$(PACKAGE)" = "gettext-tools" \ -+ && test '@USE_INCLUDED_LIBINTL@' = no; then \ - $(mkinstalldirs) $(DESTDIR)$(libdir); \ -- test -f $(DESTDIR)$(libdir)/charset.alias \ -- && orig=$(DESTDIR)$(libdir)/charset.alias \ -- || orig=charset.alias; \ -+ $(LIBTOOL) --mode=install \ -+ $(INSTALL_DATA) libgnuintl.$la $(DESTDIR)$(libdir)/libgnuintl.$la; \ -+ rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \ -+ $(INSTALL_DATA) $(DESTDIR)$(libdir)/libgnuintl.so $(DESTDIR)$(libdir)/preloadable_libintl.so; \ -+ $(LIBTOOL) --mode=uninstall \ -+ rm -f $(DESTDIR)$(libdir)/libgnuintl.$la; \ -+ else \ -+ : ; \ -+ fi -+ if test '@USE_INCLUDED_LIBINTL@' = yes; then \ -+ test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \ - temp=$(DESTDIR)$(libdir)/t-charset.alias; \ - dest=$(DESTDIR)$(libdir)/charset.alias; \ -- sed -f ref-add.sed $$orig > $$temp; \ -- $(INSTALL_DATA) $$temp $$dest; \ -- rm -f $$temp; \ -+ 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 \ -+ if test @GLIBC21@ = no; then \ -+ orig=charset.alias; \ -+ sed -f ref-add.sed $$orig > $$temp; \ -+ $(INSTALL_DATA) $$temp $$dest; \ -+ rm -f $$temp; \ -+ fi; \ -+ fi; \ - $(mkinstalldirs) $(DESTDIR)$(localedir); \ - test -f $(DESTDIR)$(localedir)/locale.alias \ - && orig=$(DESTDIR)$(localedir)/locale.alias \ -@@ -173,16 +312,22 @@ - : ; \ - fi - install-data: all -- if test "$(PACKAGE)" = "gettext"; then \ -+ if test "$(PACKAGE)" = "gettext-tools"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ - $(INSTALL_DATA) VERSION $(DESTDIR)$(gettextsrcdir)/VERSION; \ - $(INSTALL_DATA) ChangeLog.inst $(DESTDIR)$(gettextsrcdir)/ChangeLog; \ -- dists="$(DISTFILES.common)"; \ -+ dists="COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common)"; \ - for file in $$dists; do \ - $(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; \ -@@ -191,18 +336,51 @@ - : ; \ - fi - -+install-strip: install -+ -+installdirs: -+ if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ -+ && test '@USE_INCLUDED_LIBINTL@' = yes; then \ -+ $(mkinstalldirs) $(DESTDIR)$(libdir) $(DESTDIR)$(includedir); \ -+ else \ -+ : ; \ -+ fi -+ if test "$(PACKAGE)" = "gettext-tools" \ -+ && test '@USE_INCLUDED_LIBINTL@' = no; then \ -+ $(mkinstalldirs) $(DESTDIR)$(libdir); \ -+ else \ -+ : ; \ -+ fi -+ if test '@USE_INCLUDED_LIBINTL@' = yes; then \ -+ test @GLIBC21@ != no || $(mkinstalldirs) $(DESTDIR)$(libdir); \ -+ $(mkinstalldirs) $(DESTDIR)$(localedir); \ -+ else \ -+ : ; \ -+ fi -+ if test "$(PACKAGE)" = "gettext-tools"; then \ -+ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ -+ else \ -+ : ; \ -+ fi -+ - # Define this as empty until I found a useful application. - installcheck: - - uninstall: -- if test "$(PACKAGE)" = "gettext" \ -- && test '@INTLOBJS@' = '$(GETTOBJS)'; then \ -+ if { test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; } \ -+ && test '@USE_INCLUDED_LIBINTL@' = yes; then \ - rm -f $(DESTDIR)$(includedir)/libintl.h; \ - $(LIBTOOL) --mode=uninstall \ - rm -f $(DESTDIR)$(libdir)/libintl.$la; \ - else \ - : ; \ - fi -+ if test "$(PACKAGE)" = "gettext-tools" \ -+ && test '@USE_INCLUDED_LIBINTL@' = no; then \ -+ rm -f $(DESTDIR)$(libdir)/preloadable_libintl.so; \ -+ else \ -+ : ; \ -+ fi - if test '@USE_INCLUDED_LIBINTL@' = yes; then \ - if test -f $(DESTDIR)$(libdir)/charset.alias; then \ - temp=$(DESTDIR)$(libdir)/t-charset.alias; \ -@@ -229,25 +407,36 @@ - else \ - : ; \ - fi -- if test "$(PACKAGE)" = "gettext"; then \ -- for file in VERSION ChangeLog $(DISTFILES.common); do \ -+ if test "$(PACKAGE)" = "gettext-tools"; then \ -+ for file in VERSION ChangeLog COPYING.LIB-2.0 COPYING.LIB-2.1 $(DISTFILES.common) $(DISTFILES.generated); do \ - rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ - done; \ - else \ - : ; \ - fi - --info dvi: -+info dvi ps pdf html: - - $(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 -+bindtextdom.$lo dcgettext.$lo dcigettext.$lo dcngettext.$lo dgettext.$lo dngettext.$lo finddomain.$lo gettext.$lo intl-compat.$lo loadmsgcat.$lo localealias.$lo ngettext.$lo textdomain.$lo: $(srcdir)/gettextP.h $(srcdir)/gmo.h $(srcdir)/loadinfo.h -+dcigettext.$lo loadmsgcat.$lo: $(srcdir)/hash-string.h -+explodename.$lo l10nflist.$lo: $(srcdir)/loadinfo.h -+dcigettext.$lo loadmsgcat.$lo plural.$lo plural-exp.$lo: $(srcdir)/plural-exp.h -+dcigettext.$lo: $(srcdir)/eval-plural.h -+localcharset.$lo: $(srcdir)/localcharset.h -+localealias.$lo localcharset.$lo relocatable.$lo: $(srcdir)/relocatable.h -+printf.$lo: $(srcdir)/printf-args.h $(srcdir)/printf-args.c $(srcdir)/printf-parse.h $(srcdir)/wprintf-parse.h $(srcdir)/xsize.h $(srcdir)/printf-parse.c $(srcdir)/vasnprintf.h $(srcdir)/vasnwprintf.h $(srcdir)/vasnprintf.c - - tags: TAGS - - TAGS: $(HEADERS) $(SOURCES) - here=`pwd`; cd $(srcdir) && etags -o $$here/TAGS $(HEADERS) $(SOURCES) - -+ctags: CTAGS -+ -+CTAGS: $(HEADERS) $(SOURCES) -+ here=`pwd`; cd $(srcdir) && ctags -o $$here/CTAGS $(HEADERS) $(SOURCES) -+ - id: ID - - ID: $(HEADERS) $(SOURCES) -@@ -255,15 +444,15 @@ - - - mostlyclean: -- rm -f *.a *.la *.o *.lo core core.* -- rm -f libintl.h charset.alias ref-add.sed ref-del.sed -+ rm -f *.a *.la *.o *.obj *.lo core core.* -+ rm -f libgnuintl.h libintl.h charset.alias ref-add.sed ref-del.sed - rm -f -r .libs _libs - - clean: mostlyclean - - distclean: clean - rm -f Makefile ID TAGS -- if test "$(PACKAGE)" = gettext; then \ -+ if test "$(PACKAGE)" = "gettext-runtime" || test "$(PACKAGE)" = "gettext-tools"; then \ - rm -f ChangeLog.inst $(DISTFILES.normal); \ - else \ - : ; \ -@@ -278,20 +467,26 @@ - # other files which should not be distributed in other packages. - distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) - dist distdir: Makefile -- if test "$(PACKAGE)" = gettext; then \ -- additional="$(DISTFILES.gettext)"; \ -+ if test "$(PACKAGE)" = "gettext-tools"; then \ -+ : ; \ - else \ -- additional="$(DISTFILES.normal)"; \ -- fi; \ -- $(MAKE) $(DISTFILES.common) $(DISTFILES.generated) $$additional; \ -- for file in ChangeLog $(DISTFILES.common) $(DISTFILES.generated) $$additional; do \ -- ln $(srcdir)/$$file $(distdir) 2> /dev/null \ -- || cp -p $(srcdir)/$$file $(distdir); \ -- done -+ if test "$(PACKAGE)" = "gettext-runtime"; then \ -+ additional="$(DISTFILES.gettext)"; \ -+ else \ -+ additional="$(DISTFILES.normal)"; \ -+ fi; \ -+ $(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; \ -+ cp -p $$dir/$$file $(distdir); \ -+ done; \ -+ fi - --Makefile: Makefile.in ../config.status -- cd .. \ -- && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status -+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status -+ cd $(top_builddir) && $(SHELL) ./config.status -+# This would be more efficient, but doesn't work any more with autoconf-2.57, -+# when AC_CONFIG_FILES([intl/Makefile:somedir/Makefile.in]) is used. -+# cd $(top_builddir) && CONFIG_FILES=$(subdir)/$@ CONFIG_HEADERS= $(SHELL) ./config.status - - # 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 -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/VERSION psmisc-20.2.works.clean/intl/VERSION ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/VERSION 2001-04-13 23:00:42.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/VERSION 2004-10-13 15:18:41.000000000 -0500 -@@ -1 +1 @@ --GNU gettext library from gettext-0.10.36 -+GNU gettext library from gettext-0.14.1 -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/bindtextdom.c psmisc-20.2.works.clean/intl/bindtextdom.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/bindtextdom.c 2001-04-13 23:00:42.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/bindtextdom.c 2004-10-13 15:18:41.000000000 -0500 -@@ -1,19 +1,20 @@ - /* Implementation of the bindtextdomain(3) function -- Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. -+ Copyright (C) 1995-1998, 2000-2003 Free Software Foundation, Inc. - -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2, or (at your option) -+ 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 General Public License for more details. -+ 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 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. */ -+ 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. */ - - #ifdef HAVE_CONFIG_H - # include <config.h> -@@ -44,8 +45,8 @@ - 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__ -+# define _nl_default_dirname libintl_nl_default_dirname -+# define _nl_domain_bindings libintl_nl_domain_bindings - #endif - - /* Some compilers, like SunOS4 cc, don't have offsetof in <stddef.h>. */ -@@ -57,12 +58,17 @@ - - /* Contains the default location of the message catalogs. */ - extern const char _nl_default_dirname[]; -+#ifdef _LIBC -+extern const char _nl_default_dirname_internal[] attribute_hidden; -+#else -+# define INTUSE(name) name -+#endif - - /* 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) -+__libc_rwlock_define (extern, _nl_state_lock attribute_hidden) - - - /* Names for the libintl functions are a problem. They must not clash -@@ -76,15 +82,10 @@ - # define strdup(str) __strdup (str) - # endif - #else --# define BINDTEXTDOMAIN bindtextdomain__ --# define BIND_TEXTDOMAIN_CODESET bind_textdomain_codeset__ -+# define BINDTEXTDOMAIN libintl_bindtextdomain -+# define BIND_TEXTDOMAIN_CODESET libintl_bind_textdomain_codeset - #endif - --/* 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 -@@ -92,10 +93,8 @@ - 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 **dirnamep; -- const char **codesetp; -+set_binding_values (const char *domainname, -+ const char **dirnamep, const char **codesetp) - { - struct binding *binding; - int modified; -@@ -145,8 +144,8 @@ - char *result = binding->dirname; - if (strcmp (dirname, result) != 0) - { -- if (strcmp (dirname, _nl_default_dirname) == 0) -- result = (char *) _nl_default_dirname; -+ if (strcmp (dirname, INTUSE(_nl_default_dirname)) == 0) -+ result = (char *) INTUSE(_nl_default_dirname); - else - { - #if defined _LIBC || defined HAVE_STRDUP -@@ -161,7 +160,7 @@ - - if (__builtin_expect (result != NULL, 1)) - { -- if (binding->dirname != _nl_default_dirname) -+ if (binding->dirname != INTUSE(_nl_default_dirname)) - free (binding->dirname); - - binding->dirname = result; -@@ -202,6 +201,7 @@ - free (binding->codeset); - - binding->codeset = result; -+ binding->codeset_cntr++; - modified = 1; - } - } -@@ -214,7 +214,7 @@ - { - /* Simply return the default values. */ - if (dirnamep) -- *dirnamep = _nl_default_dirname; -+ *dirnamep = INTUSE(_nl_default_dirname); - if (codesetp) - *codesetp = NULL; - } -@@ -236,11 +236,11 @@ - - if (dirname == NULL) - /* The default value. */ -- dirname = _nl_default_dirname; -+ dirname = INTUSE(_nl_default_dirname); - else - { -- if (strcmp (dirname, _nl_default_dirname) == 0) -- dirname = _nl_default_dirname; -+ if (strcmp (dirname, INTUSE(_nl_default_dirname)) == 0) -+ dirname = INTUSE(_nl_default_dirname); - else - { - char *result; -@@ -263,7 +263,9 @@ - } - else - /* The default value. */ -- new_binding->dirname = (char *) _nl_default_dirname; -+ new_binding->dirname = (char *) INTUSE(_nl_default_dirname); -+ -+ new_binding->codeset_cntr = 0; - - if (codesetp) - { -@@ -285,6 +287,7 @@ - memcpy (result, codeset, len); - #endif - codeset = result; -+ new_binding->codeset_cntr++; - } - *codesetp = codeset; - new_binding->codeset = (char *) codeset; -@@ -316,7 +319,7 @@ - if (0) - { - failed_codeset: -- if (new_binding->dirname != _nl_default_dirname) -+ if (new_binding->dirname != INTUSE(_nl_default_dirname)) - free (new_binding->dirname); - failed_dirname: - free (new_binding); -@@ -338,9 +341,7 @@ - /* 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; -+BINDTEXTDOMAIN (const char *domainname, const char *dirname) - { - set_binding_values (domainname, &dirname, NULL); - return (char *) dirname; -@@ -349,9 +350,7 @@ - /* 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; -+BIND_TEXTDOMAIN_CODESET (const char *domainname, const char *codeset) - { - set_binding_values (domainname, NULL, &codeset); - return (char *) codeset; -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/config.charset psmisc-20.2.works.clean/intl/config.charset -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/dcgettext.c psmisc-20.2.works.clean/intl/dcgettext.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/dcgettext.c 2001-04-13 23:00:42.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/dcgettext.c 2004-10-13 15:18:41.000000000 -0500 -@@ -1,19 +1,20 @@ - /* Implementation of the dcgettext(3) function. -- Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. -+ Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc. - -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2, or (at your option) -+ 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 General Public License for more details. -+ 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 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. */ -+ 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. */ - - #ifdef HAVE_CONFIG_H - # include <config.h> -@@ -36,22 +37,20 @@ - # define DCGETTEXT __dcgettext - # define DCIGETTEXT __dcigettext - #else --# define DCGETTEXT dcgettext__ --# define DCIGETTEXT dcigettext__ -+# define DCGETTEXT libintl_dcgettext -+# define DCIGETTEXT libintl_dcigettext - #endif - - /* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY - locale. */ - char * --DCGETTEXT (domainname, msgid, category) -- const char *domainname; -- const char *msgid; -- int category; -+DCGETTEXT (const char *domainname, const char *msgid, int category) - { - return DCIGETTEXT (domainname, msgid, NULL, 0, 0, category); - } - - #ifdef _LIBC - /* Alias for function name in GNU C Library. */ -+INTDEF(__dcgettext) - weak_alias (__dcgettext, dcgettext); - #endif -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/dcigettext.c psmisc-20.2.works.clean/intl/dcigettext.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/dcigettext.c 2001-04-13 23:00:43.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/dcigettext.c 2004-10-13 15:18:41.000000000 -0500 -@@ -1,19 +1,20 @@ - /* Implementation of the internal dcigettext function. -- Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. -+ Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc. - -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2, or (at your option) -+ 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 General Public License for more details. -+ 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 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. */ -+ 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. */ - - /* Tell glibc's <string.h> to provide a prototype for mempcpy(). - This must come before <config.h> because <config.h> may include -@@ -32,14 +33,19 @@ - # define alloca __builtin_alloca - # define HAVE_ALLOCA 1 - #else --# if defined HAVE_ALLOCA_H || defined _LIBC --# include <alloca.h> -+# ifdef _MSC_VER -+# include <malloc.h> -+# define alloca _alloca - # else --# ifdef _AIX -- #pragma alloca -+# if defined HAVE_ALLOCA_H || defined _LIBC -+# include <alloca.h> - # else --# ifndef alloca -+# ifdef _AIX -+ #pragma alloca -+# else -+# ifndef alloca - char *alloca (); -+# endif - # endif - # endif - # endif -@@ -55,13 +61,7 @@ - - #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> -@@ -69,11 +69,26 @@ - - #include <locale.h> - -+#ifdef _LIBC -+ /* Guess whether integer division by zero raises signal SIGFPE. -+ Set to 1 only if you know for sure. In case of doubt, set to 0. */ -+# if defined __alpha__ || defined __arm__ || defined __i386__ \ -+ || defined __m68k__ || defined __s390__ -+# define INTDIV0_RAISES_SIGFPE 1 -+# else -+# define INTDIV0_RAISES_SIGFPE 0 -+# endif -+#endif -+#if !INTDIV0_RAISES_SIGFPE -+# include <signal.h> -+#endif -+ - #if defined HAVE_SYS_PARAM_H || defined _LIBC - # include <sys/param.h> - #endif - - #include "gettextP.h" -+#include "plural-exp.h" - #ifdef _LIBC - # include <libintl.h> - #else -@@ -106,10 +121,10 @@ - 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__ -+# define _nl_default_default_domain libintl_nl_default_default_domain -+# define _nl_current_default_domain libintl_nl_current_default_domain -+# define _nl_default_dirname libintl_nl_default_dirname -+# define _nl_domain_bindings libintl_nl_domain_bindings - #endif - - /* Some compilers, like SunOS4 cc, don't have offsetof in <stddef.h>. */ -@@ -133,13 +148,17 @@ - char *getwd (); - # define getcwd(buf, max) getwd (buf) - # else -+# if VMS -+# define getcwd(buf, max) (getcwd) (buf, max, 0) -+# else - char *getcwd (); -+# endif - # endif - # ifndef HAVE_STPCPY --static char *stpcpy PARAMS ((char *dest, const char *src)); -+static char *stpcpy (char *dest, const char *src); - # endif - # ifndef HAVE_MEMPCPY --static void *mempcpy PARAMS ((void *dest, const void *src, size_t n)); -+static void *mempcpy (void *dest, const void *src, size_t n); - # endif - #endif - -@@ -197,16 +216,6 @@ - # 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). */ --#ifdef _LIBC --# define HAVE_LOCALE_NULL --#endif -- - /* This is the type used for the search tree where known translations - are stored. */ - struct known_translation_t -@@ -243,11 +252,8 @@ - # 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; -+transcmp (const void *p1, const void *p2) - { - const struct known_translation_t *s1; - const struct known_translation_t *s2; -@@ -271,39 +277,54 @@ - } - #endif - -+#ifndef INTVARDEF -+# define INTVARDEF(name) -+#endif -+#ifndef INTUSE -+# define INTUSE(name) name -+#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"; -+const char _nl_default_default_domain[] attribute_hidden = "messages"; - - /* Value used as the default domain for gettext(3). */ --const char *_nl_current_default_domain = _nl_default_default_domain; -+const char *_nl_current_default_domain attribute_hidden -+ = _nl_default_default_domain; - - /* Contains the default location of the message catalogs. */ -+#if defined __EMX__ -+extern const char _nl_default_dirname[]; -+#else - const char _nl_default_dirname[] = LOCALEDIR; -+INTVARDEF (_nl_default_dirname) -+#endif - - /* 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)) -+static char *plural_lookup (struct loaded_l10nfile *domain, -+ unsigned long int n, -+ const char *translation, size_t translation_len) - 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)) -+static const char *guess_category_value (int category, -+ const char *categoryname) - internal_function; -+#ifdef _LIBC -+# include "../locale/localeinfo.h" -+# define category_to_name(category) _nl_category_names[category] -+#else -+static const char *category_to_name (int category) internal_function; -+#endif - - - /* 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 freea(p) /* nothing */ - # define ADD_BLOCK(list, address) /* nothing */ - # define FREE_BLOCKS(list) /* nothing */ - #else -@@ -328,11 +349,13 @@ - while (list != NULL) { \ - struct block_list *old = list; \ - list = list->next; \ -+ free (old->address); \ - free (old); \ - } \ - } while (0) - # undef alloca - # define alloca(size) (malloc (size)) -+# define freea(p) free (p) - #endif /* have alloca */ - - -@@ -356,12 +379,12 @@ - #ifdef _LIBC - # define DCIGETTEXT __dcigettext - #else --# define DCIGETTEXT dcigettext__ -+# define DCIGETTEXT libintl_dcigettext - #endif - - /* Lock variable to protect the global data in the gettext implementation. */ - #ifdef _LIBC --__libc_rwlock_define_initialized (, _nl_state_lock) -+__libc_rwlock_define_initialized (, _nl_state_lock attribute_hidden) - #endif - - /* Checking whether the binaries runs SUID must be done and glibc provides -@@ -370,6 +393,18 @@ - # 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 \ -@@ -382,17 +417,15 @@ - } - #endif - -+/* Get the function to evaluate the plural expression. */ -+#include "eval-plural.h" -+ - /* 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; -+DCIGETTEXT (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; -@@ -417,6 +450,15 @@ - if (msgid1 == NULL) - return NULL; - -+#ifdef _LIBC -+ if (category < 0 || category >= __LC_LAST || category == LC_ALL) -+ /* Bogus. */ -+ return (plural == 0 -+ ? (char *) msgid1 -+ /* Use the Germanic plural rule. */ -+ : n == 1 ? (char *) msgid1 : (char *) msgid2); -+#endif -+ - __libc_rwlock_rdlock (_nl_state_lock); - - /* If DOMAINNAME is NULL, we are interested in the default domain. If -@@ -425,6 +467,12 @@ - if (domainname == NULL) - domainname = _nl_current_default_domain; - -+ /* OS/2 specific: backward compatibility with older libintl versions */ -+#ifdef LC_MESSAGES_COMPAT -+ if (category == LC_MESSAGES_COMPAT) -+ category = LC_MESSAGES; -+#endif -+ - #if defined HAVE_TSEARCH || defined _LIBC - msgid_len = strlen (msgid1) + 1; - -@@ -437,6 +485,7 @@ - search->category = category; - - foundp = (struct known_translation_t **) tfind (search, &root, transcmp); -+ freea (search); - if (foundp != NULL && (*foundp)->counter == _nl_msg_cat_cntr) - { - /* Now deal with plural. */ -@@ -473,7 +522,7 @@ - } - - if (binding == NULL) -- dirname = (char *) _nl_default_dirname; -+ dirname = (char *) INTUSE(_nl_default_dirname); - else if (IS_ABSOLUTE_PATH (binding->dirname)) - dirname = binding->dirname; - else -@@ -501,16 +550,9 @@ - } - - 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 (plural == 0 -- ? (char *) msgid1 -- /* Use the Germanic plural rule. */ -- : n == 1 ? (char *) msgid1 : (char *) msgid2); -- } -+ /* We cannot get the current working directory. Don't signal an -+ error but simply return the default string. */ -+ goto return_untranslated; - - stpcpy (stpcpy (strchr (dirname, '\0'), "/"), binding->dirname); - } -@@ -567,16 +609,7 @@ - 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); -- } -- -+ break; - - /* Find structure describing the message catalog matching the - DOMAINNAME and CATEGORY. */ -@@ -584,7 +617,7 @@ - - if (domain != NULL) - { -- retval = _nl_find_msg (domain, msgid1, &retlen); -+ retval = _nl_find_msg (domain, binding, msgid1, &retlen); - - if (retval == NULL) - { -@@ -592,8 +625,8 @@ - - for (cnt = 0; domain->successor[cnt] != NULL; ++cnt) - { -- retval = _nl_find_msg (domain->successor[cnt], msgid1, -- &retlen); -+ retval = _nl_find_msg (domain->successor[cnt], binding, -+ msgid1, &retlen); - - if (retval != NULL) - { -@@ -608,7 +641,6 @@ - /* 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) - { -@@ -647,6 +679,8 @@ - (*foundp)->translation_length = retlen; - } - #endif -+ __set_errno (saved_errno); -+ - /* Now deal with plural. */ - if (plural) - retval = plural_lookup (domain, n, retval, retlen); -@@ -656,32 +690,56 @@ - } - } - } -- /* NOTREACHED */ -+ -+ return_untranslated: -+ /* Return the untranslated MSGID. */ -+ FREE_BLOCKS (block_list); -+ __libc_rwlock_unlock (_nl_state_lock); -+#ifndef _LIBC -+ if (!ENABLE_SECURE) -+ { -+ extern void _nl_log_untranslated (const char *logfilename, -+ const char *domainname, -+ const char *msgid1, const char *msgid2, -+ int plural); -+ const char *logfilename = getenv ("GETTEXT_LOG_UNTRANSLATED"); -+ -+ if (logfilename != NULL && logfilename[0] != '\0') -+ _nl_log_untranslated (logfilename, domainname, msgid1, msgid2, plural); -+ } -+#endif -+ __set_errno (saved_errno); -+ return (plural == 0 -+ ? (char *) msgid1 -+ /* Use the Germanic plural rule. */ -+ : n == 1 ? (char *) msgid1 : (char *) msgid2); - } - - - char * - internal_function --_nl_find_msg (domain_file, msgid, lengthp) -- struct loaded_l10nfile *domain_file; -- const char *msgid; -- size_t *lengthp; -+_nl_find_msg (struct loaded_l10nfile *domain_file, -+ struct binding *domainbinding, const char *msgid, -+ size_t *lengthp) - { - struct loaded_domain *domain; -+ nls_uint32 nstrings; - size_t act; - char *result; - size_t resultlen; - - if (domain_file->decided == 0) -- _nl_load_domain (domain_file); -+ _nl_load_domain (domain_file, domainbinding); - - if (domain_file->data == NULL) - return NULL; - - domain = (struct loaded_domain *) domain_file->data; - -+ nstrings = domain->nstrings; -+ - /* Locate the MSGID and its translation. */ -- if (domain->hash_size > 2 && domain->hash_tab != NULL) -+ if (domain->hash_tab != NULL) - { - /* Use the hashing table. */ - nls_uint32 len = strlen (msgid); -@@ -691,22 +749,30 @@ - - while (1) - { -- nls_uint32 nstr = W (domain->must_swap, domain->hash_tab[idx]); -+ nls_uint32 nstr = -+ W (domain->must_swap_hash_tab, domain->hash_tab[idx]); - - if (nstr == 0) - /* Hash table entry is empty. */ - return NULL; - -- /* Compare msgid with the original string at index nstr-1. -+ nstr--; -+ -+ /* Compare msgid with the original string at index nstr. - 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)) -+ if (nstr < nstrings -+ ? W (domain->must_swap, domain->orig_tab[nstr].length) >= len -+ && (strcmp (msgid, -+ domain->data + W (domain->must_swap, -+ domain->orig_tab[nstr].offset)) -+ == 0) -+ : domain->orig_sysdep_tab[nstr - nstrings].length > len -+ && (strcmp (msgid, -+ domain->orig_sysdep_tab[nstr - nstrings].pointer) -+ == 0)) - { -- act = nstr - 1; -+ act = nstr; - goto found; - } - -@@ -724,7 +790,7 @@ - size_t top, bottom; - - bottom = 0; -- top = domain->nstrings; -+ top = nstrings; - while (bottom < top) - { - int cmp_val; -@@ -747,11 +813,29 @@ - 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 (act < nstrings) -+ { -+ result = (char *) -+ (domain->data + W (domain->must_swap, domain->trans_tab[act].offset)); -+ resultlen = W (domain->must_swap, domain->trans_tab[act].length) + 1; -+ } -+ else -+ { -+ result = (char *) domain->trans_sysdep_tab[act - nstrings].pointer; -+ resultlen = domain->trans_sysdep_tab[act - nstrings].length; -+ } - - #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 -@@ -772,8 +856,9 @@ - NULs. */ - - if (domain->conv_tab == NULL -- && ((domain->conv_tab = (char **) calloc (domain->nstrings, -- sizeof (char *))) -+ && ((domain->conv_tab = -+ (char **) calloc (nstrings + domain->n_sysdep_strings, -+ sizeof (char *))) - == NULL)) - /* Mark that we didn't succeed allocating a table. */ - domain->conv_tab = (char **) -1; -@@ -942,11 +1027,8 @@ - /* 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; -+plural_lookup (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; -@@ -979,93 +1061,11 @@ - 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; --} -- -- -+#ifndef _LIBC - /* Return string representation of locale CATEGORY. */ - static const char * - internal_function --category_to_name (category) -- int category; -+category_to_name (int category) - { - const char *retval; - -@@ -1120,13 +1120,12 @@ - - return retval; - } -+#endif - - /* 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; -+guess_category_value (int category, const char *categoryname) - { - const char *language; - const char *retval; -@@ -1141,27 +1140,21 @@ - /* 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); -+#ifdef _LIBC -+ retval = __current_locale_name (category); - #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"; -- } -- } -+ retval = _nl_locale_name (category, categoryname); - #endif - -+ /* Ignore LANGUAGE if the locale is set to "C" because -+ 1. "C" locale usually uses the ASCII encoding, and most international -+ messages use non-ASCII characters. These characters get displayed -+ as question marks (if using glibc's iconv()) or as invalid 8-bit -+ characters (because other iconv()s refuse to convert most non-ASCII -+ characters to ASCII). In any case, the output is ugly. -+ 2. The precise output of some programs in the "C" locale is specified -+ by POSIX and should not depend on environment variables like -+ "LANGUAGE". We allow such programs to use gettext(). */ - return language != NULL && strcmp (retval, "C") != 0 ? language : retval; - } - -@@ -1173,9 +1166,7 @@ - to be defined. */ - #if !_LIBC && !HAVE_STPCPY - static char * --stpcpy (dest, src) -- char *dest; -- const char *src; -+stpcpy (char *dest, const char *src) - { - while ((*dest++ = *src++) != '\0') - /* Do nothing. */ ; -@@ -1185,10 +1176,7 @@ - - #if !_LIBC && !HAVE_MEMPCPY - static void * --mempcpy (dest, src, n) -- void *dest; -- const void *src; -- size_t n; -+mempcpy (void *dest, const void *src, size_t n) - { - return (void *) ((char *) memcpy (dest, src, n) + n); - } -@@ -1198,8 +1186,7 @@ - #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) -+libc_freeres_fn (free_mem) - { - void *old; - -@@ -1207,7 +1194,7 @@ - { - struct binding *oldp = _nl_domain_bindings; - _nl_domain_bindings = _nl_domain_bindings->next; -- if (oldp->dirname != _nl_default_dirname) -+ if (oldp->dirname != INTUSE(_nl_default_dirname)) - /* Yes, this is a pointer comparison. */ - free (oldp->dirname); - free (oldp->codeset); -@@ -1229,6 +1216,4 @@ - free (old); - } - } -- --text_set_element (__libc_subfreeres, free_mem); - #endif -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/dcngettext.c psmisc-20.2.works.clean/intl/dcngettext.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/dcngettext.c 2001-04-13 23:00:43.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/dcngettext.c 2004-10-13 15:18:41.000000000 -0500 -@@ -1,19 +1,20 @@ - /* Implementation of the dcngettext(3) function. -- Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. -+ Copyright (C) 1995-1999, 2000-2003 Free Software Foundation, Inc. - -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2, or (at your option) -+ 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 General Public License for more details. -+ 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 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. */ -+ 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. */ - - #ifdef HAVE_CONFIG_H - # include <config.h> -@@ -36,19 +37,16 @@ - # define DCNGETTEXT __dcngettext - # define DCIGETTEXT __dcigettext - #else --# define DCNGETTEXT dcngettext__ --# define DCIGETTEXT dcigettext__ -+# define DCNGETTEXT libintl_dcngettext -+# define DCIGETTEXT libintl_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; -+DCNGETTEXT (const char *domainname, -+ const char *msgid1, const char *msgid2, unsigned long int n, -+ int category) - { - return DCIGETTEXT (domainname, msgid1, msgid2, 1, n, category); - } -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/dgettext.c psmisc-20.2.works.clean/intl/dgettext.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/dgettext.c 2001-04-13 23:00:42.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/dgettext.c 2004-10-13 15:18:41.000000000 -0500 -@@ -1,27 +1,29 @@ - /* Implementation of the dgettext(3) function. -- Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc. -+ Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc. - -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2, or (at your option) -+ 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 General Public License for more details. -+ 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 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. */ -+ 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. */ - - #ifdef HAVE_CONFIG_H - # include <config.h> - #endif - -+#include "gettextP.h" -+ - #include <locale.h> - --#include "gettextP.h" - #ifdef _LIBC - # include <libintl.h> - #else -@@ -36,18 +38,16 @@ - prefix. So we have to make a difference here. */ - #ifdef _LIBC - # define DGETTEXT __dgettext --# define DCGETTEXT __dcgettext -+# define DCGETTEXT INTUSE(__dcgettext) - #else --# define DGETTEXT dgettext__ --# define DCGETTEXT dcgettext__ -+# define DGETTEXT libintl_dgettext -+# define DCGETTEXT libintl_dcgettext - #endif - - /* Look up MSGID in the DOMAINNAME message catalog of the current - LC_MESSAGES locale. */ - char * --DGETTEXT (domainname, msgid) -- const char *domainname; -- const char *msgid; -+DGETTEXT (const char *domainname, const char *msgid) - { - return DCGETTEXT (domainname, msgid, LC_MESSAGES); - } -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/dngettext.c psmisc-20.2.works.clean/intl/dngettext.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/dngettext.c 2001-04-13 23:00:43.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/dngettext.c 2004-10-13 15:18:41.000000000 -0500 -@@ -1,27 +1,29 @@ - /* Implementation of the dngettext(3) function. -- Copyright (C) 1995-1997, 2000, 2001 Free Software Foundation, Inc. -+ Copyright (C) 1995-1997, 2000-2003 Free Software Foundation, Inc. - -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2, or (at your option) -+ 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 General Public License for more details. -+ 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 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. */ -+ 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. */ - - #ifdef HAVE_CONFIG_H - # include <config.h> - #endif - -+#include "gettextP.h" -+ - #include <locale.h> - --#include "gettextP.h" - #ifdef _LIBC - # include <libintl.h> - #else -@@ -38,18 +40,15 @@ - # define DNGETTEXT __dngettext - # define DCNGETTEXT __dcngettext - #else --# define DNGETTEXT dngettext__ --# define DCNGETTEXT dcngettext__ -+# define DNGETTEXT libintl_dngettext -+# define DCNGETTEXT libintl_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; -+DNGETTEXT (const char *domainname, -+ const char *msgid1, const char *msgid2, unsigned long int n) - { - return DCNGETTEXT (domainname, msgid1, msgid2, n, LC_MESSAGES); - } -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/eval-plural.h psmisc-20.2.works.clean/intl/eval-plural.h ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/eval-plural.h 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/eval-plural.h 2004-10-13 15:18:41.000000000 -0500 -@@ -0,0 +1,108 @@ -+/* Plural expression evaluation. -+ Copyright (C) 2000-2003 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. */ -+ -+#ifndef STATIC -+#define STATIC static -+#endif -+ -+/* Evaluate the plural expression and return an index value. */ -+STATIC -+unsigned long int -+internal_function -+plural_eval (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: -+#if !INTDIV0_RAISES_SIGFPE -+ if (rightarg == 0) -+ raise (SIGFPE); -+#endif -+ return leftarg / rightarg; -+ case module: -+#if !INTDIV0_RAISES_SIGFPE -+ if (rightarg == 0) -+ raise (SIGFPE); -+#endif -+ 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; -+} -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/explodename.c psmisc-20.2.works.clean/intl/explodename.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/explodename.c 2001-04-13 23:00:42.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/explodename.c 2004-10-13 15:18:41.000000000 -0500 -@@ -1,19 +1,20 @@ --/* Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. -+/* Copyright (C) 1995-1998, 2000-2001, 2003 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 -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2, or (at your option) -+ 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 General Public License for more details. -+ 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 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. */ -+ 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. */ - - #ifdef HAVE_CONFIG_H - # include <config.h> -@@ -37,8 +38,7 @@ - /* @@ end of prolog @@ */ - - char * --_nl_find_language (name) -- const char *name; -+_nl_find_language (const char *name) - { - while (name[0] != '\0' && name[0] != '_' && name[0] != '@' - && name[0] != '+' && name[0] != ',') -@@ -49,17 +49,11 @@ - - - int --_nl_explode_name (name, language, modifier, territory, codeset, -- normalized_codeset, special, sponsor, revision) -- char *name; -- const char **language; -- const char **modifier; -- const char **territory; -- const char **codeset; -- const char **normalized_codeset; -- const char **special; -- const char **sponsor; -- const char **revision; -+_nl_explode_name (char *name, -+ const char **language, const char **modifier, -+ const char **territory, const char **codeset, -+ const char **normalized_codeset, const char **special, -+ const char **sponsor, const char **revision) - { - enum { undecided, xpg, cen } syntax; - char *cp; -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/finddomain.c psmisc-20.2.works.clean/intl/finddomain.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/finddomain.c 2001-04-13 23:00:42.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/finddomain.c 2004-10-13 15:18:41.000000000 -0500 -@@ -1,20 +1,21 @@ - /* Handle list of needed message catalogs -- Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. -+ Copyright (C) 1995-1999, 2000-2001, 2003 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 -- the Free Software Foundation; either version 2, or (at your option) -+ 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 General Public License for more details. -+ 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 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. */ -+ 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. */ - - #ifdef HAVE_CONFIG_H - # include <config.h> -@@ -46,11 +47,8 @@ - established bindings. */ - struct loaded_l10nfile * - internal_function --_nl_find_domain (dirname, locale, domainname, domainbinding) -- const char *dirname; -- char *locale; -- const char *domainname; -- struct binding *domainbinding; -+_nl_find_domain (const char *dirname, char *locale, -+ const char *domainname, struct binding *domainbinding) - { - struct loaded_l10nfile *retval; - const char *language; -@@ -89,15 +87,14 @@ - be one data set in the list of loaded domains. */ - retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, - strlen (dirname) + 1, 0, locale, NULL, NULL, -- NULL, NULL, NULL, NULL, NULL, domainname, -- domainbinding, 0); -+ NULL, NULL, NULL, NULL, NULL, domainname, 0); - if (retval != NULL) - { - /* We know something about this locale. */ - int cnt; - - if (retval->decided == 0) -- _nl_load_domain (retval); -+ _nl_load_domain (retval, domainbinding); - - if (retval->data != NULL) - return retval; -@@ -105,7 +102,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; -@@ -146,21 +143,20 @@ - retval = _nl_make_l10nflist (&_nl_loaded_domains, dirname, - strlen (dirname) + 1, mask, language, territory, - codeset, normalized_codeset, modifier, special, -- sponsor, revision, domainname, domainbinding, -- 1); -+ sponsor, revision, domainname, 1); - if (retval == NULL) - /* This means we are out of core. */ - 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; - } -@@ -179,8 +175,7 @@ - - - #ifdef _LIBC --static void __attribute__ ((unused)) --free_mem (void) -+libc_freeres_fn (free_mem) - { - struct loaded_l10nfile *runp = _nl_loaded_domains; - -@@ -194,6 +189,4 @@ - free (here); - } - } -- --text_set_element (__libc_subfreeres, free_mem); - #endif -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/gettext.c psmisc-20.2.works.clean/intl/gettext.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/gettext.c 2001-04-13 23:00:42.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/gettext.c 2004-10-13 15:18:41.000000000 -0500 -@@ -1,19 +1,20 @@ - /* Implementation of gettext(3) function. -- Copyright (C) 1995, 1997, 2000, 2001 Free Software Foundation, Inc. -+ Copyright (C) 1995, 1997, 2000-2003 Free Software Foundation, Inc. - -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2, or (at your option) -+ 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 General Public License for more details. -+ 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 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. */ -+ 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. */ - - #ifdef HAVE_CONFIG_H - # include <config.h> -@@ -41,18 +42,17 @@ - prefix. So we have to make a difference here. */ - #ifdef _LIBC - # define GETTEXT __gettext --# define DCGETTEXT __dcgettext -+# define DCGETTEXT INTUSE(__dcgettext) - #else --# define GETTEXT gettext__ --# define DCGETTEXT dcgettext__ -+# define GETTEXT libintl_gettext -+# define DCGETTEXT libintl_dcgettext - #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 * --GETTEXT (msgid) -- const char *msgid; -+GETTEXT (const char *msgid) - { - return DCGETTEXT (NULL, msgid, LC_MESSAGES); - } -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/gettext.h psmisc-20.2.works.clean/intl/gettext.h ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/gettext.h 2001-04-13 23:00:42.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/gettext.h 2004-10-13 15:19:00.000000000 -0500 -@@ -1,101 +1,69 @@ --/* Description of GNU message catalog format: general file layout. -- Copyright (C) 1995, 1997, 2000, 2001 Free Software Foundation, Inc. -+/* Convenience header for conditional use of GNU <libintl.h>. -+ Copyright (C) 1995-1998, 2000-2002 Free Software Foundation, Inc. - -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2, or (at your option) -+ 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 General Public License for more details. -- -- You 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 -- --#if HAVE_LIMITS_H || _LIBC --# include <limits.h> --#endif -+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -+ Library General Public License for more details. - --/* @@ end of prolog @@ */ -+ 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 magic number of the GNU message catalog format. */ --#define _MAGIC 0x950412de --#define _MAGIC_SWAPPED 0xde120495 -+#ifndef _LIBGETTEXT_H -+#define _LIBGETTEXT_H 1 - --/* Revision number of the currently used .mo (binary) file format. */ --#define MO_REVISION_NUMBER 0 -+/* NLS can be disabled through the configure --disable-nls option. */ -+#if ENABLE_NLS - --/* 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 -- as of version autoconf-2.13, the AC_CHECK_SIZEOF macro doesn't work -- when cross-compiling. */ -+/* Get declarations of GNU message catalog functions. */ -+# include <libintl.h> - --#if __STDC__ --# define UINT_MAX_32_BITS 4294967295U - #else --# define UINT_MAX_32_BITS 0xFFFFFFFF --#endif -- --/* If UINT_MAX isn't defined, assume it's a 32-bit type. -- This should be valid for all systems GNU cares about because -- that doesn't include 16-bit systems, and only modern systems -- (that certainly have <limits.h>) have 64+-bit integral types. */ - --#ifndef UINT_MAX --# define UINT_MAX UINT_MAX_32_BITS --#endif -- --#if UINT_MAX == UINT_MAX_32_BITS --typedef unsigned nls_uint32; --#else --# if USHRT_MAX == UINT_MAX_32_BITS --typedef unsigned short nls_uint32; --# else --# if ULONG_MAX == UINT_MAX_32_BITS --typedef unsigned long nls_uint32; --# else -- /* The following line is intended to throw an error. Using #error is -- not portable enough. */ -- "Cannot determine unsigned 32-bit data type." --# endif --# endif -+/* Solaris /usr/include/locale.h includes /usr/include/libintl.h, which -+ chokes if dcgettext is defined as a macro. So include it now, to make -+ later inclusions of <locale.h> a NOP. We don't include <libintl.h> -+ as well because people using "gettext.h" will not include <libintl.h>, -+ and also including <libintl.h> would fail on SunOS 4, whereas <locale.h> -+ is OK. */ -+#if defined(__sun) -+# include <locale.h> - #endif - -+/* Disabled NLS. -+ The casts to 'const char *' serve the purpose of producing warnings -+ for invalid uses of the value returned from these functions. -+ On pre-ANSI systems without 'const', the config.h file is supposed to -+ contain "#define const". */ -+# define gettext(Msgid) ((const char *) (Msgid)) -+# define dgettext(Domainname, Msgid) ((const char *) (Msgid)) -+# define dcgettext(Domainname, Msgid, Category) ((const char *) (Msgid)) -+# define ngettext(Msgid1, Msgid2, N) \ -+ ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) -+# define dngettext(Domainname, Msgid1, Msgid2, N) \ -+ ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) -+# define dcngettext(Domainname, Msgid1, Msgid2, N, Category) \ -+ ((N) == 1 ? (const char *) (Msgid1) : (const char *) (Msgid2)) -+# define textdomain(Domainname) ((const char *) (Domainname)) -+# define bindtextdomain(Domainname, Dirname) ((const char *) (Dirname)) -+# define bind_textdomain_codeset(Domainname, Codeset) ((const char *) (Codeset)) - --/* Header for binary .mo file format. */ --struct mo_file_header --{ -- /* The magic number. */ -- nls_uint32 magic; -- /* The revision number of the file format. */ -- nls_uint32 revision; -- /* The number of strings pairs. */ -- nls_uint32 nstrings; -- /* Offset of table with start offsets of original strings. */ -- nls_uint32 orig_tab_offset; -- /* Offset of table with start offsets of translation strings. */ -- nls_uint32 trans_tab_offset; -- /* Size of hashing table. */ -- nls_uint32 hash_tab_size; -- /* Offset of first hashing entry. */ -- nls_uint32 hash_tab_offset; --}; -- --struct string_desc --{ -- /* Length of addressed string. */ -- nls_uint32 length; -- /* Offset of string in file. */ -- nls_uint32 offset; --}; -+#endif - --/* @@ begin of epilog @@ */ -+/* A pseudo function call that serves as a marker for the automated -+ extraction of messages, but does not call gettext(). The run-time -+ translation is done at a different place in the code. -+ The argument, String, should be a literal string. Concatenated strings -+ and other string expressions won't work. -+ The macro's expansion is not parenthesized, so that it is suitable as -+ initializer for static 'char[]' or 'const char[]' variables. */ -+#define gettext_noop(String) String - --#endif /* gettext.h */ -+#endif /* _LIBGETTEXT_H */ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/gettextP.h psmisc-20.2.works.clean/intl/gettextP.h ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/gettextP.h 2001-04-13 23:00:42.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/gettextP.h 2004-10-13 15:18:41.000000000 -0500 -@@ -1,20 +1,21 @@ - /* Header describing internals of libintl library. -- Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. -+ Copyright (C) 1995-1999, 2000-2003 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 -- the Free Software Foundation; either version 2, or (at your option) -+ 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 General Public License for more details. -+ 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 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. */ -+ 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. */ - - #ifndef _GETTEXTP_H - #define _GETTEXTP_H -@@ -31,22 +32,18 @@ - - #include "loadinfo.h" - --#include "gettext.h" /* Get nls_uint32. */ -+#include "gmo.h" /* Get nls_uint32. */ - - /* @@ end of prolog @@ */ - --#ifndef PARAMS --# if __STDC__ --# define PARAMS(args) args --# else --# define PARAMS(args) () --# endif --#endif -- - #ifndef internal_function - # define internal_function - #endif - -+#ifndef attribute_hidden -+# define attribute_hidden -+#endif -+ - /* Tell the compiler when a conditional or integer expression is - almost always true or almost always false. */ - #ifndef HAVE_BUILTIN_EXPECT -@@ -71,63 +68,51 @@ - #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 -+/* In-memory representation of system dependent string. */ -+struct sysdep_string_desc - { -- const char *cp; -- struct expression *res; -+ /* Length of addressed string, including the trailing NUL. */ -+ size_t length; -+ /* Pointer to addressed string. */ -+ const char *pointer; - }; - -- - /* The representation of an opened message catalog. */ - struct loaded_domain - { -+ /* Pointer to memory containing the .mo file. */ - const char *data; -+ /* 1 if the memory is mmap()ed, 0 if the memory is malloc()ed. */ - int use_mmap; -+ /* Size of mmap()ed memory. */ - size_t mmap_size; -+ /* 1 if the .mo file uses a different endianness than this machine. */ - int must_swap; -+ /* Pointer to additional malloc()ed memory. */ -+ void *malloced; -+ -+ /* Number of static strings pairs. */ - nls_uint32 nstrings; -- struct string_desc *orig_tab; -- struct string_desc *trans_tab; -+ /* Pointer to descriptors of original strings in the file. */ -+ const struct string_desc *orig_tab; -+ /* Pointer to descriptors of translated strings in the file. */ -+ const struct string_desc *trans_tab; -+ -+ /* Number of system dependent strings pairs. */ -+ nls_uint32 n_sysdep_strings; -+ /* Pointer to descriptors of original sysdep strings. */ -+ const struct sysdep_string_desc *orig_sysdep_tab; -+ /* Pointer to descriptors of translated sysdep strings. */ -+ const struct sysdep_string_desc *trans_sysdep_tab; -+ -+ /* Size of hash table. */ - nls_uint32 hash_size; -- nls_uint32 *hash_tab; -+ /* Pointer to hash table. */ -+ const nls_uint32 *hash_tab; -+ /* 1 if the hash table uses a different endianness than this machine. */ -+ int must_swap_hash_tab; -+ -+ int codeset_cntr; - #ifdef _LIBC - __gconv_t conv; - #else -@@ -155,6 +140,7 @@ - { - struct binding *next; - char *dirname; -+ int codeset_cntr; /* Incremented each time codeset changes. */ - char *codeset; - char domainname[ZERO]; - }; -@@ -164,72 +150,64 @@ - 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, -- struct binding *__domainbinding)) -+#ifndef _LIBC -+const char *_nl_locale_name (int category, const char *categoryname); -+#endif -+ -+struct loaded_l10nfile *_nl_find_domain (const char *__dirname, char *__locale, -+ const char *__domainname, -+ struct binding *__domainbinding) - internal_function; --void _nl_load_domain PARAMS ((struct loaded_l10nfile *__domain)) -+void _nl_load_domain (struct loaded_l10nfile *__domain, -+ struct binding *__domainbinding) - internal_function; --void _nl_unload_domain PARAMS ((struct loaded_domain *__domain)) -+void _nl_unload_domain (struct loaded_domain *__domain) -+ internal_function; -+const char *_nl_init_domain_conv (struct loaded_l10nfile *__domain_file, -+ struct loaded_domain *__domain, -+ struct binding *__domainbinding) -+ internal_function; -+void _nl_free_domain_conv (struct loaded_domain *__domain) - 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 -+char *_nl_find_msg (struct loaded_l10nfile *domain_file, -+ struct binding *domainbinding, const char *msgid, -+ size_t *lengthp) -+ internal_function; - - #ifdef _LIBC --extern void __gettext_free_exp PARAMS ((struct expression *exp)) -- internal_function; --extern int __gettextparse PARAMS ((void *arg)); -+extern char *__gettext (const char *__msgid); -+extern char *__dgettext (const char *__domainname, const char *__msgid); -+extern char *__dcgettext (const char *__domainname, const char *__msgid, -+ int __category); -+extern char *__ngettext (const char *__msgid1, const char *__msgid2, -+ unsigned long int __n); -+extern char *__dngettext (const char *__domainname, -+ const char *__msgid1, const char *__msgid2, -+ unsigned long int n); -+extern char *__dcngettext (const char *__domainname, -+ const char *__msgid1, const char *__msgid2, -+ unsigned long int __n, int __category); -+extern char *__dcigettext (const char *__domainname, -+ const char *__msgid1, const char *__msgid2, -+ int __plural, unsigned long int __n, -+ int __category); -+extern char *__textdomain (const char *__domainname); -+extern char *__bindtextdomain (const char *__domainname, -+ const char *__dirname); -+extern char *__bind_textdomain_codeset (const char *__domainname, -+ const char *__codeset); - #else --extern void gettext_free_exp__ PARAMS ((struct expression *exp)) -- internal_function; --extern int gettextparse__ PARAMS ((void *arg)); -+/* Declare the exported libintl_* functions, in a way that allows us to -+ call them under their real name. */ -+# undef _INTL_REDIRECT_INLINE -+# undef _INTL_REDIRECT_MACROS -+# define _INTL_REDIRECT_MACROS -+# include "libgnuintl.h" -+extern char *libintl_dcigettext (const char *__domainname, -+ const char *__msgid1, const char *__msgid2, -+ int __plural, unsigned long int __n, -+ int __category); - #endif - - /* @@ begin of epilog @@ */ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/gmo.h psmisc-20.2.works.clean/intl/gmo.h ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/gmo.h 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/gmo.h 2004-10-13 15:18:41.000000000 -0500 -@@ -0,0 +1,149 @@ -+/* Description of GNU message catalog format: general file layout. -+ Copyright (C) 1995, 1997, 2000-2002, 2004 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. */ -+ -+#ifndef _GETTEXT_H -+#define _GETTEXT_H 1 -+ -+#include <limits.h> -+ -+/* @@ end of prolog @@ */ -+ -+/* The magic number of the GNU message catalog format. */ -+#define _MAGIC 0x950412de -+#define _MAGIC_SWAPPED 0xde120495 -+ -+/* Revision number of the currently used .mo (binary) file format. */ -+#define MO_REVISION_NUMBER 0 -+#define MO_REVISION_NUMBER_WITH_SYSDEP_I 1 -+ -+/* 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 -+ 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 -+#else -+# define UINT_MAX_32_BITS 0xFFFFFFFF -+#endif -+ -+/* If UINT_MAX isn't defined, assume it's a 32-bit type. -+ This should be valid for all systems GNU cares about because -+ that doesn't include 16-bit systems, and only modern systems -+ (that certainly have <limits.h>) have 64+-bit integral types. */ -+ -+#ifndef UINT_MAX -+# define UINT_MAX UINT_MAX_32_BITS -+#endif -+ -+#if UINT_MAX == UINT_MAX_32_BITS -+typedef unsigned nls_uint32; -+#else -+# if USHRT_MAX == UINT_MAX_32_BITS -+typedef unsigned short nls_uint32; -+# else -+# if ULONG_MAX == UINT_MAX_32_BITS -+typedef unsigned long nls_uint32; -+# else -+ /* The following line is intended to throw an error. Using #error is -+ not portable enough. */ -+ "Cannot determine unsigned 32-bit data type." -+# endif -+# endif -+#endif -+ -+ -+/* Header for binary .mo file format. */ -+struct mo_file_header -+{ -+ /* The magic number. */ -+ nls_uint32 magic; -+ /* The revision number of the file format. */ -+ nls_uint32 revision; -+ -+ /* The following are only used in .mo files with major revision 0 or 1. */ -+ -+ /* The number of strings pairs. */ -+ nls_uint32 nstrings; -+ /* Offset of table with start offsets of original strings. */ -+ nls_uint32 orig_tab_offset; -+ /* Offset of table with start offsets of translated strings. */ -+ nls_uint32 trans_tab_offset; -+ /* Size of hash table. */ -+ nls_uint32 hash_tab_size; -+ /* Offset of first hash table entry. */ -+ nls_uint32 hash_tab_offset; -+ -+ /* The following are only used in .mo files with minor revision >= 1. */ -+ -+ /* The number of system dependent segments. */ -+ nls_uint32 n_sysdep_segments; -+ /* Offset of table describing system dependent segments. */ -+ nls_uint32 sysdep_segments_offset; -+ /* The number of system dependent strings pairs. */ -+ nls_uint32 n_sysdep_strings; -+ /* Offset of table with start offsets of original sysdep strings. */ -+ nls_uint32 orig_sysdep_tab_offset; -+ /* Offset of table with start offsets of translated sysdep strings. */ -+ nls_uint32 trans_sysdep_tab_offset; -+}; -+ -+/* Descriptor for static string contained in the binary .mo file. */ -+struct string_desc -+{ -+ /* Length of addressed string, not including the trailing NUL. */ -+ nls_uint32 length; -+ /* Offset of string in file. */ -+ nls_uint32 offset; -+}; -+ -+/* The following are only used in .mo files with minor revision >= 1. */ -+ -+/* Descriptor for system dependent string segment. */ -+struct sysdep_segment -+{ -+ /* Length of addressed string, including the trailing NUL. */ -+ nls_uint32 length; -+ /* Offset of string in file. */ -+ nls_uint32 offset; -+}; -+ -+/* Descriptor for system dependent string. */ -+struct sysdep_string -+{ -+ /* Offset of static string segments in file. */ -+ nls_uint32 offset; -+ /* Alternating sequence of static and system dependent segments. -+ The last segment is a static segment, including the trailing NUL. */ -+ struct segment_pair -+ { -+ /* Size of static segment. */ -+ nls_uint32 segsize; -+ /* Reference to system dependent string segment, or ~0 at the end. */ -+ nls_uint32 sysdepref; -+ } segments[1]; -+}; -+ -+/* Marker for the end of the segments[] array. This has the value 0xFFFFFFFF, -+ regardless whether 'int' is 16 bit, 32 bit, or 64 bit. */ -+#define SEGMENTS_END ((nls_uint32) ~0) -+ -+/* @@ begin of epilog @@ */ -+ -+#endif /* gettext.h */ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/hash-string.h psmisc-20.2.works.clean/intl/hash-string.h ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/hash-string.h 2001-04-13 23:00:42.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/hash-string.h 2004-10-13 15:18:41.000000000 -0500 -@@ -1,30 +1,23 @@ - /* Description of GNU message catalog format: string hashing function. -- Copyright (C) 1995, 1997, 1998, 2000, 2001 Free Software Foundation, Inc. -+ Copyright (C) 1995, 1997-1998, 2000-2003 Free Software Foundation, Inc. - -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2, or (at your option) -+ 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 General Public License for more details. -+ 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 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. */ -+ 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. */ - - /* @@ end of prolog @@ */ - --#ifndef PARAMS --# if __STDC__ --# define PARAMS(Args) Args --# else --# define PARAMS(Args) () --# endif --#endif -- - /* We assume to have `unsigned long int' value with at least 32 bits. */ - #define HASHWORDBITS 32 - -@@ -32,11 +25,8 @@ - /* 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 int hash_string PARAMS ((const char *__str_param)); -- - static inline unsigned long int --hash_string (str_param) -- const char *str_param; -+hash_string (const char *str_param) - { - unsigned long int hval, g; - const char *str = str_param; -@@ -46,7 +36,7 @@ - while (*str != '\0') - { - hval <<= 4; -- hval += (unsigned long int) *str++; -+ hval += (unsigned char) *str++; - g = hval & ((unsigned long int) 0xf << (HASHWORDBITS - 4)); - if (g != 0) - { -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/intl-compat.c psmisc-20.2.works.clean/intl/intl-compat.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/intl-compat.c 2001-04-13 23:00:43.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/intl-compat.c 2004-10-13 15:18:41.000000000 -0500 -@@ -1,71 +1,38 @@ - /* intl-compat.c - Stub functions to call gettext functions from GNU gettext - Library. -- Copyright (C) 1995, 2000, 2001 Software Foundation, Inc. -+ Copyright (C) 1995, 2000-2003 Software Foundation, Inc. - --This program is free software; you can redistribute 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 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 General Public License for more details. -+ This program is distributed in the hope that 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 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. */ -+ 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. */ - - #ifdef HAVE_CONFIG_H - # include <config.h> - #endif - --#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. */ -+/* This file redirects the gettext functions (without prefix) to those -+ defined in the included GNU libintl library (with "libintl_" prefix). -+ It is compiled into libintl in order to make the AM_GNU_GETTEXT test -+ of gettext <= 0.11.2 work with the libintl library >= 0.11.3 which -+ has the redirections primarily in the <libintl.h> include file. -+ It is also compiled into libgnuintl so that libgnuintl.so can be used -+ as LD_PRELOADable library on glibc systems, to provide the extra -+ features that the functions in the libc don't have (namely, logging). */ - - - #undef gettext -@@ -79,87 +46,86 @@ - #undef bind_textdomain_codeset - - -+/* When building a DLL, we must export some functions. Note that because -+ the functions are only defined for binary backward compatibility, we -+ don't need to use __declspec(dllimport) in any case. */ -+#if defined _MSC_VER && BUILDING_DLL -+# define DLL_EXPORTED __declspec(dllexport) -+#else -+# define DLL_EXPORTED -+#endif -+ -+ -+DLL_EXPORTED - char * --gettext (msgid) -- const char *msgid; -+gettext (const char *msgid) - { -- return gettext__ (msgid); -+ return libintl_gettext (msgid); - } - - -+DLL_EXPORTED - char * --dgettext (domainname, msgid) -- const char *domainname; -- const char *msgid; -+dgettext (const char *domainname, const char *msgid) - { -- return dgettext__ (domainname, msgid); -+ return libintl_dgettext (domainname, msgid); - } - - -+DLL_EXPORTED - char * --dcgettext (domainname, msgid, category) -- const char *domainname; -- const char *msgid; -- int category; -+dcgettext (const char *domainname, const char *msgid, int category) - { -- return dcgettext__ (domainname, msgid, category); -+ return libintl_dcgettext (domainname, msgid, category); - } - - -+DLL_EXPORTED - char * --ngettext (msgid1, msgid2, n) -- const char *msgid1; -- const char *msgid2; -- unsigned long int n; -+ngettext (const char *msgid1, const char *msgid2, unsigned long int n) - { -- return ngettext__ (msgid1, msgid2, n); -+ return libintl_ngettext (msgid1, msgid2, n); - } - - -+DLL_EXPORTED - char * --dngettext (domainname, msgid1, msgid2, n) -- const char *domainname; -- const char *msgid1; -- const char *msgid2; -- unsigned long int n; -+dngettext (const char *domainname, -+ const char *msgid1, const char *msgid2, unsigned long int n) - { -- return dngettext__ (domainname, msgid1, msgid2, n); -+ return libintl_dngettext (domainname, msgid1, msgid2, n); - } - - -+DLL_EXPORTED - char * --dcngettext (domainname, msgid1, msgid2, n, category) -- const char *domainname; -- const char *msgid1; -- const char *msgid2; -- unsigned long int n; -- int category; -+dcngettext (const char *domainname, -+ const char *msgid1, const char *msgid2, unsigned long int n, -+ int category) - { -- return dcngettext__ (domainname, msgid1, msgid2, n, category); -+ return libintl_dcngettext (domainname, msgid1, msgid2, n, category); - } - - -+DLL_EXPORTED - char * --textdomain (domainname) -- const char *domainname; -+textdomain (const char *domainname) - { -- return textdomain__ (domainname); -+ return libintl_textdomain (domainname); - } - - -+DLL_EXPORTED - char * --bindtextdomain (domainname, dirname) -- const char *domainname; -- const char *dirname; -+bindtextdomain (const char *domainname, const char *dirname) - { -- return bindtextdomain__ (domainname, dirname); -+ return libintl_bindtextdomain (domainname, dirname); - } - - -+DLL_EXPORTED - char * --bind_textdomain_codeset (domainname, codeset) -- const char *domainname; -- const char *codeset; -+bind_textdomain_codeset (const char *domainname, const char *codeset) - { -- return bind_textdomain_codeset__ (domainname, codeset); -+ return libintl_bind_textdomain_codeset (domainname, codeset); - } -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/l10nflist.c psmisc-20.2.works.clean/intl/l10nflist.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/l10nflist.c 2001-04-13 23:00:42.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/l10nflist.c 2004-10-13 15:18:41.000000000 -0500 -@@ -1,19 +1,20 @@ --/* Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. -+/* Copyright (C) 1995-1999, 2000-2003 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 -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2, or (at your option) -+ 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 General Public License for more details. -+ 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 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. */ -+ 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. */ - - /* Tell glibc's <string.h> to provide a prototype for stpcpy(). - This must come before <config.h> because <config.h> may include -@@ -27,11 +28,6 @@ - #endif - - #include <string.h> --#if !HAVE_STRCHR && !defined _LIBC --# ifndef strchr --# define strchr index --# endif --#endif - - #if defined _LIBC || defined HAVE_ARGZ_H - # include <argz.h> -@@ -62,20 +58,34 @@ - # endif - #else - # ifndef HAVE_STPCPY --static char *stpcpy PARAMS ((char *dest, const char *src)); -+static char *stpcpy (char *dest, const char *src); - # endif - #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. -+ */ -+#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)) -+#else -+ /* Unix */ -+# define ISSLASH(C) ((C) == '/') -+# define IS_ABSOLUTE_PATH(P) ISSLASH ((P)[0]) -+#endif -+ - /* Define function which are usually not available. */ - - #if !defined _LIBC && !defined HAVE___ARGZ_COUNT - /* Returns the number of strings in ARGZ. */ --static size_t argz_count__ PARAMS ((const char *argz, size_t len)); -- - static size_t --argz_count__ (argz, len) -- const char *argz; -- size_t len; -+argz_count__ (const char *argz, size_t len) - { - size_t count = 0; - while (len > 0) -@@ -89,18 +99,17 @@ - } - # undef __argz_count - # define __argz_count(argz, len) argz_count__ (argz, len) -+#else -+# ifdef _LIBC -+# define __argz_count(argz, len) INTUSE(__argz_count) (argz, len) -+# endif - #endif /* !_LIBC && !HAVE___ARGZ_COUNT */ - - #if !defined _LIBC && !defined HAVE___ARGZ_STRINGIFY - /* Make '\0' separated arg vector ARGZ printable by converting all the '\0's - except the last into the character SEP. */ --static void argz_stringify__ PARAMS ((char *argz, size_t len, int sep)); -- - static void --argz_stringify__ (argz, len, sep) -- char *argz; -- size_t len; -- int sep; -+argz_stringify__ (char *argz, size_t len, int sep) - { - while (len > 0) - { -@@ -113,17 +122,16 @@ - } - # undef __argz_stringify - # define __argz_stringify(argz, len, sep) argz_stringify__ (argz, len, sep) -+#else -+# ifdef _LIBC -+# define __argz_stringify(argz, len, sep) \ -+ INTUSE(__argz_stringify) (argz, len, sep) -+# endif - #endif /* !_LIBC && !HAVE___ARGZ_STRINGIFY */ - - #if !defined _LIBC && !defined HAVE___ARGZ_NEXT --static char *argz_next__ PARAMS ((char *argz, size_t argz_len, -- const char *entry)); -- - static char * --argz_next__ (argz, argz_len, entry) -- char *argz; -- size_t argz_len; -- const char *entry; -+argz_next__ (char *argz, size_t argz_len, const char *entry) - { - if (entry) - { -@@ -144,11 +152,8 @@ - - - /* Return number of bits set in X. */ --static int pop PARAMS ((int x)); -- - static inline int --pop (x) -- int x; -+pop (int x) - { - /* We assume that no more than 16 bits are used. */ - x = ((x & ~0x5555) >> 1) + (x & 0x5555); -@@ -161,32 +166,27 @@ - - - struct loaded_l10nfile * --_nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, mask, language, -- territory, codeset, normalized_codeset, modifier, special, -- sponsor, revision, filename, domainbinding, do_allocate) -- struct loaded_l10nfile **l10nfile_list; -- const char *dirlist; -- size_t dirlist_len; -- int mask; -- const char *language; -- const char *territory; -- const char *codeset; -- const char *normalized_codeset; -- const char *modifier; -- const char *special; -- const char *sponsor; -- const char *revision; -- const char *filename; -- struct binding *domainbinding; -- int do_allocate; -+_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list, -+ const char *dirlist, size_t dirlist_len, -+ int mask, const char *language, const char *territory, -+ const char *codeset, const char *normalized_codeset, -+ const char *modifier, const char *special, -+ const char *sponsor, const char *revision, -+ const char *filename, int do_allocate) - { - char *abs_filename; -- struct loaded_l10nfile *last = NULL; -+ struct loaded_l10nfile **lastp; - struct loaded_l10nfile *retval; - char *cp; -+ size_t dirlist_count; - size_t entries; - int cnt; - -+ /* If LANGUAGE contains an absolute directory specification, we ignore -+ DIRLIST. */ -+ if (IS_ABSOLUTE_PATH (language)) -+ dirlist_len = 0; -+ - /* Allocate room for the full file name. */ - abs_filename = (char *) malloc (dirlist_len - + strlen (language) -@@ -204,7 +204,7 @@ - + (((mask & CEN_SPONSOR) != 0 - || (mask & CEN_REVISION) != 0) - ? (1 + ((mask & CEN_SPONSOR) != 0 -- ? strlen (sponsor) + 1 : 0) -+ ? strlen (sponsor) : 0) - + ((mask & CEN_REVISION) != 0 - ? strlen (revision) + 1 : 0)) : 0) - + 1 + strlen (filename) + 1); -@@ -212,14 +212,16 @@ - if (abs_filename == NULL) - return NULL; - -- retval = NULL; -- last = NULL; -- - /* Construct file name. */ -- memcpy (abs_filename, dirlist, dirlist_len); -- __argz_stringify (abs_filename, dirlist_len, PATH_SEPARATOR); -- cp = abs_filename + (dirlist_len - 1); -- *cp++ = '/'; -+ cp = abs_filename; -+ if (dirlist_len > 0) -+ { -+ memcpy (cp, dirlist, dirlist_len); -+ __argz_stringify (cp, dirlist_len, PATH_SEPARATOR); -+ cp += dirlist_len; -+ cp[-1] = '/'; -+ } -+ - cp = stpcpy (cp, language); - - if ((mask & TERRITORY) != 0) -@@ -266,7 +268,7 @@ - - /* Look in list of already loaded domains whether it is already - available. */ -- last = NULL; -+ lastp = l10nfile_list; - for (retval = *l10nfile_list; retval != NULL; retval = retval->next) - if (retval->filename != NULL) - { -@@ -281,7 +283,7 @@ - break; - } - -- last = retval; -+ lastp = &retval->next; - } - - if (retval != NULL || do_allocate == 0) -@@ -290,52 +292,68 @@ - return retval; - } - -- retval = (struct loaded_l10nfile *) -- malloc (sizeof (*retval) + (__argz_count (dirlist, dirlist_len) -- * (1 << pop (mask)) -- * sizeof (struct loaded_l10nfile *))); -+ dirlist_count = (dirlist_len > 0 ? __argz_count (dirlist, dirlist_len) : 1); -+ -+ /* Allocate a new loaded_l10nfile. */ -+ retval = -+ (struct loaded_l10nfile *) -+ malloc (sizeof (*retval) -+ + (((dirlist_count << pop (mask)) + (dirlist_count > 1 ? 1 : 0)) -+ * sizeof (struct loaded_l10nfile *))); - if (retval == NULL) - return NULL; - - retval->filename = abs_filename; -- retval->domainbinding = domainbinding; -- retval->decided = (__argz_count (dirlist, dirlist_len) != 1 -+ -+ /* We set retval->data to NULL here; it is filled in later. -+ Setting retval->decided to 1 here means that retval does not -+ correspond to a real file (dirlist_count > 1) or is not worth -+ looking up (if an unnormalized codeset was specified). */ -+ retval->decided = (dirlist_count > 1 - || ((mask & XPG_CODESET) != 0 - && (mask & XPG_NORM_CODESET) != 0)); - retval->data = NULL; - -- if (last == NULL) -- { -- retval->next = *l10nfile_list; -- *l10nfile_list = retval; -- } -- else -- { -- retval->next = last->next; -- last->next = retval; -- } -+ retval->next = *lastp; -+ *lastp = retval; - - entries = 0; -- /* If the DIRLIST is a real list the RETVAL entry corresponds not to -- a real file. So we have to use the DIRLIST separation mechanism -- of the inner loop. */ -- cnt = __argz_count (dirlist, dirlist_len) == 1 ? mask - 1 : mask; -- for (; cnt >= 0; --cnt) -+ /* Recurse to fill the inheritance list of RETVAL. -+ If the DIRLIST is a real list (i.e. DIRLIST_COUNT > 1), the RETVAL -+ entry does not correspond to a real file; retval->filename contains -+ colons. In this case we loop across all elements of DIRLIST and -+ across all bit patterns dominated by MASK. -+ If the DIRLIST is a single directory or entirely redundant (i.e. -+ DIRLIST_COUNT == 1), we loop across all bit patterns dominated by -+ MASK, excluding MASK itself. -+ In either case, we loop down from MASK to 0. This has the effect -+ that the extra bits in the locale name are dropped in this order: -+ first the modifier, then the territory, then the codeset, then the -+ normalized_codeset. */ -+ for (cnt = dirlist_count > 1 ? mask : mask - 1; cnt >= 0; --cnt) - if ((cnt & ~mask) == 0 - && ((cnt & CEN_SPECIFIC) == 0 || (cnt & XPG_SPECIFIC) == 0) - && ((cnt & XPG_CODESET) == 0 || (cnt & XPG_NORM_CODESET) == 0)) - { -- /* Iterate over all elements of the DIRLIST. */ -- char *dir = NULL; -+ if (dirlist_count > 1) -+ { -+ /* Iterate over all elements of the DIRLIST. */ -+ char *dir = NULL; - -- while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir)) -- != NULL) -+ while ((dir = __argz_next ((char *) dirlist, dirlist_len, dir)) -+ != NULL) -+ retval->successor[entries++] -+ = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, -+ cnt, language, territory, codeset, -+ normalized_codeset, modifier, special, -+ sponsor, revision, filename, 1); -+ } -+ else - retval->successor[entries++] -- = _nl_make_l10nflist (l10nfile_list, dir, strlen (dir) + 1, cnt, -- language, territory, codeset, -+ = _nl_make_l10nflist (l10nfile_list, dirlist, dirlist_len, -+ cnt, language, territory, codeset, - normalized_codeset, modifier, special, -- sponsor, revision, filename, domainbinding, -- 1); -+ sponsor, revision, filename, 1); - } - retval->successor[entries] = NULL; - -@@ -347,9 +365,7 @@ - names. The return value is dynamically allocated and has to be - freed by the caller. */ - const char * --_nl_normalize_codeset (codeset, name_len) -- const char *codeset; -- size_t name_len; -+_nl_normalize_codeset (const char *codeset, size_t name_len) - { - int len = 0; - int only_digit = 1; -@@ -358,11 +374,11 @@ - size_t cnt; - - for (cnt = 0; cnt < name_len; ++cnt) -- if (isalnum (codeset[cnt])) -+ if (isalnum ((unsigned char) codeset[cnt])) - { - ++len; - -- if (isalpha (codeset[cnt])) -+ if (isalpha ((unsigned char) codeset[cnt])) - only_digit = 0; - } - -@@ -376,9 +392,9 @@ - wp = retval; - - for (cnt = 0; cnt < name_len; ++cnt) -- if (isalpha (codeset[cnt])) -- *wp++ = tolower (codeset[cnt]); -- else if (isdigit (codeset[cnt])) -+ if (isalpha ((unsigned char) codeset[cnt])) -+ *wp++ = tolower ((unsigned char) codeset[cnt]); -+ else if (isdigit ((unsigned char) codeset[cnt])) - *wp++ = codeset[cnt]; - - *wp = '\0'; -@@ -396,9 +412,7 @@ - to be defined. */ - #if !_LIBC && !HAVE_STPCPY - static char * --stpcpy (dest, src) -- char *dest; -- const char *src; -+stpcpy (char *dest, const char *src) - { - while ((*dest++ = *src++) != '\0') - /* Do nothing. */ ; -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/libgettext.h psmisc-20.2.works.clean/intl/libgettext.h ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/libgettext.h 2001-04-13 23:00:42.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/libgettext.h 1969-12-31 18:00:00.000000000 -0600 -@@ -1,48 +0,0 @@ --/* 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 -- 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 _LIBGETTEXT_H --#define _LIBGETTEXT_H 1 -- --/* NLS can be disabled through the configure --disable-nls option. */ --#if ENABLE_NLS -- --/* Get declarations of GNU message catalog functions. */ --# include <libintl.h> -- --#else -- --# define gettext(Msgid) (Msgid) --# define dgettext(Domainname, Msgid) (Msgid) --# define dcgettext(Domainname, Msgid, Category) (Msgid) --# 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 -- --/* For automatical extraction of messages sometimes no real -- translation is needed. Instead the string itself is the result. */ --#define gettext_noop(Str) (Str) -- --#endif /* _LIBGETTEXT_H */ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/libgnuintl.h psmisc-20.2.works.clean/intl/libgnuintl.h ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/libgnuintl.h 2001-04-13 23:00:42.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/libgnuintl.h 1969-12-31 18:00:00.000000000 -0600 -@@ -1,127 +0,0 @@ --/* 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 -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/libgnuintl.h.in psmisc-20.2.works.clean/intl/libgnuintl.h.in ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/libgnuintl.h.in 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/libgnuintl.h.in 2004-10-13 15:18:41.000000000 -0500 -@@ -0,0 +1,383 @@ -+/* Message catalogs for internationalization. -+ Copyright (C) 1995-1997, 2000-2003 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. */ -+ -+#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 (or _LOCALE_H in Solaris 2.5) -+ 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 || (defined _LOCALE_H && defined __sun)) -+# 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 -+ -+/* Provide information about the supported file formats. Returns the -+ maximum minor revision number supported for a given major revision. */ -+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) \ -+ ((major) == 0 ? 1 : -1) -+ -+/* Resolve a platform specific conflict on DJGPP. GNU gettext takes -+ precedence over _conio_gettext. */ -+#ifdef __DJGPP__ -+# undef gettext -+#endif -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+ -+/* We redirect the functions to those prefixed with "libintl_". This is -+ necessary, because some systems define gettext/textdomain/... in the C -+ library (namely, Solaris 2.4 and newer, and GNU libc 2.0 and newer). -+ If we used the unprefixed names, there would be cases where the -+ definition in the C library would override the one in the libintl.so -+ shared library. Recall that on ELF systems, the symbols are looked -+ up in the following order: -+ 1. in the executable, -+ 2. in the shared libraries specified on the link command line, in order, -+ 3. in the dependencies of the shared libraries specified on the link -+ command line, -+ 4. in the dlopen()ed shared libraries, in the order in which they were -+ dlopen()ed. -+ The definition in the C library would override the one in libintl.so if -+ either -+ * -lc is given on the link command line and -lintl isn't, or -+ * -lc is given on the link command line before -lintl, or -+ * libintl.so is a dependency of a dlopen()ed shared library but not -+ linked to the executable at link time. -+ Since Solaris gettext() behaves differently than GNU gettext(), this -+ would be unacceptable. -+ -+ The redirection happens by default through macros in C, so that &gettext -+ is independent of the compilation unit, but through inline functions in -+ C++, in order not to interfere with the name mangling of class fields or -+ class methods called 'gettext'. */ -+ -+/* The user can define _INTL_REDIRECT_INLINE or _INTL_REDIRECT_MACROS. -+ If he doesn't, we choose the method. A third possible method is -+ _INTL_REDIRECT_ASM, supported only by GCC. */ -+#if !(defined _INTL_REDIRECT_INLINE || defined _INTL_REDIRECT_MACROS) -+# if __GNUC__ >= 2 && !defined __APPLE_CC__ && !defined __MINGW32__ && !(__GNUC__ == 2 && defined _AIX) && (defined __STDC__ || defined __cplusplus) -+# define _INTL_REDIRECT_ASM -+# else -+# ifdef __cplusplus -+# define _INTL_REDIRECT_INLINE -+# else -+# define _INTL_REDIRECT_MACROS -+# endif -+# endif -+#endif -+/* Auxiliary macros. */ -+#ifdef _INTL_REDIRECT_ASM -+# define _INTL_ASM(cname) __asm__ (_INTL_ASMNAME (__USER_LABEL_PREFIX__, #cname)) -+# define _INTL_ASMNAME(prefix,cnamestring) _INTL_STRINGIFY (prefix) cnamestring -+# define _INTL_STRINGIFY(prefix) #prefix -+#else -+# define _INTL_ASM(cname) -+#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). */ -+#ifdef _INTL_REDIRECT_INLINE -+extern char *libintl_gettext (const char *__msgid); -+static inline char *gettext (const char *__msgid) -+{ -+ return libintl_gettext (__msgid); -+} -+#else -+#ifdef _INTL_REDIRECT_MACROS -+# define gettext libintl_gettext -+#endif -+extern char *gettext (const char *__msgid) -+ _INTL_ASM (libintl_gettext); -+#endif -+ -+/* Look up MSGID in the DOMAINNAME message catalog for the current -+ LC_MESSAGES locale. */ -+#ifdef _INTL_REDIRECT_INLINE -+extern char *libintl_dgettext (const char *__domainname, const char *__msgid); -+static inline char *dgettext (const char *__domainname, const char *__msgid) -+{ -+ return libintl_dgettext (__domainname, __msgid); -+} -+#else -+#ifdef _INTL_REDIRECT_MACROS -+# define dgettext libintl_dgettext -+#endif -+extern char *dgettext (const char *__domainname, const char *__msgid) -+ _INTL_ASM (libintl_dgettext); -+#endif -+ -+/* Look up MSGID in the DOMAINNAME message catalog for the current CATEGORY -+ locale. */ -+#ifdef _INTL_REDIRECT_INLINE -+extern char *libintl_dcgettext (const char *__domainname, const char *__msgid, -+ int __category); -+static inline char *dcgettext (const char *__domainname, const char *__msgid, -+ int __category) -+{ -+ return libintl_dcgettext (__domainname, __msgid, __category); -+} -+#else -+#ifdef _INTL_REDIRECT_MACROS -+# define dcgettext libintl_dcgettext -+#endif -+extern char *dcgettext (const char *__domainname, const char *__msgid, -+ int __category) -+ _INTL_ASM (libintl_dcgettext); -+#endif -+ -+ -+/* Similar to `gettext' but select the plural form corresponding to the -+ number N. */ -+#ifdef _INTL_REDIRECT_INLINE -+extern char *libintl_ngettext (const char *__msgid1, const char *__msgid2, -+ unsigned long int __n); -+static inline char *ngettext (const char *__msgid1, const char *__msgid2, -+ unsigned long int __n) -+{ -+ return libintl_ngettext (__msgid1, __msgid2, __n); -+} -+#else -+#ifdef _INTL_REDIRECT_MACROS -+# define ngettext libintl_ngettext -+#endif -+extern char *ngettext (const char *__msgid1, const char *__msgid2, -+ unsigned long int __n) -+ _INTL_ASM (libintl_ngettext); -+#endif -+ -+/* Similar to `dgettext' but select the plural form corresponding to the -+ number N. */ -+#ifdef _INTL_REDIRECT_INLINE -+extern char *libintl_dngettext (const char *__domainname, const char *__msgid1, -+ const char *__msgid2, unsigned long int __n); -+static inline char *dngettext (const char *__domainname, const char *__msgid1, -+ const char *__msgid2, unsigned long int __n) -+{ -+ return libintl_dngettext (__domainname, __msgid1, __msgid2, __n); -+} -+#else -+#ifdef _INTL_REDIRECT_MACROS -+# define dngettext libintl_dngettext -+#endif -+extern char *dngettext (const char *__domainname, -+ const char *__msgid1, const char *__msgid2, -+ unsigned long int __n) -+ _INTL_ASM (libintl_dngettext); -+#endif -+ -+/* Similar to `dcgettext' but select the plural form corresponding to the -+ number N. */ -+#ifdef _INTL_REDIRECT_INLINE -+extern char *libintl_dcngettext (const char *__domainname, -+ const char *__msgid1, const char *__msgid2, -+ unsigned long int __n, int __category); -+static inline char *dcngettext (const char *__domainname, -+ const char *__msgid1, const char *__msgid2, -+ unsigned long int __n, int __category) -+{ -+ return libintl_dcngettext (__domainname, __msgid1, __msgid2, __n, __category); -+} -+#else -+#ifdef _INTL_REDIRECT_MACROS -+# define dcngettext libintl_dcngettext -+#endif -+extern char *dcngettext (const char *__domainname, -+ const char *__msgid1, const char *__msgid2, -+ unsigned long int __n, int __category) -+ _INTL_ASM (libintl_dcngettext); -+#endif -+ -+ -+/* 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". */ -+#ifdef _INTL_REDIRECT_INLINE -+extern char *libintl_textdomain (const char *__domainname); -+static inline char *textdomain (const char *__domainname) -+{ -+ return libintl_textdomain (__domainname); -+} -+#else -+#ifdef _INTL_REDIRECT_MACROS -+# define textdomain libintl_textdomain -+#endif -+extern char *textdomain (const char *__domainname) -+ _INTL_ASM (libintl_textdomain); -+#endif -+ -+/* Specify that the DOMAINNAME message catalog will be found -+ in DIRNAME rather than in the system locale data base. */ -+#ifdef _INTL_REDIRECT_INLINE -+extern char *libintl_bindtextdomain (const char *__domainname, -+ const char *__dirname); -+static inline char *bindtextdomain (const char *__domainname, -+ const char *__dirname) -+{ -+ return libintl_bindtextdomain (__domainname, __dirname); -+} -+#else -+#ifdef _INTL_REDIRECT_MACROS -+# define bindtextdomain libintl_bindtextdomain -+#endif -+extern char *bindtextdomain (const char *__domainname, const char *__dirname) -+ _INTL_ASM (libintl_bindtextdomain); -+#endif -+ -+/* Specify the character encoding in which the messages from the -+ DOMAINNAME message catalog will be returned. */ -+#ifdef _INTL_REDIRECT_INLINE -+extern char *libintl_bind_textdomain_codeset (const char *__domainname, -+ const char *__codeset); -+static inline char *bind_textdomain_codeset (const char *__domainname, -+ const char *__codeset) -+{ -+ return libintl_bind_textdomain_codeset (__domainname, __codeset); -+} -+#else -+#ifdef _INTL_REDIRECT_MACROS -+# define bind_textdomain_codeset libintl_bind_textdomain_codeset -+#endif -+extern char *bind_textdomain_codeset (const char *__domainname, -+ const char *__codeset) -+ _INTL_ASM (libintl_bind_textdomain_codeset); -+#endif -+ -+ -+/* Support for format strings with positions in *printf(), following the -+ POSIX/XSI specification. -+ Note: These replacements for the *printf() functions are visible only -+ in source files that #include <libintl.h> or #include "gettext.h". -+ Packages that use *printf() in source files that don't refer to _() -+ or gettext() but for which the format string could be the return value -+ of _() or gettext() need to add this #include. Oh well. */ -+ -+#if !@HAVE_POSIX_PRINTF@ -+ -+#include <stdio.h> -+#include <stddef.h> -+ -+/* Get va_list. */ -+#if __STDC__ || defined __cplusplus || defined _MSC_VER -+# include <stdarg.h> -+#else -+# include <varargs.h> -+#endif -+ -+#undef fprintf -+#define fprintf libintl_fprintf -+extern int fprintf (FILE *, const char *, ...); -+#undef vfprintf -+#define vfprintf libintl_vfprintf -+extern int vfprintf (FILE *, const char *, va_list); -+ -+#undef printf -+#define printf libintl_printf -+extern int printf (const char *, ...); -+#undef vprintf -+#define vprintf libintl_vprintf -+extern int vprintf (const char *, va_list); -+ -+#undef sprintf -+#define sprintf libintl_sprintf -+extern int sprintf (char *, const char *, ...); -+#undef vsprintf -+#define vsprintf libintl_vsprintf -+extern int vsprintf (char *, const char *, va_list); -+ -+#if @HAVE_SNPRINTF@ -+ -+#undef snprintf -+#define snprintf libintl_snprintf -+extern int snprintf (char *, size_t, const char *, ...); -+#undef vsnprintf -+#define vsnprintf libintl_vsnprintf -+extern int vsnprintf (char *, size_t, const char *, va_list); -+ -+#endif -+ -+#if @HAVE_ASPRINTF@ -+ -+#undef asprintf -+#define asprintf libintl_asprintf -+extern int asprintf (char **, const char *, ...); -+#undef vasprintf -+#define vasprintf libintl_vasprintf -+extern int vasprintf (char **, const char *, va_list); -+ -+#endif -+ -+#if @HAVE_WPRINTF@ -+ -+#undef fwprintf -+#define fwprintf libintl_fwprintf -+extern int fwprintf (FILE *, const wchar_t *, ...); -+#undef vfwprintf -+#define vfwprintf libintl_vfwprintf -+extern int vfwprintf (FILE *, const wchar_t *, va_list); -+ -+#undef wprintf -+#define wprintf libintl_wprintf -+extern int wprintf (const wchar_t *, ...); -+#undef vwprintf -+#define vwprintf libintl_vwprintf -+extern int vwprintf (const wchar_t *, va_list); -+ -+#undef swprintf -+#define swprintf libintl_swprintf -+extern int swprintf (wchar_t *, size_t, const wchar_t *, ...); -+#undef vswprintf -+#define vswprintf libintl_vswprintf -+extern int vswprintf (wchar_t *, size_t, const wchar_t *, va_list); -+ -+#endif -+ -+#endif -+ -+ -+/* Support for relocatable packages. */ -+ -+/* Sets the original and the current installation prefix of the package. -+ Relocation simply replaces a pathname starting with the original prefix -+ by the corresponding pathname with the current prefix instead. Both -+ prefixes should be directory names without trailing slash (i.e. use "" -+ instead of "/"). */ -+#define libintl_set_relocation_prefix libintl_set_relocation_prefix -+extern void -+ libintl_set_relocation_prefix (const char *orig_prefix, -+ const char *curr_prefix); -+ -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif /* libintl.h */ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/loadinfo.h psmisc-20.2.works.clean/intl/loadinfo.h ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/loadinfo.h 2001-04-13 23:00:42.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/loadinfo.h 2004-10-13 15:18:41.000000000 -0500 -@@ -1,31 +1,36 @@ --/* Copyright (C) 1996-1999, 2000, 2001 Free Software Foundation, Inc. -+/* Copyright (C) 1996-1999, 2000-2003 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@cygnus.com>, 1996. - -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2, or (at your option) -+ 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 General Public License for more details. -+ 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 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. */ -+ 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. */ - - #ifndef _LOADINFO_H - #define _LOADINFO_H 1 - --#ifndef PARAMS --# if __STDC__ --# define PARAMS(args) args --# else --# define PARAMS(args) () --# endif --#endif -+/* Declarations of locale dependent catalog lookup functions. -+ Implemented in -+ -+ localealias.c Possibly replace a locale name by another. -+ explodename.c Split a locale name into its various fields. -+ l10nflist.c Generate a list of filenames of possible message catalogs. -+ finddomain.c Find and open the relevant message catalogs. -+ -+ The main function _nl_find_domain() in finddomain.c is declared -+ in gettextP.h. -+ */ - - #ifndef internal_function - # define internal_function -@@ -63,7 +68,6 @@ - struct loaded_l10nfile - { - const char *filename; -- struct binding *domainbinding; - int decided; - - const void *data; -@@ -77,39 +81,65 @@ - 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 const char *_nl_normalize_codeset (const char *codeset, -+ size_t name_len); - -+/* Lookup a locale dependent file. -+ *L10NFILE_LIST denotes a pool of lookup results of locale dependent -+ files of the same kind, sorted in decreasing order of ->filename. -+ DIRLIST and DIRLIST_LEN are an argz list of directories in which to -+ look, containing at least one directory (i.e. DIRLIST_LEN > 0). -+ MASK, LANGUAGE, TERRITORY, CODESET, NORMALIZED_CODESET, MODIFIER, -+ SPECIAL, SPONSOR, REVISION are the pieces of the locale name, as -+ produced by _nl_explode_name(). FILENAME is the filename suffix. -+ The return value is the lookup result, either found in *L10NFILE_LIST, -+ or - if DO_ALLOCATE is nonzero - freshly allocated, or possibly NULL. -+ If the return value is non-NULL, it is added to *L10NFILE_LIST, and -+ its ->next field denotes the chaining inside *L10NFILE_LIST, and -+ furthermore its ->successor[] field contains a list of other lookup -+ results from which this lookup result inherits. */ - extern struct loaded_l10nfile * --_nl_make_l10nflist PARAMS ((struct loaded_l10nfile **l10nfile_list, -- const char *dirlist, size_t dirlist_len, int mask, -- const char *language, const char *territory, -- const char *codeset, -- const char *normalized_codeset, -- const char *modifier, const char *special, -- const char *sponsor, const char *revision, -- const char *filename, -- struct binding *domainbinding, int do_allocate)); -- -- --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, -- const char **codeset, -- const char **normalized_codeset, -- const char **special, -- const char **sponsor, -- const char **revision)); -+_nl_make_l10nflist (struct loaded_l10nfile **l10nfile_list, -+ const char *dirlist, size_t dirlist_len, int mask, -+ const char *language, const char *territory, -+ const char *codeset, const char *normalized_codeset, -+ const char *modifier, const char *special, -+ const char *sponsor, const char *revision, -+ const char *filename, int do_allocate); - --extern char *_nl_find_language PARAMS ((const char *name)); -+/* Lookup the real locale name for a locale alias NAME, or NULL if -+ NAME is not a locale alias (but possibly a real locale name). -+ The return value is statically allocated and must not be freed. */ -+extern const char *_nl_expand_alias (const char *name); - -+/* Split a locale name NAME into its pieces: language, modifier, -+ territory, codeset, special, sponsor, revision. -+ NAME gets destructively modified: NUL bytes are inserted here and -+ there. *LANGUAGE gets assigned NAME. Each of *MODIFIER, *TERRITORY, -+ *CODESET, *SPECIAL, *SPONSOR, *REVISION gets assigned either a -+ pointer into the old NAME string, or NULL. *NORMALIZED_CODESET -+ gets assigned the expanded *CODESET, if it is different from *CODESET; -+ this one is dynamically allocated and has to be freed by the caller. -+ The return value is a bitmask, where each bit corresponds to one -+ filled-in value: -+ XPG_MODIFIER, CEN_AUDIENCE for *MODIFIER, -+ TERRITORY for *TERRITORY, -+ XPG_CODESET for *CODESET, -+ XPG_NORM_CODESET for *NORMALIZED_CODESET, -+ CEN_SPECIAL for *SPECIAL, -+ CEN_SPONSOR for *SPONSOR, -+ CEN_REVISION for *REVISION. -+ */ -+extern int _nl_explode_name (char *name, const char **language, -+ const char **modifier, const char **territory, -+ const char **codeset, -+ const char **normalized_codeset, -+ const char **special, const char **sponsor, -+ const char **revision); - --extern char *_nl_find_msg PARAMS ((struct loaded_l10nfile *domain_file, -- const char *msgid, size_t *lengthp)) -- internal_function; -+/* Split a locale name NAME into a leading language part and all the -+ rest. Return a pointer to the first character after the language, -+ i.e. to the first byte of the rest. */ -+extern char *_nl_find_language (const char *name); - - #endif /* loadinfo.h */ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/loadmsgcat.c psmisc-20.2.works.clean/intl/loadmsgcat.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/loadmsgcat.c 2001-04-13 23:00:42.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/loadmsgcat.c 2004-10-13 15:18:41.000000000 -0500 -@@ -1,19 +1,20 @@ - /* Load needed message catalogs. -- Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. -+ Copyright (C) 1995-1999, 2000-2004 Free Software Foundation, Inc. - -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2, or (at your option) -+ 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 General Public License for more details. -+ 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 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. */ -+ 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. */ - - /* Tell glibc's <string.h> to provide a prototype for mempcpy(). - This must come before <config.h> because <config.h> may include -@@ -33,17 +34,23 @@ - #include <sys/stat.h> - - #ifdef __GNUC__ -+# undef alloca - # define alloca __builtin_alloca - # define HAVE_ALLOCA 1 - #else --# if defined HAVE_ALLOCA_H || defined _LIBC --# include <alloca.h> -+# ifdef _MSC_VER -+# include <malloc.h> -+# define alloca _alloca - # else --# ifdef _AIX -- #pragma alloca -+# if defined HAVE_ALLOCA_H || defined _LIBC -+# include <alloca.h> - # else --# ifndef alloca -+# ifdef _AIX -+ #pragma alloca -+# else -+# ifndef alloca - char *alloca (); -+# endif - # endif - # endif - # endif -@@ -70,13 +77,380 @@ - # undef HAVE_MMAP - #endif - --#include "gettext.h" -+#if defined HAVE_STDINT_H_WITH_UINTMAX || defined _LIBC -+# include <stdint.h> -+#endif -+#if defined HAVE_INTTYPES_H || defined _LIBC -+# include <inttypes.h> -+#endif -+ -+#include "gmo.h" - #include "gettextP.h" -+#include "hash-string.h" -+#include "plural-exp.h" - - #ifdef _LIBC - # include "../locale/localeinfo.h" - #endif - -+/* Provide fallback values for macros that ought to be defined in <inttypes.h>. -+ Note that our fallback values need not be literal strings, because we don't -+ use them with preprocessor string concatenation. */ -+#if !defined PRId8 || PRI_MACROS_BROKEN -+# undef PRId8 -+# define PRId8 "d" -+#endif -+#if !defined PRIi8 || PRI_MACROS_BROKEN -+# undef PRIi8 -+# define PRIi8 "i" -+#endif -+#if !defined PRIo8 || PRI_MACROS_BROKEN -+# undef PRIo8 -+# define PRIo8 "o" -+#endif -+#if !defined PRIu8 || PRI_MACROS_BROKEN -+# undef PRIu8 -+# define PRIu8 "u" -+#endif -+#if !defined PRIx8 || PRI_MACROS_BROKEN -+# undef PRIx8 -+# define PRIx8 "x" -+#endif -+#if !defined PRIX8 || PRI_MACROS_BROKEN -+# undef PRIX8 -+# define PRIX8 "X" -+#endif -+#if !defined PRId16 || PRI_MACROS_BROKEN -+# undef PRId16 -+# define PRId16 "d" -+#endif -+#if !defined PRIi16 || PRI_MACROS_BROKEN -+# undef PRIi16 -+# define PRIi16 "i" -+#endif -+#if !defined PRIo16 || PRI_MACROS_BROKEN -+# undef PRIo16 -+# define PRIo16 "o" -+#endif -+#if !defined PRIu16 || PRI_MACROS_BROKEN -+# undef PRIu16 -+# define PRIu16 "u" -+#endif -+#if !defined PRIx16 || PRI_MACROS_BROKEN -+# undef PRIx16 -+# define PRIx16 "x" -+#endif -+#if !defined PRIX16 || PRI_MACROS_BROKEN -+# undef PRIX16 -+# define PRIX16 "X" -+#endif -+#if !defined PRId32 || PRI_MACROS_BROKEN -+# undef PRId32 -+# define PRId32 "d" -+#endif -+#if !defined PRIi32 || PRI_MACROS_BROKEN -+# undef PRIi32 -+# define PRIi32 "i" -+#endif -+#if !defined PRIo32 || PRI_MACROS_BROKEN -+# undef PRIo32 -+# define PRIo32 "o" -+#endif -+#if !defined PRIu32 || PRI_MACROS_BROKEN -+# undef PRIu32 -+# define PRIu32 "u" -+#endif -+#if !defined PRIx32 || PRI_MACROS_BROKEN -+# undef PRIx32 -+# define PRIx32 "x" -+#endif -+#if !defined PRIX32 || PRI_MACROS_BROKEN -+# undef PRIX32 -+# define PRIX32 "X" -+#endif -+#if !defined PRId64 || PRI_MACROS_BROKEN -+# undef PRId64 -+# define PRId64 (sizeof (long) == 8 ? "ld" : "lld") -+#endif -+#if !defined PRIi64 || PRI_MACROS_BROKEN -+# undef PRIi64 -+# define PRIi64 (sizeof (long) == 8 ? "li" : "lli") -+#endif -+#if !defined PRIo64 || PRI_MACROS_BROKEN -+# undef PRIo64 -+# define PRIo64 (sizeof (long) == 8 ? "lo" : "llo") -+#endif -+#if !defined PRIu64 || PRI_MACROS_BROKEN -+# undef PRIu64 -+# define PRIu64 (sizeof (long) == 8 ? "lu" : "llu") -+#endif -+#if !defined PRIx64 || PRI_MACROS_BROKEN -+# undef PRIx64 -+# define PRIx64 (sizeof (long) == 8 ? "lx" : "llx") -+#endif -+#if !defined PRIX64 || PRI_MACROS_BROKEN -+# undef PRIX64 -+# define PRIX64 (sizeof (long) == 8 ? "lX" : "llX") -+#endif -+#if !defined PRIdLEAST8 || PRI_MACROS_BROKEN -+# undef PRIdLEAST8 -+# define PRIdLEAST8 "d" -+#endif -+#if !defined PRIiLEAST8 || PRI_MACROS_BROKEN -+# undef PRIiLEAST8 -+# define PRIiLEAST8 "i" -+#endif -+#if !defined PRIoLEAST8 || PRI_MACROS_BROKEN -+# undef PRIoLEAST8 -+# define PRIoLEAST8 "o" -+#endif -+#if !defined PRIuLEAST8 || PRI_MACROS_BROKEN -+# undef PRIuLEAST8 -+# define PRIuLEAST8 "u" -+#endif -+#if !defined PRIxLEAST8 || PRI_MACROS_BROKEN -+# undef PRIxLEAST8 -+# define PRIxLEAST8 "x" -+#endif -+#if !defined PRIXLEAST8 || PRI_MACROS_BROKEN -+# undef PRIXLEAST8 -+# define PRIXLEAST8 "X" -+#endif -+#if !defined PRIdLEAST16 || PRI_MACROS_BROKEN -+# undef PRIdLEAST16 -+# define PRIdLEAST16 "d" -+#endif -+#if !defined PRIiLEAST16 || PRI_MACROS_BROKEN -+# undef PRIiLEAST16 -+# define PRIiLEAST16 "i" -+#endif -+#if !defined PRIoLEAST16 || PRI_MACROS_BROKEN -+# undef PRIoLEAST16 -+# define PRIoLEAST16 "o" -+#endif -+#if !defined PRIuLEAST16 || PRI_MACROS_BROKEN -+# undef PRIuLEAST16 -+# define PRIuLEAST16 "u" -+#endif -+#if !defined PRIxLEAST16 || PRI_MACROS_BROKEN -+# undef PRIxLEAST16 -+# define PRIxLEAST16 "x" -+#endif -+#if !defined PRIXLEAST16 || PRI_MACROS_BROKEN -+# undef PRIXLEAST16 -+# define PRIXLEAST16 "X" -+#endif -+#if !defined PRIdLEAST32 || PRI_MACROS_BROKEN -+# undef PRIdLEAST32 -+# define PRIdLEAST32 "d" -+#endif -+#if !defined PRIiLEAST32 || PRI_MACROS_BROKEN -+# undef PRIiLEAST32 -+# define PRIiLEAST32 "i" -+#endif -+#if !defined PRIoLEAST32 || PRI_MACROS_BROKEN -+# undef PRIoLEAST32 -+# define PRIoLEAST32 "o" -+#endif -+#if !defined PRIuLEAST32 || PRI_MACROS_BROKEN -+# undef PRIuLEAST32 -+# define PRIuLEAST32 "u" -+#endif -+#if !defined PRIxLEAST32 || PRI_MACROS_BROKEN -+# undef PRIxLEAST32 -+# define PRIxLEAST32 "x" -+#endif -+#if !defined PRIXLEAST32 || PRI_MACROS_BROKEN -+# undef PRIXLEAST32 -+# define PRIXLEAST32 "X" -+#endif -+#if !defined PRIdLEAST64 || PRI_MACROS_BROKEN -+# undef PRIdLEAST64 -+# define PRIdLEAST64 PRId64 -+#endif -+#if !defined PRIiLEAST64 || PRI_MACROS_BROKEN -+# undef PRIiLEAST64 -+# define PRIiLEAST64 PRIi64 -+#endif -+#if !defined PRIoLEAST64 || PRI_MACROS_BROKEN -+# undef PRIoLEAST64 -+# define PRIoLEAST64 PRIo64 -+#endif -+#if !defined PRIuLEAST64 || PRI_MACROS_BROKEN -+# undef PRIuLEAST64 -+# define PRIuLEAST64 PRIu64 -+#endif -+#if !defined PRIxLEAST64 || PRI_MACROS_BROKEN -+# undef PRIxLEAST64 -+# define PRIxLEAST64 PRIx64 -+#endif -+#if !defined PRIXLEAST64 || PRI_MACROS_BROKEN -+# undef PRIXLEAST64 -+# define PRIXLEAST64 PRIX64 -+#endif -+#if !defined PRIdFAST8 || PRI_MACROS_BROKEN -+# undef PRIdFAST8 -+# define PRIdFAST8 "d" -+#endif -+#if !defined PRIiFAST8 || PRI_MACROS_BROKEN -+# undef PRIiFAST8 -+# define PRIiFAST8 "i" -+#endif -+#if !defined PRIoFAST8 || PRI_MACROS_BROKEN -+# undef PRIoFAST8 -+# define PRIoFAST8 "o" -+#endif -+#if !defined PRIuFAST8 || PRI_MACROS_BROKEN -+# undef PRIuFAST8 -+# define PRIuFAST8 "u" -+#endif -+#if !defined PRIxFAST8 || PRI_MACROS_BROKEN -+# undef PRIxFAST8 -+# define PRIxFAST8 "x" -+#endif -+#if !defined PRIXFAST8 || PRI_MACROS_BROKEN -+# undef PRIXFAST8 -+# define PRIXFAST8 "X" -+#endif -+#if !defined PRIdFAST16 || PRI_MACROS_BROKEN -+# undef PRIdFAST16 -+# define PRIdFAST16 "d" -+#endif -+#if !defined PRIiFAST16 || PRI_MACROS_BROKEN -+# undef PRIiFAST16 -+# define PRIiFAST16 "i" -+#endif -+#if !defined PRIoFAST16 || PRI_MACROS_BROKEN -+# undef PRIoFAST16 -+# define PRIoFAST16 "o" -+#endif -+#if !defined PRIuFAST16 || PRI_MACROS_BROKEN -+# undef PRIuFAST16 -+# define PRIuFAST16 "u" -+#endif -+#if !defined PRIxFAST16 || PRI_MACROS_BROKEN -+# undef PRIxFAST16 -+# define PRIxFAST16 "x" -+#endif -+#if !defined PRIXFAST16 || PRI_MACROS_BROKEN -+# undef PRIXFAST16 -+# define PRIXFAST16 "X" -+#endif -+#if !defined PRIdFAST32 || PRI_MACROS_BROKEN -+# undef PRIdFAST32 -+# define PRIdFAST32 "d" -+#endif -+#if !defined PRIiFAST32 || PRI_MACROS_BROKEN -+# undef PRIiFAST32 -+# define PRIiFAST32 "i" -+#endif -+#if !defined PRIoFAST32 || PRI_MACROS_BROKEN -+# undef PRIoFAST32 -+# define PRIoFAST32 "o" -+#endif -+#if !defined PRIuFAST32 || PRI_MACROS_BROKEN -+# undef PRIuFAST32 -+# define PRIuFAST32 "u" -+#endif -+#if !defined PRIxFAST32 || PRI_MACROS_BROKEN -+# undef PRIxFAST32 -+# define PRIxFAST32 "x" -+#endif -+#if !defined PRIXFAST32 || PRI_MACROS_BROKEN -+# undef PRIXFAST32 -+# define PRIXFAST32 "X" -+#endif -+#if !defined PRIdFAST64 || PRI_MACROS_BROKEN -+# undef PRIdFAST64 -+# define PRIdFAST64 PRId64 -+#endif -+#if !defined PRIiFAST64 || PRI_MACROS_BROKEN -+# undef PRIiFAST64 -+# define PRIiFAST64 PRIi64 -+#endif -+#if !defined PRIoFAST64 || PRI_MACROS_BROKEN -+# undef PRIoFAST64 -+# define PRIoFAST64 PRIo64 -+#endif -+#if !defined PRIuFAST64 || PRI_MACROS_BROKEN -+# undef PRIuFAST64 -+# define PRIuFAST64 PRIu64 -+#endif -+#if !defined PRIxFAST64 || PRI_MACROS_BROKEN -+# undef PRIxFAST64 -+# define PRIxFAST64 PRIx64 -+#endif -+#if !defined PRIXFAST64 || PRI_MACROS_BROKEN -+# undef PRIXFAST64 -+# define PRIXFAST64 PRIX64 -+#endif -+#if !defined PRIdMAX || PRI_MACROS_BROKEN -+# undef PRIdMAX -+# define PRIdMAX (sizeof (uintmax_t) == sizeof (long) ? "ld" : "lld") -+#endif -+#if !defined PRIiMAX || PRI_MACROS_BROKEN -+# undef PRIiMAX -+# define PRIiMAX (sizeof (uintmax_t) == sizeof (long) ? "li" : "lli") -+#endif -+#if !defined PRIoMAX || PRI_MACROS_BROKEN -+# undef PRIoMAX -+# define PRIoMAX (sizeof (uintmax_t) == sizeof (long) ? "lo" : "llo") -+#endif -+#if !defined PRIuMAX || PRI_MACROS_BROKEN -+# undef PRIuMAX -+# define PRIuMAX (sizeof (uintmax_t) == sizeof (long) ? "lu" : "llu") -+#endif -+#if !defined PRIxMAX || PRI_MACROS_BROKEN -+# undef PRIxMAX -+# define PRIxMAX (sizeof (uintmax_t) == sizeof (long) ? "lx" : "llx") -+#endif -+#if !defined PRIXMAX || PRI_MACROS_BROKEN -+# undef PRIXMAX -+# define PRIXMAX (sizeof (uintmax_t) == sizeof (long) ? "lX" : "llX") -+#endif -+#if !defined PRIdPTR || PRI_MACROS_BROKEN -+# undef PRIdPTR -+# define PRIdPTR \ -+ (sizeof (void *) == sizeof (long) ? "ld" : \ -+ sizeof (void *) == sizeof (int) ? "d" : \ -+ "lld") -+#endif -+#if !defined PRIiPTR || PRI_MACROS_BROKEN -+# undef PRIiPTR -+# define PRIiPTR \ -+ (sizeof (void *) == sizeof (long) ? "li" : \ -+ sizeof (void *) == sizeof (int) ? "i" : \ -+ "lli") -+#endif -+#if !defined PRIoPTR || PRI_MACROS_BROKEN -+# undef PRIoPTR -+# define PRIoPTR \ -+ (sizeof (void *) == sizeof (long) ? "lo" : \ -+ sizeof (void *) == sizeof (int) ? "o" : \ -+ "llo") -+#endif -+#if !defined PRIuPTR || PRI_MACROS_BROKEN -+# undef PRIuPTR -+# define PRIuPTR \ -+ (sizeof (void *) == sizeof (long) ? "lu" : \ -+ sizeof (void *) == sizeof (int) ? "u" : \ -+ "llu") -+#endif -+#if !defined PRIxPTR || PRI_MACROS_BROKEN -+# undef PRIxPTR -+# define PRIxPTR \ -+ (sizeof (void *) == sizeof (long) ? "lx" : \ -+ sizeof (void *) == sizeof (int) ? "x" : \ -+ "llx") -+#endif -+#if !defined PRIXPTR || PRI_MACROS_BROKEN -+# undef PRIXPTR -+# define PRIXPTR \ -+ (sizeof (void *) == sizeof (long) ? "lX" : \ -+ sizeof (void *) == sizeof (int) ? "X" : \ -+ "llX") -+#endif -+ - /* @@ end of prolog @@ */ - - #ifdef _LIBC -@@ -90,16 +464,6 @@ - # 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 -@@ -126,85 +490,424 @@ - # 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; - --#if defined __GNUC__ \ -- || (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 = -+/* Expand a system dependent string segment. Return NULL if unsupported. */ -+static const char * -+get_sysdep_segment_value (const char *name) - { -- .nargs = 2, -- .operation = not_equal, -- .val = -- { -- .args = -+ /* Test for an ISO C 99 section 7.8.1 format string directive. -+ Syntax: -+ P R I { d | i | o | u | x | X } -+ { { | LEAST | FAST } { 8 | 16 | 32 | 64 } | MAX | PTR } */ -+ /* We don't use a table of 14 times 6 'const char *' strings here, because -+ data relocations cost startup time. */ -+ if (name[0] == 'P' && name[1] == 'R' && name[2] == 'I') - { -- [0] = (struct expression *) &plvar, -- [1] = (struct expression *) &plone -+ if (name[3] == 'd' || name[3] == 'i' || name[3] == 'o' || name[3] == 'u' -+ || name[3] == 'x' || name[3] == 'X') -+ { -+ if (name[4] == '8' && name[5] == '\0') -+ { -+ if (name[3] == 'd') -+ return PRId8; -+ if (name[3] == 'i') -+ return PRIi8; -+ if (name[3] == 'o') -+ return PRIo8; -+ if (name[3] == 'u') -+ return PRIu8; -+ if (name[3] == 'x') -+ return PRIx8; -+ if (name[3] == 'X') -+ return PRIX8; -+ abort (); -+ } -+ if (name[4] == '1' && name[5] == '6' && name[6] == '\0') -+ { -+ if (name[3] == 'd') -+ return PRId16; -+ if (name[3] == 'i') -+ return PRIi16; -+ if (name[3] == 'o') -+ return PRIo16; -+ if (name[3] == 'u') -+ return PRIu16; -+ if (name[3] == 'x') -+ return PRIx16; -+ if (name[3] == 'X') -+ return PRIX16; -+ abort (); -+ } -+ if (name[4] == '3' && name[5] == '2' && name[6] == '\0') -+ { -+ if (name[3] == 'd') -+ return PRId32; -+ if (name[3] == 'i') -+ return PRIi32; -+ if (name[3] == 'o') -+ return PRIo32; -+ if (name[3] == 'u') -+ return PRIu32; -+ if (name[3] == 'x') -+ return PRIx32; -+ if (name[3] == 'X') -+ return PRIX32; -+ abort (); -+ } -+ if (name[4] == '6' && name[5] == '4' && name[6] == '\0') -+ { -+ if (name[3] == 'd') -+ return PRId64; -+ if (name[3] == 'i') -+ return PRIi64; -+ if (name[3] == 'o') -+ return PRIo64; -+ if (name[3] == 'u') -+ return PRIu64; -+ if (name[3] == 'x') -+ return PRIx64; -+ if (name[3] == 'X') -+ return PRIX64; -+ abort (); -+ } -+ if (name[4] == 'L' && name[5] == 'E' && name[6] == 'A' -+ && name[7] == 'S' && name[8] == 'T') -+ { -+ if (name[9] == '8' && name[10] == '\0') -+ { -+ if (name[3] == 'd') -+ return PRIdLEAST8; -+ if (name[3] == 'i') -+ return PRIiLEAST8; -+ if (name[3] == 'o') -+ return PRIoLEAST8; -+ if (name[3] == 'u') -+ return PRIuLEAST8; -+ if (name[3] == 'x') -+ return PRIxLEAST8; -+ if (name[3] == 'X') -+ return PRIXLEAST8; -+ abort (); -+ } -+ if (name[9] == '1' && name[10] == '6' && name[11] == '\0') -+ { -+ if (name[3] == 'd') -+ return PRIdLEAST16; -+ if (name[3] == 'i') -+ return PRIiLEAST16; -+ if (name[3] == 'o') -+ return PRIoLEAST16; -+ if (name[3] == 'u') -+ return PRIuLEAST16; -+ if (name[3] == 'x') -+ return PRIxLEAST16; -+ if (name[3] == 'X') -+ return PRIXLEAST16; -+ abort (); -+ } -+ if (name[9] == '3' && name[10] == '2' && name[11] == '\0') -+ { -+ if (name[3] == 'd') -+ return PRIdLEAST32; -+ if (name[3] == 'i') -+ return PRIiLEAST32; -+ if (name[3] == 'o') -+ return PRIoLEAST32; -+ if (name[3] == 'u') -+ return PRIuLEAST32; -+ if (name[3] == 'x') -+ return PRIxLEAST32; -+ if (name[3] == 'X') -+ return PRIXLEAST32; -+ abort (); -+ } -+ if (name[9] == '6' && name[10] == '4' && name[11] == '\0') -+ { -+ if (name[3] == 'd') -+ return PRIdLEAST64; -+ if (name[3] == 'i') -+ return PRIiLEAST64; -+ if (name[3] == 'o') -+ return PRIoLEAST64; -+ if (name[3] == 'u') -+ return PRIuLEAST64; -+ if (name[3] == 'x') -+ return PRIxLEAST64; -+ if (name[3] == 'X') -+ return PRIXLEAST64; -+ abort (); -+ } -+ } -+ if (name[4] == 'F' && name[5] == 'A' && name[6] == 'S' -+ && name[7] == 'T') -+ { -+ if (name[8] == '8' && name[9] == '\0') -+ { -+ if (name[3] == 'd') -+ return PRIdFAST8; -+ if (name[3] == 'i') -+ return PRIiFAST8; -+ if (name[3] == 'o') -+ return PRIoFAST8; -+ if (name[3] == 'u') -+ return PRIuFAST8; -+ if (name[3] == 'x') -+ return PRIxFAST8; -+ if (name[3] == 'X') -+ return PRIXFAST8; -+ abort (); -+ } -+ if (name[8] == '1' && name[9] == '6' && name[10] == '\0') -+ { -+ if (name[3] == 'd') -+ return PRIdFAST16; -+ if (name[3] == 'i') -+ return PRIiFAST16; -+ if (name[3] == 'o') -+ return PRIoFAST16; -+ if (name[3] == 'u') -+ return PRIuFAST16; -+ if (name[3] == 'x') -+ return PRIxFAST16; -+ if (name[3] == 'X') -+ return PRIXFAST16; -+ abort (); -+ } -+ if (name[8] == '3' && name[9] == '2' && name[10] == '\0') -+ { -+ if (name[3] == 'd') -+ return PRIdFAST32; -+ if (name[3] == 'i') -+ return PRIiFAST32; -+ if (name[3] == 'o') -+ return PRIoFAST32; -+ if (name[3] == 'u') -+ return PRIuFAST32; -+ if (name[3] == 'x') -+ return PRIxFAST32; -+ if (name[3] == 'X') -+ return PRIXFAST32; -+ abort (); -+ } -+ if (name[8] == '6' && name[9] == '4' && name[10] == '\0') -+ { -+ if (name[3] == 'd') -+ return PRIdFAST64; -+ if (name[3] == 'i') -+ return PRIiFAST64; -+ if (name[3] == 'o') -+ return PRIoFAST64; -+ if (name[3] == 'u') -+ return PRIuFAST64; -+ if (name[3] == 'x') -+ return PRIxFAST64; -+ if (name[3] == 'X') -+ return PRIXFAST64; -+ abort (); -+ } -+ } -+ if (name[4] == 'M' && name[5] == 'A' && name[6] == 'X' -+ && name[7] == '\0') -+ { -+ if (name[3] == 'd') -+ return PRIdMAX; -+ if (name[3] == 'i') -+ return PRIiMAX; -+ if (name[3] == 'o') -+ return PRIoMAX; -+ if (name[3] == 'u') -+ return PRIuMAX; -+ if (name[3] == 'x') -+ return PRIxMAX; -+ if (name[3] == 'X') -+ return PRIXMAX; -+ abort (); -+ } -+ if (name[4] == 'P' && name[5] == 'T' && name[6] == 'R' -+ && name[7] == '\0') -+ { -+ if (name[3] == 'd') -+ return PRIdPTR; -+ if (name[3] == 'i') -+ return PRIiPTR; -+ if (name[3] == 'o') -+ return PRIoPTR; -+ if (name[3] == 'u') -+ return PRIuPTR; -+ if (name[3] == 'x') -+ return PRIxPTR; -+ if (name[3] == 'X') -+ return PRIXPTR; -+ abort (); -+ } -+ } - } -- } --}; -+ /* Test for a glibc specific printf() format directive flag. */ -+ if (name[0] == 'I' && name[1] == '\0') -+ { -+#if defined _LIBC || __GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) -+ /* The 'I' flag, in numeric format directives, replaces ASCII digits -+ with the 'outdigits' defined in the LC_CTYPE locale facet. This is -+ used for Farsi (Persian) and maybe Arabic. */ -+ return "I"; -+#else -+ return ""; -+#endif -+ } -+ /* Other system dependent strings are not valid. */ -+ return NULL; -+} - --# define INIT_GERMANIC_PLURAL() -+/* Initialize the codeset dependent parts of an opened message catalog. -+ Return the header entry. */ -+const char * -+internal_function -+_nl_init_domain_conv (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; - --/* 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; -+ /* Get the header entry. */ -+ nullentry = _nl_find_msg (domain_file, domainbinding, "", &nullentrylen); - --static void --init_germanic_plural () --{ -- if (plone.val.num == 0) -+ if (nullentry != NULL) - { -- plvar.nargs = 0; -- plvar.operation = var; -+#if defined _LIBC || HAVE_ICONV -+ const char *charsetstr; - -- plone.nargs = 0; -- plone.operation = num; -- plone.val.num = 1; -+ charsetstr = strstr (nullentry, "charset="); -+ if (charsetstr != NULL) -+ { -+ size_t len; -+ char *charset; -+ const char *outcharset; - -- germanic_plural.nargs = 2; -- germanic_plural.operation = not_equal; -- germanic_plural.val.args[0] = &plvar; -- germanic_plural.val.args[1] = &plone; -+ 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, CODESET); -+# 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 libc >= 2.2 or GNU libiconv >= 1.5, -+ we want to use transliteration. */ -+# if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 2) || __GLIBC__ > 2 \ -+ || _LIBICONV_VERSION >= 0x0105 -+ if (strchr (outcharset, '/') == NULL) -+ { -+ char *tmp; -+ -+ len = strlen (outcharset); -+ tmp = (char *) alloca (len + 10 + 1); -+ memcpy (tmp, outcharset, len); -+ memcpy (tmp + len, "//TRANSLIT", 10 + 1); -+ outcharset = tmp; -+ -+ domain->conv = iconv_open (outcharset, charset); -+ -+ freea (outcharset); -+ } -+ else -+# endif -+ domain->conv = iconv_open (outcharset, charset); -+# endif -+# endif -+ -+ freea (charset); -+ } -+#endif /* _LIBC || HAVE_ICONV */ - } -+ -+ return nullentry; - } - --# define INIT_GERMANIC_PLURAL() init_germanic_plural () -+/* Frees the codeset dependent parts of an opened message catalog. */ -+void -+internal_function -+_nl_free_domain_conv (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) -- struct loaded_l10nfile *domain_file; -+_nl_load_domain (struct loaded_l10nfile *domain_file, -+ struct binding *domainbinding) - { - int fd; - size_t size; -@@ -216,12 +919,16 @@ - struct mo_file_header *data = (struct mo_file_header *) -1; - int use_mmap = 0; - struct loaded_domain *domain; -- char *nullentry; -- size_t nullentrylen; -+ int revision; -+ 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 -@@ -320,22 +1027,353 @@ - domain->use_mmap = use_mmap; - domain->mmap_size = size; - domain->must_swap = data->magic != _MAGIC; -+ domain->malloced = NULL; - - /* Fill in the information about the available tables. */ -- switch (W (domain->must_swap, data->revision)) -+ revision = W (domain->must_swap, data->revision); -+ /* We support only the major revisions 0 and 1. */ -+ switch (revision >> 16) - { - case 0: -+ case 1: - domain->nstrings = W (domain->must_swap, data->nstrings); -- domain->orig_tab = (struct string_desc *) -+ domain->orig_tab = (const struct string_desc *) - ((char *) data + W (domain->must_swap, data->orig_tab_offset)); -- domain->trans_tab = (struct string_desc *) -+ domain->trans_tab = (const struct string_desc *) - ((char *) data + W (domain->must_swap, data->trans_tab_offset)); - domain->hash_size = W (domain->must_swap, data->hash_tab_size); -- domain->hash_tab = (nls_uint32 *) -- ((char *) data + W (domain->must_swap, data->hash_tab_offset)); -+ domain->hash_tab = -+ (domain->hash_size > 2 -+ ? (const nls_uint32 *) -+ ((char *) data + W (domain->must_swap, data->hash_tab_offset)) -+ : NULL); -+ domain->must_swap_hash_tab = domain->must_swap; -+ -+ /* Now dispatch on the minor revision. */ -+ switch (revision & 0xffff) -+ { -+ case 0: -+ domain->n_sysdep_strings = 0; -+ domain->orig_sysdep_tab = NULL; -+ domain->trans_sysdep_tab = NULL; -+ break; -+ case 1: -+ default: -+ { -+ nls_uint32 n_sysdep_strings; -+ -+ if (domain->hash_tab == NULL) -+ /* This is invalid. These minor revisions need a hash table. */ -+ goto invalid; -+ -+ n_sysdep_strings = -+ W (domain->must_swap, data->n_sysdep_strings); -+ if (n_sysdep_strings > 0) -+ { -+ nls_uint32 n_sysdep_segments; -+ const struct sysdep_segment *sysdep_segments; -+ const char **sysdep_segment_values; -+ const nls_uint32 *orig_sysdep_tab; -+ const nls_uint32 *trans_sysdep_tab; -+ nls_uint32 n_inmem_sysdep_strings; -+ size_t memneed; -+ char *mem; -+ struct sysdep_string_desc *inmem_orig_sysdep_tab; -+ struct sysdep_string_desc *inmem_trans_sysdep_tab; -+ nls_uint32 *inmem_hash_tab; -+ unsigned int i, j; -+ -+ /* Get the values of the system dependent segments. */ -+ n_sysdep_segments = -+ W (domain->must_swap, data->n_sysdep_segments); -+ sysdep_segments = (const struct sysdep_segment *) -+ ((char *) data -+ + W (domain->must_swap, data->sysdep_segments_offset)); -+ sysdep_segment_values = -+ alloca (n_sysdep_segments * sizeof (const char *)); -+ for (i = 0; i < n_sysdep_segments; i++) -+ { -+ const char *name = -+ (char *) data -+ + W (domain->must_swap, sysdep_segments[i].offset); -+ nls_uint32 namelen = -+ W (domain->must_swap, sysdep_segments[i].length); -+ -+ if (!(namelen > 0 && name[namelen - 1] == '\0')) -+ { -+ freea (sysdep_segment_values); -+ goto invalid; -+ } -+ -+ sysdep_segment_values[i] = get_sysdep_segment_value (name); -+ } -+ -+ orig_sysdep_tab = (const nls_uint32 *) -+ ((char *) data -+ + W (domain->must_swap, data->orig_sysdep_tab_offset)); -+ trans_sysdep_tab = (const nls_uint32 *) -+ ((char *) data -+ + W (domain->must_swap, data->trans_sysdep_tab_offset)); -+ -+ /* Compute the amount of additional memory needed for the -+ system dependent strings and the augmented hash table. -+ At the same time, also drop string pairs which refer to -+ an undefined system dependent segment. */ -+ n_inmem_sysdep_strings = 0; -+ memneed = domain->hash_size * sizeof (nls_uint32); -+ for (i = 0; i < n_sysdep_strings; i++) -+ { -+ int valid = 1; -+ size_t needs[2]; -+ -+ for (j = 0; j < 2; j++) -+ { -+ const struct sysdep_string *sysdep_string = -+ (const struct sysdep_string *) -+ ((char *) data -+ + W (domain->must_swap, -+ j == 0 -+ ? orig_sysdep_tab[i] -+ : trans_sysdep_tab[i])); -+ size_t need = 0; -+ const struct segment_pair *p = sysdep_string->segments; -+ -+ if (W (domain->must_swap, p->sysdepref) != SEGMENTS_END) -+ for (p = sysdep_string->segments;; p++) -+ { -+ nls_uint32 sysdepref; -+ -+ need += W (domain->must_swap, p->segsize); -+ -+ sysdepref = W (domain->must_swap, p->sysdepref); -+ if (sysdepref == SEGMENTS_END) -+ break; -+ -+ if (sysdepref >= n_sysdep_segments) -+ { -+ /* Invalid. */ -+ freea (sysdep_segment_values); -+ goto invalid; -+ } -+ -+ if (sysdep_segment_values[sysdepref] == NULL) -+ { -+ /* This particular string pair is invalid. */ -+ valid = 0; -+ break; -+ } -+ -+ need += strlen (sysdep_segment_values[sysdepref]); -+ } -+ -+ needs[j] = need; -+ if (!valid) -+ break; -+ } -+ -+ if (valid) -+ { -+ n_inmem_sysdep_strings++; -+ memneed += needs[0] + needs[1]; -+ } -+ } -+ memneed += 2 * n_inmem_sysdep_strings -+ * sizeof (struct sysdep_string_desc); -+ -+ if (n_inmem_sysdep_strings > 0) -+ { -+ unsigned int k; -+ -+ /* Allocate additional memory. */ -+ mem = (char *) malloc (memneed); -+ if (mem == NULL) -+ goto invalid; -+ -+ domain->malloced = mem; -+ inmem_orig_sysdep_tab = (struct sysdep_string_desc *) mem; -+ mem += n_inmem_sysdep_strings -+ * sizeof (struct sysdep_string_desc); -+ inmem_trans_sysdep_tab = (struct sysdep_string_desc *) mem; -+ mem += n_inmem_sysdep_strings -+ * sizeof (struct sysdep_string_desc); -+ inmem_hash_tab = (nls_uint32 *) mem; -+ mem += domain->hash_size * sizeof (nls_uint32); -+ -+ /* Compute the system dependent strings. */ -+ k = 0; -+ for (i = 0; i < n_sysdep_strings; i++) -+ { -+ int valid = 1; -+ -+ for (j = 0; j < 2; j++) -+ { -+ const struct sysdep_string *sysdep_string = -+ (const struct sysdep_string *) -+ ((char *) data -+ + W (domain->must_swap, -+ j == 0 -+ ? orig_sysdep_tab[i] -+ : trans_sysdep_tab[i])); -+ const struct segment_pair *p = -+ sysdep_string->segments; -+ -+ if (W (domain->must_swap, p->sysdepref) -+ != SEGMENTS_END) -+ for (p = sysdep_string->segments;; p++) -+ { -+ nls_uint32 sysdepref; -+ -+ sysdepref = -+ W (domain->must_swap, p->sysdepref); -+ if (sysdepref == SEGMENTS_END) -+ break; -+ -+ if (sysdep_segment_values[sysdepref] == NULL) -+ { -+ /* This particular string pair is -+ invalid. */ -+ valid = 0; -+ break; -+ } -+ } -+ -+ if (!valid) -+ break; -+ } -+ -+ if (valid) -+ { -+ for (j = 0; j < 2; j++) -+ { -+ const struct sysdep_string *sysdep_string = -+ (const struct sysdep_string *) -+ ((char *) data -+ + W (domain->must_swap, -+ j == 0 -+ ? orig_sysdep_tab[i] -+ : trans_sysdep_tab[i])); -+ const char *static_segments = -+ (char *) data -+ + W (domain->must_swap, sysdep_string->offset); -+ const struct segment_pair *p = -+ sysdep_string->segments; -+ -+ /* Concatenate the segments, and fill -+ inmem_orig_sysdep_tab[k] (for j == 0) and -+ inmem_trans_sysdep_tab[k] (for j == 1). */ -+ -+ struct sysdep_string_desc *inmem_tab_entry = -+ (j == 0 -+ ? inmem_orig_sysdep_tab -+ : inmem_trans_sysdep_tab) -+ + k; -+ -+ if (W (domain->must_swap, p->sysdepref) -+ == SEGMENTS_END) -+ { -+ /* Only one static segment. */ -+ inmem_tab_entry->length = -+ W (domain->must_swap, p->segsize); -+ inmem_tab_entry->pointer = static_segments; -+ } -+ else -+ { -+ inmem_tab_entry->pointer = mem; -+ -+ for (p = sysdep_string->segments;; p++) -+ { -+ nls_uint32 segsize = -+ W (domain->must_swap, p->segsize); -+ nls_uint32 sysdepref = -+ W (domain->must_swap, p->sysdepref); -+ size_t n; -+ -+ if (segsize > 0) -+ { -+ memcpy (mem, static_segments, segsize); -+ mem += segsize; -+ static_segments += segsize; -+ } -+ -+ if (sysdepref == SEGMENTS_END) -+ break; -+ -+ n = strlen (sysdep_segment_values[sysdepref]); -+ memcpy (mem, sysdep_segment_values[sysdepref], n); -+ mem += n; -+ } -+ -+ inmem_tab_entry->length = -+ mem - inmem_tab_entry->pointer; -+ } -+ } -+ -+ k++; -+ } -+ } -+ if (k != n_inmem_sysdep_strings) -+ abort (); -+ -+ /* Compute the augmented hash table. */ -+ for (i = 0; i < domain->hash_size; i++) -+ inmem_hash_tab[i] = -+ W (domain->must_swap_hash_tab, domain->hash_tab[i]); -+ for (i = 0; i < n_inmem_sysdep_strings; i++) -+ { -+ const char *msgid = inmem_orig_sysdep_tab[i].pointer; -+ 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)); -+ -+ for (;;) -+ { -+ if (inmem_hash_tab[idx] == 0) -+ { -+ /* Hash table entry is empty. Use it. */ -+ inmem_hash_tab[idx] = 1 + domain->nstrings + i; -+ break; -+ } -+ -+ if (idx >= domain->hash_size - incr) -+ idx -= domain->hash_size - incr; -+ else -+ idx += incr; -+ } -+ } -+ -+ domain->n_sysdep_strings = n_inmem_sysdep_strings; -+ domain->orig_sysdep_tab = inmem_orig_sysdep_tab; -+ domain->trans_sysdep_tab = inmem_trans_sysdep_tab; -+ -+ domain->hash_tab = inmem_hash_tab; -+ domain->must_swap_hash_tab = 0; -+ } -+ else -+ { -+ domain->n_sysdep_strings = 0; -+ domain->orig_sysdep_tab = NULL; -+ domain->trans_sysdep_tab = NULL; -+ } -+ -+ freea (sysdep_segment_values); -+ } -+ else -+ { -+ domain->n_sysdep_strings = 0; -+ domain->orig_sysdep_tab = NULL; -+ domain->trans_sysdep_tab = NULL; -+ } -+ } -+ break; -+ } - break; - default: - /* This is an invalid revision. */ -+ invalid: -+ /* This is an invalid .mo file. */ -+ if (domain->malloced) -+ free (domain->malloced); - #ifdef HAVE_MMAP - if (use_mmap) - munmap ((caddr_t) data, size); -@@ -347,154 +1385,28 @@ - return; - } - -- /* Now 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. */ --#ifdef _LIBC -- domain->conv = (__gconv_t) -1; --#else --# if HAVE_ICONV -- domain->conv = (iconv_t) -1; --# endif --#endif -- domain->conv_tab = NULL; -- nullentry = _nl_find_msg (domain_file, "", &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 (domain_file->domainbinding != NULL -- && domain_file->domainbinding->codeset != NULL) -- outcharset = domain_file->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 -- domain->conv = iconv_open (outcharset, charset); --# endif --# endif -- -- freea (charset); -- } --#endif /* _LIBC || HAVE_ICONV */ -- } -+ /* 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; -- } -+ EXTRACT_PLURAL_EXPRESSION (nullentry, &domain->plural, &domain->nplurals); - } - - - #ifdef _LIBC - void - internal_function --_nl_unload_domain (domain) -- struct loaded_domain *domain; -+_nl_unload_domain (struct loaded_domain *domain) - { -- if (domain->plural != &germanic_plural) -+ if (domain->plural != &__gettext_germanic_plural) - __gettext_free_exp (domain->plural); - -- if (domain->conv_tab != NULL && domain->conv_tab != (char **) -1) -- free (domain->conv_tab); -+ _nl_free_domain_conv (domain); - -- if (domain->conv != (__gconv_t) -1) -- __gconv_close (domain->conv); -+ if (domain->malloced) -+ free (domain->malloced); - - # ifdef _POSIX_MAPPED_FILES - if (domain->use_mmap) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/localcharset.c psmisc-20.2.works.clean/intl/localcharset.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/localcharset.c 2001-04-13 23:00:43.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/localcharset.c 2004-10-13 15:18:41.000000000 -0500 -@@ -1,6 +1,6 @@ - /* Determine a canonical name for the current locale's character encoding. - -- Copyright (C) 2000-2001 Free Software Foundation, Inc. -+ Copyright (C) 2000-2003 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 -@@ -17,12 +17,15 @@ - Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, - USA. */ - --/* Written by Bruno Haible <haible@clisp.cons.org>. */ -+/* Written by Bruno Haible <bruno@clisp.org>. */ - - #ifdef HAVE_CONFIG_H - # include <config.h> - #endif - -+/* Specification. */ -+#include "localcharset.h" -+ - #if HAVE_STDDEF_H - # include <stddef.h> - #endif -@@ -42,7 +45,12 @@ - # define WIN32 - #endif - --#ifndef WIN32 -+#if defined __EMX__ -+/* Assume EMX program runs on OS/2, even if compiled under DOS. */ -+# define OS2 -+#endif -+ -+#if !defined WIN32 - # if HAVE_LANGINFO_CODESET - # include <langinfo.h> - # else -@@ -50,10 +58,25 @@ - # include <locale.h> - # endif - # endif --#else /* WIN32 */ -+#elif defined WIN32 - # define WIN32_LEAN_AND_MEAN - # include <windows.h> - #endif -+#if defined OS2 -+# define INCL_DOS -+# include <os2.h> -+#endif -+ -+#if ENABLE_RELOCATABLE -+# include "relocatable.h" -+#else -+# define relocate(pathname) (pathname) -+#endif -+ -+#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ -+ /* Win32, OS/2, DOS */ -+# define ISSLASH(C) ((C) == '/' || (C) == '\\') -+#endif - - #ifndef DIRECTORY_SEPARATOR - # define DIRECTORY_SEPARATOR '/' -@@ -63,6 +86,11 @@ - # define ISSLASH(C) ((C) == DIRECTORY_SEPARATOR) - #endif - -+#if HAVE_DECL_GETC_UNLOCKED -+# undef getc -+# define getc getc_unlocked -+#endif -+ - /* The following static variable is declared 'volatile' to avoid a - possible multithread problem in the function get_charset_aliases. If we - are running in a threaded environment, and if two threads initialize -@@ -75,20 +103,20 @@ - /* 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 char * volatile charset_aliases; -+static const char * volatile charset_aliases; - - /* Return a pointer to the contents of the charset.alias file. */ - static const char * - get_charset_aliases () - { -- char *cp; -+ const char *cp; - - cp = charset_aliases; - if (cp == NULL) - { --#ifndef WIN32 -+#if !(defined VMS || defined WIN32) - FILE *fp; -- const char *dir = LIBDIR; -+ const char *dir = relocate (LIBDIR); - const char *base = "charset.alias"; - char *file_name; - -@@ -138,19 +166,19 @@ - continue; - } - ungetc (c, fp); -- if (fscanf(fp, "%50s %50s", buf1, buf2) < 2) -+ 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); -+ res_ptr = (char *) malloc (res_size + 1); - } - else - { - res_size += l1 + 1 + l2 + 1; -- res_ptr = realloc (res_ptr, res_size + 1); -+ res_ptr = (char *) realloc (res_ptr, res_size + 1); - } - if (res_ptr == NULL) - { -@@ -174,14 +202,54 @@ - if (file_name != NULL) - free (file_name); - --#else /* WIN32 */ -+#else -+ -+# if defined VMS -+ /* To avoid the troubles of an extra file charset.alias_vms in the -+ sources of many GNU packages, simply inline the aliases here. */ -+ /* The list of encodings is taken from the OpenVMS 7.3-1 documentation -+ "Compaq C Run-Time Library Reference Manual for OpenVMS systems" -+ section 10.7 "Handling Different Character Sets". */ -+ cp = "ISO8859-1" "\0" "ISO-8859-1" "\0" -+ "ISO8859-2" "\0" "ISO-8859-2" "\0" -+ "ISO8859-5" "\0" "ISO-8859-5" "\0" -+ "ISO8859-7" "\0" "ISO-8859-7" "\0" -+ "ISO8859-8" "\0" "ISO-8859-8" "\0" -+ "ISO8859-9" "\0" "ISO-8859-9" "\0" -+ /* Japanese */ -+ "eucJP" "\0" "EUC-JP" "\0" -+ "SJIS" "\0" "SHIFT_JIS" "\0" -+ "DECKANJI" "\0" "DEC-KANJI" "\0" -+ "SDECKANJI" "\0" "EUC-JP" "\0" -+ /* Chinese */ -+ "eucTW" "\0" "EUC-TW" "\0" -+ "DECHANYU" "\0" "DEC-HANYU" "\0" -+ "DECHANZI" "\0" "GB2312" "\0" -+ /* Korean */ -+ "DECKOREAN" "\0" "EUC-KR" "\0"; -+# endif - -+# if defined WIN32 - /* 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"; -+ "CP1361" "\0" "JOHAB" "\0" -+ "CP20127" "\0" "ASCII" "\0" -+ "CP20866" "\0" "KOI8-R" "\0" -+ "CP21866" "\0" "KOI8-RU" "\0" -+ "CP28591" "\0" "ISO-8859-1" "\0" -+ "CP28592" "\0" "ISO-8859-2" "\0" -+ "CP28593" "\0" "ISO-8859-3" "\0" -+ "CP28594" "\0" "ISO-8859-4" "\0" -+ "CP28595" "\0" "ISO-8859-5" "\0" -+ "CP28596" "\0" "ISO-8859-6" "\0" -+ "CP28597" "\0" "ISO-8859-7" "\0" -+ "CP28598" "\0" "ISO-8859-8" "\0" -+ "CP28599" "\0" "ISO-8859-9" "\0" -+ "CP28605" "\0" "ISO-8859-15" "\0"; -+# endif - #endif - - charset_aliases = cp; -@@ -205,7 +273,7 @@ - const char *codeset; - const char *aliases; - --#ifndef WIN32 -+#if !(defined WIN32 || defined OS2) - - # if HAVE_LANGINFO_CODESET - -@@ -242,14 +310,67 @@ - - # endif - --#else /* WIN32 */ -+#elif defined WIN32 - - static char buf[2 + 10 + 1]; - -- /* Win32 has a function returning the locale's codepage as a number. */ -+ /* Woe32 has a function returning the locale's codepage as a number. */ - sprintf (buf, "CP%u", GetACP ()); - codeset = buf; - -+#elif defined OS2 -+ -+ const char *locale; -+ static char buf[2 + 10 + 1]; -+ ULONG cp[3]; -+ ULONG cplen; -+ -+ /* Allow user to override the codeset, as set in the operating system, -+ with standard language environment variables. */ -+ locale = getenv ("LC_ALL"); -+ if (locale == NULL || locale[0] == '\0') -+ { -+ locale = getenv ("LC_CTYPE"); -+ if (locale == NULL || locale[0] == '\0') -+ locale = getenv ("LANG"); -+ } -+ if (locale != NULL && locale[0] != '\0') -+ { -+ /* If the locale name contains an encoding after the dot, return it. */ -+ const char *dot = strchr (locale, '.'); -+ -+ if (dot != NULL) -+ { -+ const char *modifier; -+ -+ dot++; -+ /* Look for the possible @... trailer and remove it, if any. */ -+ modifier = strchr (dot, '@'); -+ if (modifier == NULL) -+ return dot; -+ if (modifier - dot < sizeof (buf)) -+ { -+ memcpy (buf, dot, modifier - dot); -+ buf [modifier - dot] = '\0'; -+ return buf; -+ } -+ } -+ -+ /* Resolve through the charset.alias file. */ -+ codeset = locale; -+ } -+ else -+ { -+ /* OS/2 has a function returning the locale's codepage as a number. */ -+ if (DosQueryCp (sizeof (cp), cp, &cplen)) -+ codeset = ""; -+ else -+ { -+ sprintf (buf, "CP%u", cp[0]); -+ codeset = buf; -+ } -+ } -+ - #endif - - if (codeset == NULL) -@@ -267,5 +388,11 @@ - break; - } - -+ /* Don't return an empty string. GNU libc and GNU libiconv interpret -+ the empty string as denoting "the locale's character encoding", -+ thus GNU libiconv would call this function a second time. */ -+ if (codeset[0] == '\0') -+ codeset = "ASCII"; -+ - return codeset; - } -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/localcharset.h psmisc-20.2.works.clean/intl/localcharset.h ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/localcharset.h 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/localcharset.h 2004-10-13 15:18:41.000000000 -0500 -@@ -0,0 +1,42 @@ -+/* Determine a canonical name for the current locale's character encoding. -+ Copyright (C) 2000-2003 Free Software Foundation, Inc. -+ This file is part of the GNU CHARSET Library. -+ -+ This program is free software; you can redistribute it and/or modify it -+ under the terms of the GNU 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. */ -+ -+#ifndef _LOCALCHARSET_H -+#define _LOCALCHARSET_H -+ -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+ -+/* Determine the current locale's character encoding, and canonicalize it -+ into one of the canonical names listed in config.charset. -+ The result must not be freed; it is statically allocated. -+ If the canonical name cannot be determined, the result is a non-canonical -+ name. */ -+extern const char * locale_charset (void); -+ -+ -+#ifdef __cplusplus -+} -+#endif -+ -+ -+#endif /* _LOCALCHARSET_H */ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/locale.alias psmisc-20.2.works.clean/intl/locale.alias ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/locale.alias 2001-04-13 23:00:42.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/locale.alias 2004-10-13 15:18:41.000000000 -0500 -@@ -1,19 +1,20 @@ - # Locale name alias data base. --# Copyright (C) 1996,1997,1998,1999,2000,2001 Free Software Foundation, Inc. -+# Copyright (C) 1996-2001,2003 Free Software Foundation, Inc. - # --# This program is free software; you can redistribute it and/or modify --# it under the terms of the GNU General Public License as published by --# the Free Software Foundation; either version 2, or (at your option) -+# 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 General Public License for more details. -+# 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 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. -+# 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 format of this file is the same as for the corresponding file of - # the X Window System, which normally can be found in -@@ -28,8 +29,8 @@ - - # Packages using this file: - --bokmal no_NO.ISO-8859-1 --bokml no_NO.ISO-8859-1 -+bokmal nb_NO.ISO-8859-1 -+bokml nb_NO.ISO-8859-1 - catalan ca_ES.ISO-8859-1 - croatian hr_HR.ISO-8859-2 - czech cs_CZ.ISO-8859-2 -@@ -46,7 +47,7 @@ - galician gl_ES.ISO-8859-1 - german de_DE.ISO-8859-1 - greek el_GR.ISO-8859-7 --hebrew iw_IL.ISO-8859-8 -+hebrew he_IL.ISO-8859-8 - hrvatski hr_HR.ISO-8859-2 - hungarian hu_HU.ISO-8859-2 - icelandic is_IS.ISO-8859-1 -@@ -60,9 +61,9 @@ - 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 -+no_NO nb_NO.ISO-8859-1 -+no_NO.ISO-8859-1 nb_NO.ISO-8859-1 -+norwegian nb_NO.ISO-8859-1 - nynorsk nn_NO.ISO-8859-1 - polish pl_PL.ISO-8859-2 - portuguese pt_PT.ISO-8859-1 -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/localealias.c psmisc-20.2.works.clean/intl/localealias.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/localealias.c 2001-04-13 23:00:42.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/localealias.c 2004-10-13 15:18:41.000000000 -0500 -@@ -1,19 +1,20 @@ - /* Handle aliases for locale names. -- Copyright (C) 1995-1999, 2000, 2001 Free Software Foundation, Inc. -+ Copyright (C) 1995-1999, 2000-2001, 2003 Free Software Foundation, Inc. - -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2, or (at your option) -+ 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 General Public License for more details. -+ 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 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. */ -+ 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. */ - - /* Tell glibc's <string.h> to provide a prototype for mempcpy(). - This must come before <config.h> because <config.h> may include -@@ -28,36 +29,45 @@ - - #include <ctype.h> - #include <stdio.h> -+#if defined _LIBC || defined HAVE___FSETLOCKING -+# include <stdio_ext.h> -+#endif - #include <sys/types.h> - - #ifdef __GNUC__ -+# undef alloca - # define alloca __builtin_alloca - # define HAVE_ALLOCA 1 - #else --# if defined HAVE_ALLOCA_H || defined _LIBC --# include <alloca.h> -+# ifdef _MSC_VER -+# include <malloc.h> -+# define alloca _alloca - # else --# ifdef _AIX -- #pragma alloca -+# if defined HAVE_ALLOCA_H || defined _LIBC -+# include <alloca.h> - # else --# ifndef alloca -+# ifdef _AIX -+ #pragma alloca -+# else -+# ifndef alloca - char *alloca (); -+# endif - # endif - # endif - # endif - #endif - - #include <stdlib.h> -- - #include <string.h> --#if !HAVE_STRCHR && !defined _LIBC --# ifndef strchr --# define strchr index --# endif --#endif - - #include "gettextP.h" - -+#if ENABLE_RELOCATABLE -+# include "relocatable.h" -+#else -+# define relocate(pathname) (pathname) -+#endif -+ - /* @@ end of prolog @@ */ - - #ifdef _LIBC -@@ -70,6 +80,7 @@ - # define mempcpy __mempcpy - # endif - # define HAVE_MEMPCPY 1 -+# define HAVE___FSETLOCKING 1 - - /* We need locking here since we can be called from different places. */ - # include <bits/libc-lock.h> -@@ -81,6 +92,15 @@ - # define internal_function - #endif - -+/* Some optimizations for glibc. */ -+#ifdef _LIBC -+# define FEOF(fp) feof_unlocked (fp) -+# define FGETS(buf, n, fp) fgets_unlocked (buf, n, fp) -+#else -+# define FEOF(fp) feof (fp) -+# define FGETS(buf, n, fp) fgets (buf, n, fp) -+#endif -+ - /* For those losing systems which don't have `alloca' we have to add - some additional code emulating it. */ - #ifdef HAVE_ALLOCA -@@ -90,11 +110,11 @@ - # define freea(p) free (p) - #endif - --#if defined _LIBC_REENTRANT || defined HAVE_FGETS_UNLOCKED -+#if defined _LIBC_REENTRANT || HAVE_DECL_FGETS_UNLOCKED - # undef fgets - # define fgets(buf, len, s) fgets_unlocked (buf, len, s) - #endif --#if defined _LIBC_REENTRANT || defined HAVE_FEOF_UNLOCKED -+#if defined _LIBC_REENTRANT || HAVE_DECL_FEOF_UNLOCKED - # undef feof - # define feof(s) feof_unlocked (s) - #endif -@@ -107,27 +127,30 @@ - }; - - --static char *string_space; -+#ifndef _LIBC -+# define libc_freeres_ptr(decl) decl -+#endif -+ -+libc_freeres_ptr (static char *string_space); - static size_t string_space_act; - static size_t string_space_max; --static struct alias_map *map; -+libc_freeres_ptr (static struct alias_map *map); - 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)) -+static size_t read_alias_file (const char *fname, int fname_len) - internal_function; --static int extend_alias_table PARAMS ((void)); --static int alias_compare PARAMS ((const struct alias_map *map1, -- const struct alias_map *map2)); -+static int extend_alias_table (void); -+static int alias_compare (const struct alias_map *map1, -+ const struct alias_map *map2); - - - const char * --_nl_expand_alias (name) -- const char *name; -+_nl_expand_alias (const char *name) - { -- static const char *locale_alias_path = LOCALE_ALIAS_PATH; -+ static const char *locale_alias_path; - struct alias_map *retval; - const char *result = NULL; - size_t added; -@@ -136,6 +159,9 @@ - __libc_lock_lock (lock); - #endif - -+ if (locale_alias_path == NULL) -+ locale_alias_path = LOCALE_ALIAS_PATH; -+ - do - { - struct alias_map item; -@@ -145,8 +171,8 @@ - if (nmap > 0) - retval = (struct alias_map *) bsearch (&item, map, nmap, - sizeof (struct alias_map), -- (int (*) PARAMS ((const void *, -- const void *)) -+ (int (*) (const void *, -+ const void *) - ) alias_compare); - else - retval = NULL; -@@ -188,9 +214,7 @@ - - static size_t - internal_function --read_alias_file (fname, fname_len) -- const char *fname; -- int fname_len; -+read_alias_file (const char *fname, int fname_len) - { - FILE *fp; - char *full_fname; -@@ -206,58 +230,52 @@ - memcpy (&full_fname[fname_len], aliasfile, sizeof aliasfile); - #endif - -- fp = fopen (full_fname, "r"); -+ fp = fopen (relocate (full_fname), "r"); - freea (full_fname); - if (fp == NULL) - return 0; - -+#ifdef HAVE___FSETLOCKING -+ /* No threads present. */ -+ __fsetlocking (fp, FSETLOCKING_BYCALLER); -+#endif -+ - added = 0; -- while (!feof (fp)) -+ while (!FEOF (fp)) - { - /* It is a reasonable approach to use a fix buffer here because - a) we are only interested in the first two fields - b) these fields must be usable as file names and so must not - be that long -- */ -- char buf[BUFSIZ]; -+ We avoid a multi-kilobyte buffer here since this would use up -+ stack space which we might not have if the program ran out of -+ memory. */ -+ char buf[400]; - char *alias; - char *value; - char *cp; - -- if (fgets (buf, sizeof buf, fp) == NULL) -+ if (FGETS (buf, sizeof buf, fp) == NULL) - /* EOF reached. */ - break; - -- /* Possibly not the whole line fits into the buffer. Ignore -- the rest of the line. */ -- if (strchr (buf, '\n') == NULL) -- { -- char altbuf[BUFSIZ]; -- do -- if (fgets (altbuf, sizeof altbuf, fp) == NULL) -- /* Make sure the inner loop will be left. The outer loop -- will exit at the `feof' test. */ -- break; -- while (strchr (altbuf, '\n') == NULL); -- } -- - cp = buf; - /* Ignore leading white space. */ -- while (isspace (cp[0])) -+ while (isspace ((unsigned char) cp[0])) - ++cp; - - /* A leading '#' signals a comment line. */ - if (cp[0] != '\0' && cp[0] != '#') - { - alias = cp++; -- while (cp[0] != '\0' && !isspace (cp[0])) -+ while (cp[0] != '\0' && !isspace ((unsigned char) cp[0])) - ++cp; - /* Terminate alias name. */ - if (cp[0] != '\0') - *cp++ = '\0'; - - /* Now look for the beginning of the value. */ -- while (isspace (cp[0])) -+ while (isspace ((unsigned char) cp[0])) - ++cp; - - if (cp[0] != '\0') -@@ -266,7 +284,7 @@ - size_t value_len; - - value = cp++; -- while (cp[0] != '\0' && !isspace (cp[0])) -+ while (cp[0] != '\0' && !isspace ((unsigned char) cp[0])) - ++cp; - /* Terminate value. */ - if (cp[0] == '\n') -@@ -324,6 +342,14 @@ - ++added; - } - } -+ -+ /* Possibly not the whole line fits into the buffer. Ignore -+ the rest of the line. */ -+ while (strchr (buf, '\n') == NULL) -+ if (FGETS (buf, sizeof buf, fp) == NULL) -+ /* Make sure the inner loop will be left. The outer loop -+ will exit at the `feof' test. */ -+ break; - } - - /* Should we test for ferror()? I think we have to silently ignore -@@ -332,7 +358,7 @@ - - if (added > 0) - qsort (map, nmap, sizeof (struct alias_map), -- (int (*) PARAMS ((const void *, const void *))) alias_compare); -+ (int (*) (const void *, const void *)) alias_compare); - - return added; - } -@@ -357,23 +383,8 @@ - } - - --#ifdef _LIBC --static void __attribute__ ((unused)) --free_mem (void) --{ -- if (string_space != NULL) -- free (string_space); -- if (map != NULL) -- free (map); --} --text_set_element (__libc_subfreeres, free_mem); --#endif -- -- - static int --alias_compare (map1, map2) -- const struct alias_map *map1; -- const struct alias_map *map2; -+alias_compare (const struct alias_map *map1, const struct alias_map *map2) - { - #if defined _LIBC || defined HAVE_STRCASECMP - return strcasecmp (map1->alias, map2->alias); -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/localename.c psmisc-20.2.works.clean/intl/localename.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/localename.c 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/localename.c 2004-10-13 15:18:41.000000000 -0500 -@@ -0,0 +1,1142 @@ -+/* Determine the current selected locale. -+ Copyright (C) 1995-1999, 2000-2004 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 Ulrich Drepper <drepper@gnu.org>, 1995. */ -+/* Win32 code written by Tor Lillqvist <tml@iki.fi>. */ -+ -+#ifdef HAVE_CONFIG_H -+# include <config.h> -+#endif -+ -+#include <stdlib.h> -+#include <locale.h> -+ -+#if defined _WIN32 || defined __WIN32__ -+# undef WIN32 /* avoid warning on mingw32 */ -+# define WIN32 -+#endif -+ -+#ifdef WIN32 -+# define WIN32_LEAN_AND_MEAN -+# include <windows.h> -+/* List of language codes, sorted by value: -+ 0x01 LANG_ARABIC -+ 0x02 LANG_BULGARIAN -+ 0x03 LANG_CATALAN -+ 0x04 LANG_CHINESE -+ 0x05 LANG_CZECH -+ 0x06 LANG_DANISH -+ 0x07 LANG_GERMAN -+ 0x08 LANG_GREEK -+ 0x09 LANG_ENGLISH -+ 0x0a LANG_SPANISH -+ 0x0b LANG_FINNISH -+ 0x0c LANG_FRENCH -+ 0x0d LANG_HEBREW -+ 0x0e LANG_HUNGARIAN -+ 0x0f LANG_ICELANDIC -+ 0x10 LANG_ITALIAN -+ 0x11 LANG_JAPANESE -+ 0x12 LANG_KOREAN -+ 0x13 LANG_DUTCH -+ 0x14 LANG_NORWEGIAN -+ 0x15 LANG_POLISH -+ 0x16 LANG_PORTUGUESE -+ 0x17 LANG_RHAETO_ROMANCE -+ 0x18 LANG_ROMANIAN -+ 0x19 LANG_RUSSIAN -+ 0x1a LANG_CROATIAN == LANG_SERBIAN -+ 0x1b LANG_SLOVAK -+ 0x1c LANG_ALBANIAN -+ 0x1d LANG_SWEDISH -+ 0x1e LANG_THAI -+ 0x1f LANG_TURKISH -+ 0x20 LANG_URDU -+ 0x21 LANG_INDONESIAN -+ 0x22 LANG_UKRAINIAN -+ 0x23 LANG_BELARUSIAN -+ 0x24 LANG_SLOVENIAN -+ 0x25 LANG_ESTONIAN -+ 0x26 LANG_LATVIAN -+ 0x27 LANG_LITHUANIAN -+ 0x28 LANG_TAJIK -+ 0x29 LANG_FARSI -+ 0x2a LANG_VIETNAMESE -+ 0x2b LANG_ARMENIAN -+ 0x2c LANG_AZERI -+ 0x2d LANG_BASQUE -+ 0x2e LANG_SORBIAN -+ 0x2f LANG_MACEDONIAN -+ 0x30 LANG_SUTU -+ 0x31 LANG_TSONGA -+ 0x32 LANG_TSWANA -+ 0x33 LANG_VENDA -+ 0x34 LANG_XHOSA -+ 0x35 LANG_ZULU -+ 0x36 LANG_AFRIKAANS -+ 0x37 LANG_GEORGIAN -+ 0x38 LANG_FAEROESE -+ 0x39 LANG_HINDI -+ 0x3a LANG_MALTESE -+ 0x3b LANG_SAAMI -+ 0x3c LANG_GAELIC -+ 0x3d LANG_YIDDISH -+ 0x3e LANG_MALAY -+ 0x3f LANG_KAZAK -+ 0x40 LANG_KYRGYZ -+ 0x41 LANG_SWAHILI -+ 0x42 LANG_TURKMEN -+ 0x43 LANG_UZBEK -+ 0x44 LANG_TATAR -+ 0x45 LANG_BENGALI -+ 0x46 LANG_PUNJABI -+ 0x47 LANG_GUJARATI -+ 0x48 LANG_ORIYA -+ 0x49 LANG_TAMIL -+ 0x4a LANG_TELUGU -+ 0x4b LANG_KANNADA -+ 0x4c LANG_MALAYALAM -+ 0x4d LANG_ASSAMESE -+ 0x4e LANG_MARATHI -+ 0x4f LANG_SANSKRIT -+ 0x50 LANG_MONGOLIAN -+ 0x51 LANG_TIBETAN -+ 0x52 LANG_WELSH -+ 0x53 LANG_CAMBODIAN -+ 0x54 LANG_LAO -+ 0x55 LANG_BURMESE -+ 0x56 LANG_GALICIAN -+ 0x57 LANG_KONKANI -+ 0x58 LANG_MANIPURI -+ 0x59 LANG_SINDHI -+ 0x5a LANG_SYRIAC -+ 0x5b LANG_SINHALESE -+ 0x5c LANG_CHEROKEE -+ 0x5d LANG_INUKTITUT -+ 0x5e LANG_AMHARIC -+ 0x5f LANG_TAMAZIGHT -+ 0x60 LANG_KASHMIRI -+ 0x61 LANG_NEPALI -+ 0x62 LANG_FRISIAN -+ 0x63 LANG_PASHTO -+ 0x64 LANG_TAGALOG -+ 0x65 LANG_DIVEHI -+ 0x66 LANG_EDO -+ 0x67 LANG_FULFULDE -+ 0x68 LANG_HAUSA -+ 0x69 LANG_IBIBIO -+ 0x6a LANG_YORUBA -+ 0x70 LANG_IGBO -+ 0x71 LANG_KANURI -+ 0x72 LANG_OROMO -+ 0x73 LANG_TIGRINYA -+ 0x74 LANG_GUARANI -+ 0x75 LANG_HAWAIIAN -+ 0x76 LANG_LATIN -+ 0x77 LANG_SOMALI -+ 0x78 LANG_YI -+ 0x79 LANG_PAPIAMENTU -+*/ -+/* Mingw headers don't have latest language and sublanguage codes. */ -+# ifndef LANG_AFRIKAANS -+# define LANG_AFRIKAANS 0x36 -+# endif -+# ifndef LANG_ALBANIAN -+# define LANG_ALBANIAN 0x1c -+# endif -+# ifndef LANG_AMHARIC -+# define LANG_AMHARIC 0x5e -+# endif -+# ifndef LANG_ARABIC -+# define LANG_ARABIC 0x01 -+# endif -+# ifndef LANG_ARMENIAN -+# define LANG_ARMENIAN 0x2b -+# endif -+# ifndef LANG_ASSAMESE -+# define LANG_ASSAMESE 0x4d -+# endif -+# ifndef LANG_AZERI -+# define LANG_AZERI 0x2c -+# endif -+# ifndef LANG_BASQUE -+# define LANG_BASQUE 0x2d -+# endif -+# ifndef LANG_BELARUSIAN -+# define LANG_BELARUSIAN 0x23 -+# endif -+# ifndef LANG_BENGALI -+# define LANG_BENGALI 0x45 -+# endif -+# ifndef LANG_BURMESE -+# define LANG_BURMESE 0x55 -+# endif -+# ifndef LANG_CAMBODIAN -+# define LANG_CAMBODIAN 0x53 -+# endif -+# ifndef LANG_CATALAN -+# define LANG_CATALAN 0x03 -+# endif -+# ifndef LANG_CHEROKEE -+# define LANG_CHEROKEE 0x5c -+# endif -+# ifndef LANG_DIVEHI -+# define LANG_DIVEHI 0x65 -+# endif -+# ifndef LANG_EDO -+# define LANG_EDO 0x66 -+# endif -+# ifndef LANG_ESTONIAN -+# define LANG_ESTONIAN 0x25 -+# endif -+# ifndef LANG_FAEROESE -+# define LANG_FAEROESE 0x38 -+# endif -+# ifndef LANG_FARSI -+# define LANG_FARSI 0x29 -+# endif -+# ifndef LANG_FRISIAN -+# define LANG_FRISIAN 0x62 -+# endif -+# ifndef LANG_FULFULDE -+# define LANG_FULFULDE 0x67 -+# endif -+# ifndef LANG_GAELIC -+# define LANG_GAELIC 0x3c -+# endif -+# ifndef LANG_GALICIAN -+# define LANG_GALICIAN 0x56 -+# endif -+# ifndef LANG_GEORGIAN -+# define LANG_GEORGIAN 0x37 -+# endif -+# ifndef LANG_GUARANI -+# define LANG_GUARANI 0x74 -+# endif -+# ifndef LANG_GUJARATI -+# define LANG_GUJARATI 0x47 -+# endif -+# ifndef LANG_HAUSA -+# define LANG_HAUSA 0x68 -+# endif -+# ifndef LANG_HAWAIIAN -+# define LANG_HAWAIIAN 0x75 -+# endif -+# ifndef LANG_HEBREW -+# define LANG_HEBREW 0x0d -+# endif -+# ifndef LANG_HINDI -+# define LANG_HINDI 0x39 -+# endif -+# ifndef LANG_IBIBIO -+# define LANG_IBIBIO 0x69 -+# endif -+# ifndef LANG_IGBO -+# define LANG_IGBO 0x70 -+# endif -+# ifndef LANG_INDONESIAN -+# define LANG_INDONESIAN 0x21 -+# endif -+# ifndef LANG_INUKTITUT -+# define LANG_INUKTITUT 0x5d -+# endif -+# ifndef LANG_KANNADA -+# define LANG_KANNADA 0x4b -+# endif -+# ifndef LANG_KANURI -+# define LANG_KANURI 0x71 -+# endif -+# ifndef LANG_KASHMIRI -+# define LANG_KASHMIRI 0x60 -+# endif -+# ifndef LANG_KAZAK -+# define LANG_KAZAK 0x3f -+# endif -+# ifndef LANG_KONKANI -+# define LANG_KONKANI 0x57 -+# endif -+# ifndef LANG_KYRGYZ -+# define LANG_KYRGYZ 0x40 -+# endif -+# ifndef LANG_LAO -+# define LANG_LAO 0x54 -+# endif -+# ifndef LANG_LATIN -+# define LANG_LATIN 0x76 -+# endif -+# ifndef LANG_LATVIAN -+# define LANG_LATVIAN 0x26 -+# endif -+# ifndef LANG_LITHUANIAN -+# define LANG_LITHUANIAN 0x27 -+# endif -+# ifndef LANG_MACEDONIAN -+# define LANG_MACEDONIAN 0x2f -+# endif -+# ifndef LANG_MALAY -+# define LANG_MALAY 0x3e -+# endif -+# ifndef LANG_MALAYALAM -+# define LANG_MALAYALAM 0x4c -+# endif -+# ifndef LANG_MALTESE -+# define LANG_MALTESE 0x3a -+# endif -+# ifndef LANG_MANIPURI -+# define LANG_MANIPURI 0x58 -+# endif -+# ifndef LANG_MARATHI -+# define LANG_MARATHI 0x4e -+# endif -+# ifndef LANG_MONGOLIAN -+# define LANG_MONGOLIAN 0x50 -+# endif -+# ifndef LANG_NEPALI -+# define LANG_NEPALI 0x61 -+# endif -+# ifndef LANG_ORIYA -+# define LANG_ORIYA 0x48 -+# endif -+# ifndef LANG_OROMO -+# define LANG_OROMO 0x72 -+# endif -+# ifndef LANG_PAPIAMENTU -+# define LANG_PAPIAMENTU 0x79 -+# endif -+# ifndef LANG_PASHTO -+# define LANG_PASHTO 0x63 -+# endif -+# ifndef LANG_PUNJABI -+# define LANG_PUNJABI 0x46 -+# endif -+# ifndef LANG_RHAETO_ROMANCE -+# define LANG_RHAETO_ROMANCE 0x17 -+# endif -+# ifndef LANG_SAAMI -+# define LANG_SAAMI 0x3b -+# endif -+# ifndef LANG_SANSKRIT -+# define LANG_SANSKRIT 0x4f -+# endif -+# ifndef LANG_SERBIAN -+# define LANG_SERBIAN 0x1a -+# endif -+# ifndef LANG_SINDHI -+# define LANG_SINDHI 0x59 -+# endif -+# ifndef LANG_SINHALESE -+# define LANG_SINHALESE 0x5b -+# endif -+# ifndef LANG_SLOVAK -+# define LANG_SLOVAK 0x1b -+# endif -+# ifndef LANG_SOMALI -+# define LANG_SOMALI 0x77 -+# endif -+# ifndef LANG_SORBIAN -+# define LANG_SORBIAN 0x2e -+# endif -+# ifndef LANG_SUTU -+# define LANG_SUTU 0x30 -+# endif -+# ifndef LANG_SWAHILI -+# define LANG_SWAHILI 0x41 -+# endif -+# ifndef LANG_SYRIAC -+# define LANG_SYRIAC 0x5a -+# endif -+# ifndef LANG_TAGALOG -+# define LANG_TAGALOG 0x64 -+# endif -+# ifndef LANG_TAJIK -+# define LANG_TAJIK 0x28 -+# endif -+# ifndef LANG_TAMAZIGHT -+# define LANG_TAMAZIGHT 0x5f -+# endif -+# ifndef LANG_TAMIL -+# define LANG_TAMIL 0x49 -+# endif -+# ifndef LANG_TATAR -+# define LANG_TATAR 0x44 -+# endif -+# ifndef LANG_TELUGU -+# define LANG_TELUGU 0x4a -+# endif -+# ifndef LANG_THAI -+# define LANG_THAI 0x1e -+# endif -+# ifndef LANG_TIBETAN -+# define LANG_TIBETAN 0x51 -+# endif -+# ifndef LANG_TIGRINYA -+# define LANG_TIGRINYA 0x73 -+# endif -+# ifndef LANG_TSONGA -+# define LANG_TSONGA 0x31 -+# endif -+# ifndef LANG_TSWANA -+# define LANG_TSWANA 0x32 -+# endif -+# ifndef LANG_TURKMEN -+# define LANG_TURKMEN 0x42 -+# endif -+# ifndef LANG_UKRAINIAN -+# define LANG_UKRAINIAN 0x22 -+# endif -+# ifndef LANG_URDU -+# define LANG_URDU 0x20 -+# endif -+# ifndef LANG_UZBEK -+# define LANG_UZBEK 0x43 -+# endif -+# ifndef LANG_VENDA -+# define LANG_VENDA 0x33 -+# endif -+# ifndef LANG_VIETNAMESE -+# define LANG_VIETNAMESE 0x2a -+# endif -+# ifndef LANG_WELSH -+# define LANG_WELSH 0x52 -+# endif -+# ifndef LANG_XHOSA -+# define LANG_XHOSA 0x34 -+# endif -+# ifndef LANG_YI -+# define LANG_YI 0x78 -+# endif -+# ifndef LANG_YIDDISH -+# define LANG_YIDDISH 0x3d -+# endif -+# ifndef LANG_YORUBA -+# define LANG_YORUBA 0x6a -+# endif -+# ifndef LANG_ZULU -+# define LANG_ZULU 0x35 -+# endif -+# ifndef SUBLANG_ARABIC_SAUDI_ARABIA -+# define SUBLANG_ARABIC_SAUDI_ARABIA 0x01 -+# endif -+# ifndef SUBLANG_ARABIC_IRAQ -+# define SUBLANG_ARABIC_IRAQ 0x02 -+# endif -+# ifndef SUBLANG_ARABIC_EGYPT -+# define SUBLANG_ARABIC_EGYPT 0x03 -+# endif -+# ifndef SUBLANG_ARABIC_LIBYA -+# define SUBLANG_ARABIC_LIBYA 0x04 -+# endif -+# ifndef SUBLANG_ARABIC_ALGERIA -+# define SUBLANG_ARABIC_ALGERIA 0x05 -+# endif -+# ifndef SUBLANG_ARABIC_MOROCCO -+# define SUBLANG_ARABIC_MOROCCO 0x06 -+# endif -+# ifndef SUBLANG_ARABIC_TUNISIA -+# define SUBLANG_ARABIC_TUNISIA 0x07 -+# endif -+# ifndef SUBLANG_ARABIC_OMAN -+# define SUBLANG_ARABIC_OMAN 0x08 -+# endif -+# ifndef SUBLANG_ARABIC_YEMEN -+# define SUBLANG_ARABIC_YEMEN 0x09 -+# endif -+# ifndef SUBLANG_ARABIC_SYRIA -+# define SUBLANG_ARABIC_SYRIA 0x0a -+# endif -+# ifndef SUBLANG_ARABIC_JORDAN -+# define SUBLANG_ARABIC_JORDAN 0x0b -+# endif -+# ifndef SUBLANG_ARABIC_LEBANON -+# define SUBLANG_ARABIC_LEBANON 0x0c -+# endif -+# ifndef SUBLANG_ARABIC_KUWAIT -+# define SUBLANG_ARABIC_KUWAIT 0x0d -+# endif -+# ifndef SUBLANG_ARABIC_UAE -+# define SUBLANG_ARABIC_UAE 0x0e -+# endif -+# ifndef SUBLANG_ARABIC_BAHRAIN -+# define SUBLANG_ARABIC_BAHRAIN 0x0f -+# endif -+# ifndef SUBLANG_ARABIC_QATAR -+# define SUBLANG_ARABIC_QATAR 0x10 -+# endif -+# ifndef SUBLANG_AZERI_LATIN -+# define SUBLANG_AZERI_LATIN 0x01 -+# endif -+# ifndef SUBLANG_AZERI_CYRILLIC -+# define SUBLANG_AZERI_CYRILLIC 0x02 -+# endif -+# ifndef SUBLANG_BENGALI_INDIA -+# define SUBLANG_BENGALI_INDIA 0x00 -+# endif -+# ifndef SUBLANG_BENGALI_BANGLADESH -+# define SUBLANG_BENGALI_BANGLADESH 0x01 -+# endif -+# ifndef SUBLANG_CHINESE_MACAU -+# define SUBLANG_CHINESE_MACAU 0x05 -+# endif -+# ifndef SUBLANG_ENGLISH_SOUTH_AFRICA -+# define SUBLANG_ENGLISH_SOUTH_AFRICA 0x07 -+# endif -+# ifndef SUBLANG_ENGLISH_JAMAICA -+# define SUBLANG_ENGLISH_JAMAICA 0x08 -+# endif -+# ifndef SUBLANG_ENGLISH_CARIBBEAN -+# define SUBLANG_ENGLISH_CARIBBEAN 0x09 -+# endif -+# ifndef SUBLANG_ENGLISH_BELIZE -+# define SUBLANG_ENGLISH_BELIZE 0x0a -+# endif -+# ifndef SUBLANG_ENGLISH_TRINIDAD -+# define SUBLANG_ENGLISH_TRINIDAD 0x0b -+# endif -+# ifndef SUBLANG_ENGLISH_ZIMBABWE -+# define SUBLANG_ENGLISH_ZIMBABWE 0x0c -+# endif -+# ifndef SUBLANG_ENGLISH_PHILIPPINES -+# define SUBLANG_ENGLISH_PHILIPPINES 0x0d -+# endif -+# ifndef SUBLANG_ENGLISH_INDONESIA -+# define SUBLANG_ENGLISH_INDONESIA 0x0e -+# endif -+# ifndef SUBLANG_ENGLISH_HONGKONG -+# define SUBLANG_ENGLISH_HONGKONG 0x0f -+# endif -+# ifndef SUBLANG_ENGLISH_INDIA -+# define SUBLANG_ENGLISH_INDIA 0x10 -+# endif -+# ifndef SUBLANG_ENGLISH_MALAYSIA -+# define SUBLANG_ENGLISH_MALAYSIA 0x11 -+# endif -+# ifndef SUBLANG_ENGLISH_SINGAPORE -+# define SUBLANG_ENGLISH_SINGAPORE 0x12 -+# endif -+# ifndef SUBLANG_FRENCH_LUXEMBOURG -+# define SUBLANG_FRENCH_LUXEMBOURG 0x05 -+# endif -+# ifndef SUBLANG_FRENCH_MONACO -+# define SUBLANG_FRENCH_MONACO 0x06 -+# endif -+# ifndef SUBLANG_FRENCH_WESTINDIES -+# define SUBLANG_FRENCH_WESTINDIES 0x07 -+# endif -+# ifndef SUBLANG_FRENCH_REUNION -+# define SUBLANG_FRENCH_REUNION 0x08 -+# endif -+# ifndef SUBLANG_FRENCH_CONGO -+# define SUBLANG_FRENCH_CONGO 0x09 -+# endif -+# ifndef SUBLANG_FRENCH_SENEGAL -+# define SUBLANG_FRENCH_SENEGAL 0x0a -+# endif -+# ifndef SUBLANG_FRENCH_CAMEROON -+# define SUBLANG_FRENCH_CAMEROON 0x0b -+# endif -+# ifndef SUBLANG_FRENCH_COTEDIVOIRE -+# define SUBLANG_FRENCH_COTEDIVOIRE 0x0c -+# endif -+# ifndef SUBLANG_FRENCH_MALI -+# define SUBLANG_FRENCH_MALI 0x0d -+# endif -+# ifndef SUBLANG_FRENCH_MOROCCO -+# define SUBLANG_FRENCH_MOROCCO 0x0e -+# endif -+# ifndef SUBLANG_FRENCH_HAITI -+# define SUBLANG_FRENCH_HAITI 0x0f -+# endif -+# ifndef SUBLANG_GERMAN_LUXEMBOURG -+# define SUBLANG_GERMAN_LUXEMBOURG 0x04 -+# endif -+# ifndef SUBLANG_GERMAN_LIECHTENSTEIN -+# define SUBLANG_GERMAN_LIECHTENSTEIN 0x05 -+# endif -+# ifndef SUBLANG_KASHMIRI_INDIA -+# define SUBLANG_KASHMIRI_INDIA 0x02 -+# endif -+# ifndef SUBLANG_MALAY_MALAYSIA -+# define SUBLANG_MALAY_MALAYSIA 0x01 -+# endif -+# ifndef SUBLANG_MALAY_BRUNEI_DARUSSALAM -+# define SUBLANG_MALAY_BRUNEI_DARUSSALAM 0x02 -+# endif -+# ifndef SUBLANG_NEPALI_INDIA -+# define SUBLANG_NEPALI_INDIA 0x02 -+# endif -+# ifndef SUBLANG_PUNJABI_INDIA -+# define SUBLANG_PUNJABI_INDIA 0x00 -+# endif -+# ifndef SUBLANG_PUNJABI_PAKISTAN -+# define SUBLANG_PUNJABI_PAKISTAN 0x01 -+# endif -+# ifndef SUBLANG_ROMANIAN_ROMANIA -+# define SUBLANG_ROMANIAN_ROMANIA 0x00 -+# endif -+# ifndef SUBLANG_ROMANIAN_MOLDOVA -+# define SUBLANG_ROMANIAN_MOLDOVA 0x01 -+# endif -+# ifndef SUBLANG_SERBIAN_LATIN -+# define SUBLANG_SERBIAN_LATIN 0x02 -+# endif -+# ifndef SUBLANG_SERBIAN_CYRILLIC -+# define SUBLANG_SERBIAN_CYRILLIC 0x03 -+# endif -+# ifndef SUBLANG_SINDHI_INDIA -+# define SUBLANG_SINDHI_INDIA 0x00 -+# endif -+# ifndef SUBLANG_SINDHI_PAKISTAN -+# define SUBLANG_SINDHI_PAKISTAN 0x01 -+# endif -+# ifndef SUBLANG_SPANISH_GUATEMALA -+# define SUBLANG_SPANISH_GUATEMALA 0x04 -+# endif -+# ifndef SUBLANG_SPANISH_COSTA_RICA -+# define SUBLANG_SPANISH_COSTA_RICA 0x05 -+# endif -+# ifndef SUBLANG_SPANISH_PANAMA -+# define SUBLANG_SPANISH_PANAMA 0x06 -+# endif -+# ifndef SUBLANG_SPANISH_DOMINICAN_REPUBLIC -+# define SUBLANG_SPANISH_DOMINICAN_REPUBLIC 0x07 -+# endif -+# ifndef SUBLANG_SPANISH_VENEZUELA -+# define SUBLANG_SPANISH_VENEZUELA 0x08 -+# endif -+# ifndef SUBLANG_SPANISH_COLOMBIA -+# define SUBLANG_SPANISH_COLOMBIA 0x09 -+# endif -+# ifndef SUBLANG_SPANISH_PERU -+# define SUBLANG_SPANISH_PERU 0x0a -+# endif -+# ifndef SUBLANG_SPANISH_ARGENTINA -+# define SUBLANG_SPANISH_ARGENTINA 0x0b -+# endif -+# ifndef SUBLANG_SPANISH_ECUADOR -+# define SUBLANG_SPANISH_ECUADOR 0x0c -+# endif -+# ifndef SUBLANG_SPANISH_CHILE -+# define SUBLANG_SPANISH_CHILE 0x0d -+# endif -+# ifndef SUBLANG_SPANISH_URUGUAY -+# define SUBLANG_SPANISH_URUGUAY 0x0e -+# endif -+# ifndef SUBLANG_SPANISH_PARAGUAY -+# define SUBLANG_SPANISH_PARAGUAY 0x0f -+# endif -+# ifndef SUBLANG_SPANISH_BOLIVIA -+# define SUBLANG_SPANISH_BOLIVIA 0x10 -+# endif -+# ifndef SUBLANG_SPANISH_EL_SALVADOR -+# define SUBLANG_SPANISH_EL_SALVADOR 0x11 -+# endif -+# ifndef SUBLANG_SPANISH_HONDURAS -+# define SUBLANG_SPANISH_HONDURAS 0x12 -+# endif -+# ifndef SUBLANG_SPANISH_NICARAGUA -+# define SUBLANG_SPANISH_NICARAGUA 0x13 -+# endif -+# ifndef SUBLANG_SPANISH_PUERTO_RICO -+# define SUBLANG_SPANISH_PUERTO_RICO 0x14 -+# endif -+# ifndef SUBLANG_SWEDISH_FINLAND -+# define SUBLANG_SWEDISH_FINLAND 0x02 -+# endif -+# ifndef SUBLANG_TAMAZIGHT_ARABIC -+# define SUBLANG_TAMAZIGHT_ARABIC 0x01 -+# endif -+# ifndef SUBLANG_TAMAZIGHT_LATIN -+# define SUBLANG_TAMAZIGHT_LATIN 0x02 -+# endif -+# ifndef SUBLANG_TIGRINYA_ETHIOPIA -+# define SUBLANG_TIGRINYA_ETHIOPIA 0x00 -+# endif -+# ifndef SUBLANG_TIGRINYA_ERITREA -+# define SUBLANG_TIGRINYA_ERITREA 0x01 -+# endif -+# ifndef SUBLANG_URDU_PAKISTAN -+# define SUBLANG_URDU_PAKISTAN 0x01 -+# endif -+# ifndef SUBLANG_URDU_INDIA -+# define SUBLANG_URDU_INDIA 0x02 -+# endif -+# ifndef SUBLANG_UZBEK_LATIN -+# define SUBLANG_UZBEK_LATIN 0x01 -+# endif -+# ifndef SUBLANG_UZBEK_CYRILLIC -+# define SUBLANG_UZBEK_CYRILLIC 0x02 -+# endif -+#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 -+ -+/* Determine the current locale's name, and canonicalize it into XPG syntax -+ language[_territory[.codeset]][@modifier] -+ The codeset part in the result is not reliable; the locale_charset() -+ should be used for codeset information instead. -+ The result must not be freed; it is statically allocated. */ -+ -+const char * -+_nl_locale_name (int category, const char *categoryname) -+{ -+ const char *retval; -+ -+#ifndef WIN32 -+ -+ /* Use 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 -+ 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. */ -+ retval = "C"; -+ } -+ } -+# endif -+ -+ return retval; -+ -+#else /* WIN32 */ -+ -+ /* Return an XPG style locale name language[_territory][@modifier]. -+ Don't even bother determining the codeset; it's not useful in this -+ context, because message catalogs are not specific to a single -+ codeset. */ -+ -+ LCID lcid; -+ LANGID langid; -+ int primary, sub; -+ -+ /* Let the user override the system settings through environment -+ variables, as on POSIX systems. */ -+ retval = getenv ("LC_ALL"); -+ if (retval != NULL && retval[0] != '\0') -+ return retval; -+ retval = getenv (categoryname); -+ if (retval != NULL && retval[0] != '\0') -+ return retval; -+ retval = getenv ("LANG"); -+ if (retval != NULL && retval[0] != '\0') -+ return retval; -+ -+ /* Use native Win32 API locale ID. */ -+ lcid = GetThreadLocale (); -+ -+ /* Strip off the sorting rules, keep only the language part. */ -+ langid = LANGIDFROMLCID (lcid); -+ -+ /* Split into language and territory part. */ -+ primary = PRIMARYLANGID (langid); -+ sub = SUBLANGID (langid); -+ -+ /* Dispatch on language. -+ See also http://www.unicode.org/unicode/onlinedat/languages.html . -+ For details about languages, see http://www.ethnologue.com/ . */ -+ switch (primary) -+ { -+ case LANG_AFRIKAANS: return "af_ZA"; -+ case LANG_ALBANIAN: return "sq_AL"; -+ case LANG_AMHARIC: return "am_ET"; -+ case LANG_ARABIC: -+ switch (sub) -+ { -+ case SUBLANG_ARABIC_SAUDI_ARABIA: return "ar_SA"; -+ case SUBLANG_ARABIC_IRAQ: return "ar_IQ"; -+ case SUBLANG_ARABIC_EGYPT: return "ar_EG"; -+ case SUBLANG_ARABIC_LIBYA: return "ar_LY"; -+ case SUBLANG_ARABIC_ALGERIA: return "ar_DZ"; -+ case SUBLANG_ARABIC_MOROCCO: return "ar_MA"; -+ case SUBLANG_ARABIC_TUNISIA: return "ar_TN"; -+ case SUBLANG_ARABIC_OMAN: return "ar_OM"; -+ case SUBLANG_ARABIC_YEMEN: return "ar_YE"; -+ case SUBLANG_ARABIC_SYRIA: return "ar_SY"; -+ case SUBLANG_ARABIC_JORDAN: return "ar_JO"; -+ case SUBLANG_ARABIC_LEBANON: return "ar_LB"; -+ case SUBLANG_ARABIC_KUWAIT: return "ar_KW"; -+ case SUBLANG_ARABIC_UAE: return "ar_AE"; -+ case SUBLANG_ARABIC_BAHRAIN: return "ar_BH"; -+ case SUBLANG_ARABIC_QATAR: return "ar_QA"; -+ } -+ return "ar"; -+ case LANG_ARMENIAN: return "hy_AM"; -+ case LANG_ASSAMESE: return "as_IN"; -+ case LANG_AZERI: -+ switch (sub) -+ { -+ /* FIXME: Adjust this when Azerbaijani locales appear on Unix. */ -+ case SUBLANG_AZERI_LATIN: return "az_AZ@latin"; -+ case SUBLANG_AZERI_CYRILLIC: return "az_AZ@cyrillic"; -+ } -+ return "az"; -+ case LANG_BASQUE: -+ return "eu"; /* Ambiguous: could be "eu_ES" or "eu_FR". */ -+ case LANG_BELARUSIAN: return "be_BY"; -+ case LANG_BENGALI: -+ switch (sub) -+ { -+ case SUBLANG_BENGALI_INDIA: return "bn_IN"; -+ case SUBLANG_BENGALI_BANGLADESH: return "bn_BD"; -+ } -+ return "bn"; -+ case LANG_BULGARIAN: return "bg_BG"; -+ case LANG_BURMESE: return "my_MM"; -+ case LANG_CAMBODIAN: return "km_KH"; -+ case LANG_CATALAN: return "ca_ES"; -+ case LANG_CHEROKEE: return "chr_US"; -+ case LANG_CHINESE: -+ switch (sub) -+ { -+ case SUBLANG_CHINESE_TRADITIONAL: return "zh_TW"; -+ case SUBLANG_CHINESE_SIMPLIFIED: return "zh_CN"; -+ case SUBLANG_CHINESE_HONGKONG: return "zh_HK"; -+ case SUBLANG_CHINESE_SINGAPORE: return "zh_SG"; -+ case SUBLANG_CHINESE_MACAU: return "zh_MO"; -+ } -+ return "zh"; -+ case LANG_CROATIAN: /* LANG_CROATIAN == LANG_SERBIAN -+ * What used to be called Serbo-Croatian -+ * should really now be two separate -+ * languages because of political reasons. -+ * (Says tml, who knows nothing about Serbian -+ * or Croatian.) -+ * (I can feel those flames coming already.) -+ */ -+ switch (sub) -+ { -+ case SUBLANG_DEFAULT: return "hr_HR"; -+ case SUBLANG_SERBIAN_LATIN: return "sr_CS"; -+ case SUBLANG_SERBIAN_CYRILLIC: return "sr_CS@cyrillic"; -+ } -+ return "hr"; -+ case LANG_CZECH: return "cs_CZ"; -+ case LANG_DANISH: return "da_DK"; -+ case LANG_DIVEHI: return "dv_MV"; -+ case LANG_DUTCH: -+ switch (sub) -+ { -+ case SUBLANG_DUTCH: return "nl_NL"; -+ case SUBLANG_DUTCH_BELGIAN: /* FLEMISH, VLAAMS */ return "nl_BE"; -+ } -+ return "nl"; -+ case LANG_EDO: return "bin_NG"; -+ case LANG_ENGLISH: -+ switch (sub) -+ { -+ /* SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. Heh. I thought -+ * English was the language spoken in England. -+ * Oh well. -+ */ -+ case SUBLANG_ENGLISH_US: return "en_US"; -+ case SUBLANG_ENGLISH_UK: return "en_GB"; -+ case SUBLANG_ENGLISH_AUS: return "en_AU"; -+ case SUBLANG_ENGLISH_CAN: return "en_CA"; -+ case SUBLANG_ENGLISH_NZ: return "en_NZ"; -+ case SUBLANG_ENGLISH_EIRE: return "en_IE"; -+ case SUBLANG_ENGLISH_SOUTH_AFRICA: return "en_ZA"; -+ case SUBLANG_ENGLISH_JAMAICA: return "en_JM"; -+ case SUBLANG_ENGLISH_CARIBBEAN: return "en_GD"; /* Grenada? */ -+ case SUBLANG_ENGLISH_BELIZE: return "en_BZ"; -+ case SUBLANG_ENGLISH_TRINIDAD: return "en_TT"; -+ case SUBLANG_ENGLISH_ZIMBABWE: return "en_ZW"; -+ case SUBLANG_ENGLISH_PHILIPPINES: return "en_PH"; -+ case SUBLANG_ENGLISH_INDONESIA: return "en_ID"; -+ case SUBLANG_ENGLISH_HONGKONG: return "en_HK"; -+ case SUBLANG_ENGLISH_INDIA: return "en_IN"; -+ case SUBLANG_ENGLISH_MALAYSIA: return "en_MY"; -+ case SUBLANG_ENGLISH_SINGAPORE: return "en_SG"; -+ } -+ return "en"; -+ case LANG_ESTONIAN: return "et_EE"; -+ case LANG_FAEROESE: return "fo_FO"; -+ case LANG_FARSI: return "fa_IR"; -+ case LANG_FINNISH: return "fi_FI"; -+ case LANG_FRENCH: -+ switch (sub) -+ { -+ case SUBLANG_FRENCH: return "fr_FR"; -+ case SUBLANG_FRENCH_BELGIAN: /* WALLOON */ return "fr_BE"; -+ case SUBLANG_FRENCH_CANADIAN: return "fr_CA"; -+ case SUBLANG_FRENCH_SWISS: return "fr_CH"; -+ case SUBLANG_FRENCH_LUXEMBOURG: return "fr_LU"; -+ case SUBLANG_FRENCH_MONACO: return "fr_MC"; -+ case SUBLANG_FRENCH_WESTINDIES: return "fr"; /* Caribbean? */ -+ case SUBLANG_FRENCH_REUNION: return "fr_RE"; -+ case SUBLANG_FRENCH_CONGO: return "fr_CG"; -+ case SUBLANG_FRENCH_SENEGAL: return "fr_SN"; -+ case SUBLANG_FRENCH_CAMEROON: return "fr_CM"; -+ case SUBLANG_FRENCH_COTEDIVOIRE: return "fr_CI"; -+ case SUBLANG_FRENCH_MALI: return "fr_ML"; -+ case SUBLANG_FRENCH_MOROCCO: return "fr_MA"; -+ case SUBLANG_FRENCH_HAITI: return "fr_HT"; -+ } -+ return "fr"; -+ case LANG_FRISIAN: return "fy_NL"; -+ case LANG_FULFULDE: -+ /* Spoken in Nigeria, Guinea, Senegal, Mali, Niger, Cameroon, Benin. */ -+ return "ff_NG"; -+ case LANG_GAELIC: -+ switch (sub) -+ { -+ case 0x01: /* SCOTTISH */ return "gd_GB"; -+ case 0x02: /* IRISH */ return "ga_IE"; -+ } -+ return "C"; -+ case LANG_GALICIAN: return "gl_ES"; -+ case LANG_GEORGIAN: return "ka_GE"; -+ case LANG_GERMAN: -+ switch (sub) -+ { -+ case SUBLANG_GERMAN: return "de_DE"; -+ case SUBLANG_GERMAN_SWISS: return "de_CH"; -+ case SUBLANG_GERMAN_AUSTRIAN: return "de_AT"; -+ case SUBLANG_GERMAN_LUXEMBOURG: return "de_LU"; -+ case SUBLANG_GERMAN_LIECHTENSTEIN: return "de_LI"; -+ } -+ return "de"; -+ case LANG_GREEK: return "el_GR"; -+ case LANG_GUARANI: return "gn_PY"; -+ case LANG_GUJARATI: return "gu_IN"; -+ case LANG_HAUSA: return "ha_NG"; -+ case LANG_HAWAIIAN: -+ /* FIXME: Do they mean Hawaiian ("haw_US", 1000 speakers) -+ or Hawaii Creole English ("cpe_US", 600000 speakers)? */ -+ return "cpe_US"; -+ case LANG_HEBREW: return "he_IL"; -+ case LANG_HINDI: return "hi_IN"; -+ case LANG_HUNGARIAN: return "hu_HU"; -+ case LANG_IBIBIO: return "nic_NG"; -+ case LANG_ICELANDIC: return "is_IS"; -+ case LANG_IGBO: return "ig_NG"; -+ case LANG_INDONESIAN: return "id_ID"; -+ case LANG_INUKTITUT: return "iu_CA"; -+ case LANG_ITALIAN: -+ switch (sub) -+ { -+ case SUBLANG_ITALIAN: return "it_IT"; -+ case SUBLANG_ITALIAN_SWISS: return "it_CH"; -+ } -+ return "it"; -+ case LANG_JAPANESE: return "ja_JP"; -+ case LANG_KANNADA: return "kn_IN"; -+ case LANG_KANURI: return "kr_NG"; -+ case LANG_KASHMIRI: -+ switch (sub) -+ { -+ case SUBLANG_DEFAULT: return "ks_PK"; -+ case SUBLANG_KASHMIRI_INDIA: return "ks_IN"; -+ } -+ return "ks"; -+ case LANG_KAZAK: return "kk_KZ"; -+ case LANG_KONKANI: -+ /* FIXME: Adjust this when such locales appear on Unix. */ -+ return "kok_IN"; -+ case LANG_KOREAN: return "ko_KR"; -+ case LANG_KYRGYZ: return "ky_KG"; -+ case LANG_LAO: return "lo_LA"; -+ case LANG_LATIN: return "la_VA"; -+ case LANG_LATVIAN: return "lv_LV"; -+ case LANG_LITHUANIAN: return "lt_LT"; -+ case LANG_MACEDONIAN: return "mk_MK"; -+ case LANG_MALAY: -+ switch (sub) -+ { -+ case SUBLANG_MALAY_MALAYSIA: return "ms_MY"; -+ case SUBLANG_MALAY_BRUNEI_DARUSSALAM: return "ms_BN"; -+ } -+ return "ms"; -+ case LANG_MALAYALAM: return "ml_IN"; -+ case LANG_MALTESE: return "mt_MT"; -+ case LANG_MANIPURI: -+ /* FIXME: Adjust this when such locales appear on Unix. */ -+ return "mni_IN"; -+ case LANG_MARATHI: return "mr_IN"; -+ case LANG_MONGOLIAN: -+ return "mn"; /* Ambiguous: could be "mn_CN" or "mn_MN". */ -+ case LANG_NEPALI: -+ switch (sub) -+ { -+ case SUBLANG_DEFAULT: return "ne_NP"; -+ case SUBLANG_NEPALI_INDIA: return "ne_IN"; -+ } -+ return "ne"; -+ case LANG_NORWEGIAN: -+ switch (sub) -+ { -+ case SUBLANG_NORWEGIAN_BOKMAL: return "no_NO"; -+ case SUBLANG_NORWEGIAN_NYNORSK: return "nn_NO"; -+ } -+ return "no"; -+ case LANG_ORIYA: return "or_IN"; -+ case LANG_OROMO: return "om_ET"; -+ case LANG_PAPIAMENTU: return "pap_AN"; -+ case LANG_PASHTO: -+ return "ps"; /* Ambiguous: could be "ps_PK" or "ps_AF". */ -+ case LANG_POLISH: return "pl_PL"; -+ case LANG_PORTUGUESE: -+ switch (sub) -+ { -+ case SUBLANG_PORTUGUESE: return "pt_PT"; -+ /* Hmm. SUBLANG_PORTUGUESE_BRAZILIAN == SUBLANG_DEFAULT. -+ Same phenomenon as SUBLANG_ENGLISH_US == SUBLANG_DEFAULT. */ -+ case SUBLANG_PORTUGUESE_BRAZILIAN: return "pt_BR"; -+ } -+ return "pt"; -+ case LANG_PUNJABI: -+ switch (sub) -+ { -+ case SUBLANG_PUNJABI_INDIA: return "pa_IN"; /* Gurmukhi script */ -+ case SUBLANG_PUNJABI_PAKISTAN: return "pa_PK"; /* Arabic script */ -+ } -+ return "pa"; -+ case LANG_RHAETO_ROMANCE: return "rm_CH"; -+ case LANG_ROMANIAN: -+ switch (sub) -+ { -+ case SUBLANG_ROMANIAN_ROMANIA: return "ro_RO"; -+ case SUBLANG_ROMANIAN_MOLDOVA: return "ro_MD"; -+ } -+ return "ro"; -+ case LANG_RUSSIAN: -+ return "ru"; /* Ambiguous: could be "ru_RU" or "ru_UA" or "ru_MD". */ -+ case LANG_SAAMI: /* actually Northern Sami */ return "se_NO"; -+ case LANG_SANSKRIT: return "sa_IN"; -+ case LANG_SINDHI: -+ switch (sub) -+ { -+ case SUBLANG_SINDHI_INDIA: return "sd_IN"; -+ case SUBLANG_SINDHI_PAKISTAN: return "sd_PK"; -+ } -+ return "sd"; -+ case LANG_SINHALESE: return "si_LK"; -+ case LANG_SLOVAK: return "sk_SK"; -+ case LANG_SLOVENIAN: return "sl_SI"; -+ case LANG_SOMALI: return "so_SO"; -+ case LANG_SORBIAN: -+ /* FIXME: Adjust this when such locales appear on Unix. */ -+ return "wen_DE"; -+ case LANG_SPANISH: -+ switch (sub) -+ { -+ case SUBLANG_SPANISH: return "es_ES"; -+ case SUBLANG_SPANISH_MEXICAN: return "es_MX"; -+ case SUBLANG_SPANISH_MODERN: -+ return "es_ES@modern"; /* not seen on Unix */ -+ case SUBLANG_SPANISH_GUATEMALA: return "es_GT"; -+ case SUBLANG_SPANISH_COSTA_RICA: return "es_CR"; -+ case SUBLANG_SPANISH_PANAMA: return "es_PA"; -+ case SUBLANG_SPANISH_DOMINICAN_REPUBLIC: return "es_DO"; -+ case SUBLANG_SPANISH_VENEZUELA: return "es_VE"; -+ case SUBLANG_SPANISH_COLOMBIA: return "es_CO"; -+ case SUBLANG_SPANISH_PERU: return "es_PE"; -+ case SUBLANG_SPANISH_ARGENTINA: return "es_AR"; -+ case SUBLANG_SPANISH_ECUADOR: return "es_EC"; -+ case SUBLANG_SPANISH_CHILE: return "es_CL"; -+ case SUBLANG_SPANISH_URUGUAY: return "es_UY"; -+ case SUBLANG_SPANISH_PARAGUAY: return "es_PY"; -+ case SUBLANG_SPANISH_BOLIVIA: return "es_BO"; -+ case SUBLANG_SPANISH_EL_SALVADOR: return "es_SV"; -+ case SUBLANG_SPANISH_HONDURAS: return "es_HN"; -+ case SUBLANG_SPANISH_NICARAGUA: return "es_NI"; -+ case SUBLANG_SPANISH_PUERTO_RICO: return "es_PR"; -+ } -+ return "es"; -+ case LANG_SUTU: return "bnt_TZ"; /* or "st_LS" or "nso_ZA"? */ -+ case LANG_SWAHILI: return "sw_KE"; -+ case LANG_SWEDISH: -+ switch (sub) -+ { -+ case SUBLANG_DEFAULT: return "sv_SE"; -+ case SUBLANG_SWEDISH_FINLAND: return "sv_FI"; -+ } -+ return "sv"; -+ case LANG_SYRIAC: return "syr_TR"; /* An extinct language. */ -+ case LANG_TAGALOG: return "tl_PH"; -+ case LANG_TAJIK: return "tg_TJ"; -+ case LANG_TAMAZIGHT: -+ switch (sub) -+ { -+ /* FIXME: Adjust this when Tamazight locales appear on Unix. */ -+ case SUBLANG_TAMAZIGHT_ARABIC: return "ber_MA@arabic"; -+ case SUBLANG_TAMAZIGHT_LATIN: return "ber_MA@latin"; -+ } -+ return "ber_MA"; -+ case LANG_TAMIL: -+ return "ta"; /* Ambiguous: could be "ta_IN" or "ta_LK" or "ta_SG". */ -+ case LANG_TATAR: return "tt_RU"; -+ case LANG_TELUGU: return "te_IN"; -+ case LANG_THAI: return "th_TH"; -+ case LANG_TIBETAN: return "bo_CN"; -+ case LANG_TIGRINYA: -+ switch (sub) -+ { -+ case SUBLANG_TIGRINYA_ETHIOPIA: return "ti_ET"; -+ case SUBLANG_TIGRINYA_ERITREA: return "ti_ER"; -+ } -+ return "ti"; -+ case LANG_TSONGA: return "ts_ZA"; -+ case LANG_TSWANA: return "tn_BW"; -+ case LANG_TURKISH: return "tr_TR"; -+ case LANG_TURKMEN: return "tk_TM"; -+ case LANG_UKRAINIAN: return "uk_UA"; -+ case LANG_URDU: -+ switch (sub) -+ { -+ case SUBLANG_URDU_PAKISTAN: return "ur_PK"; -+ case SUBLANG_URDU_INDIA: return "ur_IN"; -+ } -+ return "ur"; -+ case LANG_UZBEK: -+ switch (sub) -+ { -+ case SUBLANG_UZBEK_LATIN: return "uz_UZ"; -+ case SUBLANG_UZBEK_CYRILLIC: return "uz_UZ@cyrillic"; -+ } -+ return "uz"; -+ case LANG_VENDA: return "ve_ZA"; -+ case LANG_VIETNAMESE: return "vi_VN"; -+ case LANG_WELSH: return "cy_GB"; -+ case LANG_XHOSA: return "xh_ZA"; -+ case LANG_YI: return "sit_CN"; -+ case LANG_YIDDISH: return "yi_IL"; -+ case LANG_YORUBA: return "yo_NG"; -+ case LANG_ZULU: return "zu_ZA"; -+ default: return "C"; -+ } -+ -+#endif -+} -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/log.c psmisc-20.2.works.clean/intl/log.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/log.c 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/log.c 2004-10-13 15:18:41.000000000 -0500 -@@ -0,0 +1,98 @@ -+/* Log file output. -+ Copyright (C) 2003 Free Software Foundation, Inc. -+ -+ This program is free software; you can redistribute it and/or modify it -+ under the terms of the GNU 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 <bruno@clisp.org>. */ -+ -+#ifdef HAVE_CONFIG_H -+# include <config.h> -+#endif -+ -+#include <stdio.h> -+#include <stdlib.h> -+#include <string.h> -+ -+/* Print an ASCII string with quotes and escape sequences where needed. */ -+static void -+print_escaped (FILE *stream, const char *str) -+{ -+ putc ('"', stream); -+ for (; *str != '\0'; str++) -+ if (*str == '\n') -+ { -+ fputs ("\\n\"", stream); -+ if (str[1] == '\0') -+ return; -+ fputs ("\n\"", stream); -+ } -+ else -+ { -+ if (*str == '"' || *str == '\\') -+ putc ('\\', stream); -+ putc (*str, stream); -+ } -+ putc ('"', stream); -+} -+ -+/* Add to the log file an entry denoting a failed translation. */ -+void -+_nl_log_untranslated (const char *logfilename, const char *domainname, -+ const char *msgid1, const char *msgid2, int plural) -+{ -+ static char *last_logfilename = NULL; -+ static FILE *last_logfile = NULL; -+ FILE *logfile; -+ -+ /* Can we reuse the last opened logfile? */ -+ if (last_logfilename == NULL || strcmp (logfilename, last_logfilename) != 0) -+ { -+ /* Close the last used logfile. */ -+ if (last_logfilename != NULL) -+ { -+ if (last_logfile != NULL) -+ { -+ fclose (last_logfile); -+ last_logfile = NULL; -+ } -+ free (last_logfilename); -+ last_logfilename = NULL; -+ } -+ /* Open the logfile. */ -+ last_logfilename = (char *) malloc (strlen (logfilename) + 1); -+ if (last_logfilename == NULL) -+ return; -+ strcpy (last_logfilename, logfilename); -+ last_logfile = fopen (logfilename, "a"); -+ if (last_logfile == NULL) -+ return; -+ } -+ logfile = last_logfile; -+ -+ fprintf (logfile, "domain "); -+ print_escaped (logfile, domainname); -+ fprintf (logfile, "\nmsgid "); -+ print_escaped (logfile, msgid1); -+ if (plural) -+ { -+ fprintf (logfile, "\nmsgid_plural "); -+ print_escaped (logfile, msgid2); -+ fprintf (logfile, "\nmsgstr[0] \"\"\n"); -+ } -+ else -+ fprintf (logfile, "\nmsgstr \"\"\n"); -+ putc ('\n', logfile); -+} -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/ngettext.c psmisc-20.2.works.clean/intl/ngettext.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/ngettext.c 2001-04-13 23:00:43.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/ngettext.c 2004-10-13 15:18:41.000000000 -0500 -@@ -1,19 +1,20 @@ - /* Implementation of ngettext(3) function. -- Copyright (C) 1995, 1997, 2000, 2001 Free Software Foundation, Inc. -+ Copyright (C) 1995, 1997, 2000-2003 Free Software Foundation, Inc. - -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2, or (at your option) -+ 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 General Public License for more details. -+ 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 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. */ -+ 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. */ - - #ifdef HAVE_CONFIG_H - # include <config.h> -@@ -45,18 +46,15 @@ - # define NGETTEXT __ngettext - # define DCNGETTEXT __dcngettext - #else --# define NGETTEXT ngettext__ --# define DCNGETTEXT dcngettext__ -+# define NGETTEXT libintl_ngettext -+# define DCNGETTEXT libintl_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; -+NGETTEXT (const char *msgid1, const char *msgid2, unsigned long int n) - { - return DCNGETTEXT (NULL, msgid1, msgid2, n, LC_MESSAGES); - } -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/os2compat.c psmisc-20.2.works.clean/intl/os2compat.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/os2compat.c 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/os2compat.c 2004-10-13 15:18:41.000000000 -0500 -@@ -0,0 +1,98 @@ -+/* OS/2 compatibility functions. -+ Copyright (C) 2001-2002 Free Software Foundation, Inc. -+ -+ This program is free software; you can redistribute it and/or modify it -+ under the terms of the GNU 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. */ -+ -+#define OS2_AWARE -+#ifdef HAVE_CONFIG_H -+#include <config.h> -+#endif -+ -+#include <stdlib.h> -+#include <string.h> -+#include <sys/param.h> -+ -+/* A version of getenv() that works from DLLs */ -+extern unsigned long DosScanEnv (const unsigned char *pszName, unsigned char **ppszValue); -+ -+char * -+_nl_getenv (const char *name) -+{ -+ unsigned char *value; -+ if (DosScanEnv (name, &value)) -+ return NULL; -+ else -+ return value; -+} -+ -+/* A fixed size buffer. */ -+char libintl_nl_default_dirname[MAXPATHLEN+1]; -+ -+char *_nlos2_libdir = NULL; -+char *_nlos2_localealiaspath = NULL; -+char *_nlos2_localedir = NULL; -+ -+static __attribute__((constructor)) void -+nlos2_initialize () -+{ -+ char *root = getenv ("UNIXROOT"); -+ char *gnulocaledir = getenv ("GNULOCALEDIR"); -+ -+ _nlos2_libdir = gnulocaledir; -+ if (!_nlos2_libdir) -+ { -+ if (root) -+ { -+ size_t sl = strlen (root); -+ _nlos2_libdir = (char *) malloc (sl + strlen (LIBDIR) + 1); -+ memcpy (_nlos2_libdir, root, sl); -+ memcpy (_nlos2_libdir + sl, LIBDIR, strlen (LIBDIR) + 1); -+ } -+ else -+ _nlos2_libdir = LIBDIR; -+ } -+ -+ _nlos2_localealiaspath = gnulocaledir; -+ if (!_nlos2_localealiaspath) -+ { -+ if (root) -+ { -+ size_t sl = strlen (root); -+ _nlos2_localealiaspath = (char *) malloc (sl + strlen (LOCALE_ALIAS_PATH) + 1); -+ memcpy (_nlos2_localealiaspath, root, sl); -+ memcpy (_nlos2_localealiaspath + sl, LOCALE_ALIAS_PATH, strlen (LOCALE_ALIAS_PATH) + 1); -+ } -+ else -+ _nlos2_localealiaspath = LOCALE_ALIAS_PATH; -+ } -+ -+ _nlos2_localedir = gnulocaledir; -+ if (!_nlos2_localedir) -+ { -+ if (root) -+ { -+ size_t sl = strlen (root); -+ _nlos2_localedir = (char *) malloc (sl + strlen (LOCALEDIR) + 1); -+ memcpy (_nlos2_localedir, root, sl); -+ memcpy (_nlos2_localedir + sl, LOCALEDIR, strlen (LOCALEDIR) + 1); -+ } -+ else -+ _nlos2_localedir = LOCALEDIR; -+ } -+ -+ if (strlen (_nlos2_localedir) <= MAXPATHLEN) -+ strcpy (libintl_nl_default_dirname, _nlos2_localedir); -+} -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/os2compat.h psmisc-20.2.works.clean/intl/os2compat.h ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/os2compat.h 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/os2compat.h 2004-10-13 15:18:41.000000000 -0500 -@@ -0,0 +1,46 @@ -+/* OS/2 compatibility defines. -+ This file is intended to be included from config.h -+ Copyright (C) 2001-2002 Free Software Foundation, Inc. -+ -+ This program is free software; you can redistribute it and/or modify it -+ under the terms of the GNU 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. */ -+ -+/* When included from os2compat.h we need all the original definitions */ -+#ifndef OS2_AWARE -+ -+#undef LIBDIR -+#define LIBDIR _nlos2_libdir -+extern char *_nlos2_libdir; -+ -+#undef LOCALEDIR -+#define LOCALEDIR _nlos2_localedir -+extern char *_nlos2_localedir; -+ -+#undef LOCALE_ALIAS_PATH -+#define LOCALE_ALIAS_PATH _nlos2_localealiaspath -+extern char *_nlos2_localealiaspath; -+ -+#endif -+ -+#undef HAVE_STRCASECMP -+#define HAVE_STRCASECMP 1 -+#define strcasecmp stricmp -+#define strncasecmp strnicmp -+ -+/* We have our own getenv() which works even if library is compiled as DLL */ -+#define getenv _nl_getenv -+ -+/* Older versions of gettext used -1 as the value of LC_MESSAGES */ -+#define LC_MESSAGES_COMPAT (-1) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/osdep.c psmisc-20.2.works.clean/intl/osdep.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/osdep.c 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/osdep.c 2004-10-13 15:18:41.000000000 -0500 -@@ -0,0 +1,24 @@ -+/* OS dependent parts of libintl. -+ Copyright (C) 2001-2002 Free Software Foundation, Inc. -+ -+ This program is free software; you can redistribute it and/or modify it -+ under the terms of the GNU 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. */ -+ -+#if defined __EMX__ -+# include "os2compat.c" -+#else -+/* Avoid AIX compiler warning. */ -+typedef int dummy; -+#endif -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/plural-exp.c psmisc-20.2.works.clean/intl/plural-exp.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/plural-exp.c 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/plural-exp.c 2004-10-13 15:18:41.000000000 -0500 -@@ -0,0 +1,154 @@ -+/* Expression parsing for plural form selection. -+ Copyright (C) 2000-2001, 2003 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 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. */ -+ -+#ifdef HAVE_CONFIG_H -+# include <config.h> -+#endif -+ -+#include <ctype.h> -+#include <stdlib.h> -+#include <string.h> -+ -+#include "plural-exp.h" -+ -+#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 -+ } -+}; -+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; -+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 -+ -+void -+internal_function -+EXTRACT_PLURAL_EXPRESSION (const char *nullentry, struct expression **pluralp, -+ unsigned long int *npluralsp) -+{ -+ 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 -+ { -+ char *endp; -+ unsigned long int n; -+ struct parse_args args; -+ -+ /* First get the number. */ -+ nplurals += 9; -+ while (*nplurals != '\0' && isspace ((unsigned char) *nplurals)) -+ ++nplurals; -+ if (!(*nplurals >= '0' && *nplurals <= '9')) -+ goto no_plural; -+#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 -+ if (nplurals == endp) -+ goto no_plural; -+ *npluralsp = n; -+ -+ /* 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; -+ *pluralp = 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 (); -+ *pluralp = &GERMANIC_PLURAL; -+ *npluralsp = 2; -+ } -+} -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/plural-exp.h psmisc-20.2.works.clean/intl/plural-exp.h ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/plural-exp.h 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/plural-exp.h 2004-10-13 15:18:41.000000000 -0500 -@@ -0,0 +1,118 @@ -+/* Expression parsing and evaluation for plural form selection. -+ Copyright (C) 2000-2003 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 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. */ -+ -+#ifndef _PLURAL_EXP_H -+#define _PLURAL_EXP_H -+ -+#ifndef internal_function -+# define internal_function -+#endif -+ -+#ifndef attribute_hidden -+# define attribute_hidden -+#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, /* Modulo operation. */ -+ plus, /* Addition. */ -+ minus, /* Subtraction. */ -+ less_than, /* Comparison. */ -+ greater_than, /* Comparison. */ -+ less_or_equal, /* Comparison. */ -+ greater_or_equal, /* Comparison. */ -+ equal, /* Comparison for equality. */ -+ not_equal, /* Comparison 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; -+}; -+ -+ -+/* Names for the libintl functions are a problem. This source code is used -+ 1. in the GNU C Library library, -+ 2. in the GNU libintl library, -+ 3. in the GNU gettext tools. -+ The function names in each situation must be different, to allow for -+ binary incompatible changes in 'struct expression'. Furthermore, -+ 1. in the GNU C Library library, the names have a __ prefix, -+ 2.+3. in the GNU libintl library and in the GNU gettext tools, the names -+ must follow ANSI C and not start with __. -+ So we have to distinguish the three cases. */ -+#ifdef _LIBC -+# define FREE_EXPRESSION __gettext_free_exp -+# define PLURAL_PARSE __gettextparse -+# define GERMANIC_PLURAL __gettext_germanic_plural -+# define EXTRACT_PLURAL_EXPRESSION __gettext_extract_plural -+#elif defined (IN_LIBINTL) -+# define FREE_EXPRESSION libintl_gettext_free_exp -+# define PLURAL_PARSE libintl_gettextparse -+# define GERMANIC_PLURAL libintl_gettext_germanic_plural -+# define EXTRACT_PLURAL_EXPRESSION libintl_gettext_extract_plural -+#else -+# define FREE_EXPRESSION free_plural_expression -+# define PLURAL_PARSE parse_plural_expression -+# define GERMANIC_PLURAL germanic_plural -+# define EXTRACT_PLURAL_EXPRESSION extract_plural_expression -+#endif -+ -+extern void FREE_EXPRESSION (struct expression *exp) -+ internal_function; -+extern int PLURAL_PARSE (void *arg); -+extern struct expression GERMANIC_PLURAL attribute_hidden; -+extern void EXTRACT_PLURAL_EXPRESSION (const char *nullentry, -+ struct expression **pluralp, -+ unsigned long int *npluralsp) -+ internal_function; -+ -+#if !defined (_LIBC) && !defined (IN_LIBINTL) -+extern unsigned long int plural_eval (struct expression *pexp, -+ unsigned long int n); -+#endif -+ -+#endif /* _PLURAL_EXP_H */ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/plural.c psmisc-20.2.works.clean/intl/plural.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/plural.c 2001-10-17 17:05:25.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/plural.c 2004-10-13 15:18:43.000000000 -0500 -@@ -1,6 +1,5 @@ -- --/* A Bison parser, made from plural.y -- by GNU Bison version 1.28 */ -+/* A Bison parser, made from plural.y -+ by GNU bison 1.35. */ - - #define YYBISON 1 /* Identify Bison output. */ - -@@ -11,31 +10,32 @@ - #define yychar __gettextchar - #define yydebug __gettextdebug - #define yynerrs __gettextnerrs --#define EQUOP2 257 --#define CMPOP2 258 --#define ADDOP2 259 --#define MULOP2 260 --#define NUMBER 261 -+# 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. -+ Copyright (C) 2000-2001, 2003 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) -+ 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 General Public License for more details. -+ 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 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. */ -+ 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 bison generated parser uses alloca. AIX 3 forces us to put this - declaration at the beginning of the file. The declaration in bison's -@@ -49,54 +49,39 @@ - # include <config.h> - #endif - -+#include <stddef.h> - #include <stdlib.h> --#include "gettextP.h" -+#include "plural-exp.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__ -+/* The main function generated by the parser is called __gettextparse, -+ but we want it to be called PLURAL_PARSE. */ -+#ifndef _LIBC -+# define __gettextparse PLURAL_PARSE - #endif - - #define YYLEX_PARAM &((struct parse_args *) arg)->cp - #define YYPARSE_PARAM arg - --#line 52 "plural.y" -+#line 49 "plural.y" -+#ifndef YYSTYPE - typedef union { - unsigned long int num; - enum operator op; - struct expression *exp; --} YYSTYPE; --#line 58 "plural.y" -+} yystype; -+# define YYSTYPE yystype -+# define YYSTYPE_IS_TRIVIAL 1 -+#endif -+#line 55 "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)); -+static int yylex (YYSTYPE *lval, const char **pexp); -+static void yyerror (const char *str); - - /* Allocation of expressions. */ - - static struct expression * --new_exp (nargs, op, args) -- int nargs; -- enum operator op; -- struct expression * const *args; -+new_exp (int nargs, enum operator op, struct expression * const *args) - { - int i; - struct expression *newp; -@@ -125,16 +110,13 @@ - } - - static inline struct expression * --new_exp_0 (op) -- enum operator op; -+new_exp_0 (enum operator op) - { - return new_exp (0, op, NULL); - } - - static inline struct expression * --new_exp_1 (op, right) -- enum operator op; -- struct expression *right; -+new_exp_1 (enum operator op, struct expression *right) - { - struct expression *args[1]; - -@@ -143,10 +125,7 @@ - } - - static struct expression * --new_exp_2 (op, left, right) -- enum operator op; -- struct expression *left; -- struct expression *right; -+new_exp_2 (enum operator op, struct expression *left, struct expression *right) - { - struct expression *args[2]; - -@@ -156,11 +135,8 @@ - } - - static inline struct expression * --new_exp_3 (op, bexp, tbranch, fbranch) -- enum operator op; -- struct expression *bexp; -- struct expression *tbranch; -- struct expression *fbranch; -+new_exp_3 (enum operator op, struct expression *bexp, -+ struct expression *tbranch, struct expression *fbranch) - { - struct expression *args[3]; - -@@ -170,12 +146,8 @@ - return new_exp (3, op, args); - } - --#include <stdio.h> -- --#ifndef __cplusplus --#ifndef __STDC__ --#define const --#endif -+#ifndef YYDEBUG -+# define YYDEBUG 0 - #endif - - -@@ -184,129 +156,152 @@ - #define YYFLAG -32768 - #define YYNTBASE 16 - -+/* YYTRANSLATE(YYLEX) -- Bison token number corresponding to YYLEX. */ - #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 -+/* YYTRANSLATE[YYLEX] -- Bison token number corresponding to YYLEX. */ -+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 -+#if YYDEBUG -+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 -+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 -+#if YYDEBUG -+/* YYRLINE[YYN] -- source line where rule number YYN was defined. */ -+static const short yyrline[] = -+{ -+ 0, 150, 158, 162, 166, 170, 174, 178, 182, 186, -+ 190, 194, 199 - }; - #endif - - --#if YYDEBUG != 0 || defined (YYERROR_VERBOSE) -+#if (YYDEBUG) || defined YYERROR_VERBOSE - --static const char * const yytname[] = { "$","error","$undefined.","'?'","'|'", --"'&'","EQUOP2","CMPOP2","ADDOP2","MULOP2","'!'","NUMBER","':'","'n'","'('","')'", --"start","exp", NULL -+/* YYTNAME[TOKEN_NUM] -- String name of the token TOKEN_NUM. */ -+static const char *const yytname[] = -+{ -+ "$", "error", "$undefined.", "'?'", "'|'", "'&'", "EQUOP2", "CMPOP2", -+ "ADDOP2", "MULOP2", "'!'", "NUMBER", "':'", "'n'", "'('", "')'", -+ "start", "exp", 0 - }; - #endif - --static const short yyr1[] = { 0, -- 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, -- 17, 17 -+/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives. */ -+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 -+/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN. */ -+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 -+/* YYDEFACT[S] -- default rule to reduce with in state S when YYTABLE -+ doesn't specify something else to do. Zero means the default is an -+ error. */ -+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 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 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 -+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 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 -+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 "/usr/share/bison/bison.simple" --/* This file comes from bison-1.28. */ -+#line 3 "/usr/local/share/bison/bison.simple" - - /* Skeleton output parser for bison, -- Copyright (C) 1984, 1989, 1990 Free Software Foundation, Inc. -+ -+ Copyright (C) 1984, 1989, 1990, 2000, 2001, 2002 Free Software -+ Foundation, Inc. - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by -@@ -328,62 +323,131 @@ - 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. */ -+/* 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 */ -+/* All symbols defined below should begin with yy or YY, to avoid -+ infringing on user name space. This should be done even for local -+ variables, as they might otherwise be expanded by user macros. -+ There are some unavoidable exceptions within include files to -+ define necessary library symbols; they are noted "INFRINGES ON -+ USER NAME SPACE" below. */ -+ -+#if ! defined (yyoverflow) || defined (YYERROR_VERBOSE) -+ -+/* The parser invokes alloca or malloc; define the necessary symbols. */ -+ -+# if YYSTACK_USE_ALLOCA -+# define YYSTACK_ALLOC alloca -+# else -+# ifndef YYSTACK_USE_ALLOCA -+# if defined (alloca) || defined (_ALLOCA_H) -+# define YYSTACK_ALLOC alloca -+# else -+# ifdef __GNUC__ -+# define YYSTACK_ALLOC __builtin_alloca -+# endif -+# endif -+# endif -+# endif -+ -+# ifdef YYSTACK_ALLOC -+ /* Pacify GCC's `empty if-body' warning. */ -+# define YYSTACK_FREE(Ptr) do { /* empty */; } while (0) -+# else -+# if defined (__STDC__) || defined (__cplusplus) -+# include <stdlib.h> /* INFRINGES ON USER NAME SPACE */ -+# define YYSIZE_T size_t -+# endif -+# define YYSTACK_ALLOC malloc -+# define YYSTACK_FREE free -+# endif -+#endif /* ! defined (yyoverflow) || defined (YYERROR_VERBOSE) */ -+ -+ -+#if (! defined (yyoverflow) \ -+ && (! defined (__cplusplus) \ -+ || (YYLTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL))) -+ -+/* A type that is properly aligned for any stack member. */ -+union yyalloc -+{ -+ short yyss; -+ YYSTYPE yyvs; -+# if YYLSP_NEEDED -+ YYLTYPE yyls; -+# endif -+}; -+ -+/* The size of the maximum gap between one aligned stack and the next. */ -+# define YYSTACK_GAP_MAX (sizeof (union yyalloc) - 1) -+ -+/* The size of an array large to enough to hold all stacks, each with -+ N elements. */ -+# if YYLSP_NEEDED -+# define YYSTACK_BYTES(N) \ -+ ((N) * (sizeof (short) + sizeof (YYSTYPE) + sizeof (YYLTYPE)) \ -+ + 2 * YYSTACK_GAP_MAX) -+# else -+# define YYSTACK_BYTES(N) \ -+ ((N) * (sizeof (short) + sizeof (YYSTYPE)) \ -+ + YYSTACK_GAP_MAX) -+# endif -+ -+/* Copy COUNT objects from FROM to TO. The source and destination do -+ not overlap. */ -+# ifndef YYCOPY -+# if 1 < __GNUC__ -+# define YYCOPY(To, From, Count) \ -+ __builtin_memcpy (To, From, (Count) * sizeof (*(From))) -+# else -+# define YYCOPY(To, From, Count) \ -+ do \ -+ { \ -+ register YYSIZE_T yyi; \ -+ for (yyi = 0; yyi < (Count); yyi++) \ -+ (To)[yyi] = (From)[yyi]; \ -+ } \ -+ while (0) -+# endif -+# endif -+ -+/* Relocate STACK from its old location to the new one. The -+ local variables YYSIZE and YYSTACKSIZE give the old and new number of -+ elements in the stack, and YYPTR gives the new location of the -+ stack. Advance YYPTR to a properly aligned location for the next -+ stack. */ -+# define YYSTACK_RELOCATE(Stack) \ -+ do \ -+ { \ -+ YYSIZE_T yynewbytes; \ -+ YYCOPY (&yyptr->Stack, Stack, yysize); \ -+ Stack = &yyptr->Stack; \ -+ yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAX; \ -+ yyptr += yynewbytes / sizeof (*yyptr); \ -+ } \ -+ while (0) - --#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. */ -+ -+#if ! defined (YYSIZE_T) && defined (__SIZE_TYPE__) -+# define YYSIZE_T __SIZE_TYPE__ -+#endif -+#if ! defined (YYSIZE_T) && defined (size_t) -+# define YYSIZE_T size_t -+#endif -+#if ! defined (YYSIZE_T) -+# if defined (__STDC__) || defined (__cplusplus) -+# include <stddef.h> /* INFRINGES ON USER NAME SPACE */ -+# define YYSIZE_T size_t -+# endif -+#endif -+#if ! defined (YYSIZE_T) -+# define YYSIZE_T unsigned int -+#endif - - #define yyerrok (yyerrstatus = 0) - #define yyclearin (yychar = YYEMPTY) -@@ -392,131 +456,161 @@ - #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. -+/* 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) \ -+#define YYBACKUP(Token, Value) \ - do \ - if (yychar == YYEMPTY && yylen == 1) \ -- { yychar = (token), yylval = (value); \ -+ { \ -+ yychar = (Token); \ -+ yylval = (Value); \ - yychar1 = YYTRANSLATE (yychar); \ - YYPOPSTACK; \ - goto yybackup; \ - } \ - else \ -- { yyerror ("syntax error: cannot back up"); YYERROR; } \ -+ { \ -+ 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 */ -+/* YYLLOC_DEFAULT -- Compute the default location (before the actions -+ are run). -+ -+ When YYLLOC_DEFAULT is run, CURRENT is set the location of the -+ first token. By default, to implement support for ranges, extend -+ its range to the last symbol. */ -+ -+#ifndef YYLLOC_DEFAULT -+# define YYLLOC_DEFAULT(Current, Rhs, N) \ -+ Current.last_line = Rhs[N].last_line; \ -+ Current.last_column = Rhs[N].last_column; - #endif - --/* If nonreentrant, generate the variables here */ - --#ifndef YYPURE -+/* YYLEX -- calling `yylex' with the right arguments. */ - --int yychar; /* the lookahead symbol */ --YYSTYPE yylval; /* the semantic value of the */ -- /* lookahead symbol */ -+#if YYPURE -+# if YYLSP_NEEDED -+# ifdef YYLEX_PARAM -+# define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM) -+# else -+# define YYLEX yylex (&yylval, &yylloc) -+# endif -+# else /* !YYLSP_NEEDED */ -+# ifdef YYLEX_PARAM -+# define YYLEX yylex (&yylval, YYLEX_PARAM) -+# else -+# define YYLEX yylex (&yylval) -+# endif -+# endif /* !YYLSP_NEEDED */ -+#else /* !YYPURE */ -+# define YYLEX yylex () -+#endif /* !YYPURE */ - --#ifdef YYLSP_NEEDED --YYLTYPE yylloc; /* location data for the lookahead */ -- /* symbol */ --#endif - --int yynerrs; /* number of parse errors so far */ --#endif /* not YYPURE */ -+/* Enable debugging if requested. */ -+#if YYDEBUG - --#if YYDEBUG != 0 --int yydebug; /* nonzero means print parse trace */ --/* Since this is uninitialized, it does not stop multiple parsers -- from coexisting. */ --#endif -+# ifndef YYFPRINTF -+# include <stdio.h> /* INFRINGES ON USER NAME SPACE */ -+# define YYFPRINTF fprintf -+# endif - --/* YYINITDEPTH indicates the initial size of the parser's stacks */ -+# define YYDPRINTF(Args) \ -+do { \ -+ if (yydebug) \ -+ YYFPRINTF Args; \ -+} while (0) -+/* Nonzero means print parse trace. It is left uninitialized so that -+ multiple parsers can coexist. */ -+int yydebug; -+#else /* !YYDEBUG */ -+# define YYDPRINTF(Args) -+#endif /* !YYDEBUG */ - -+/* YYINITDEPTH -- initial size of the parser's stacks. */ - #ifndef YYINITDEPTH --#define YYINITDEPTH 200 -+# 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). */ -+/* YYMAXDEPTH -- maximum size the stacks can grow to (effective only -+ if the built-in stack extension method is used). -+ -+ Do not make this value too large; the results are undefined if -+ SIZE_MAX < YYSTACK_BYTES (YYMAXDEPTH) -+ evaluated with infinite-precision integer arithmetic. */ - - #if YYMAXDEPTH == 0 --#undef YYMAXDEPTH -+# undef YYMAXDEPTH - #endif - - #ifndef YYMAXDEPTH --#define YYMAXDEPTH 10000 -+# 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 -+#ifdef YYERROR_VERBOSE - --/* 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; -+# ifndef yystrlen -+# if defined (__GLIBC__) && defined (_STRING_H) -+# define yystrlen strlen -+# else -+/* Return the length of YYSTR. */ -+static YYSIZE_T -+# if defined (__STDC__) || defined (__cplusplus) -+yystrlen (const char *yystr) -+# else -+yystrlen (yystr) -+ const char *yystr; -+# endif - { -- register char *f = from; -- register char *t = to; -- register int i = count; -+ register const char *yys = yystr; - -- while (i-- > 0) -- *t++ = *f++; --} -+ while (*yys++ != '\0') -+ continue; - --#else /* __cplusplus */ -+ return yys - yystr - 1; -+} -+# endif -+# endif - --/* 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) -+# ifndef yystpcpy -+# if defined (__GLIBC__) && defined (_STRING_H) && defined (_GNU_SOURCE) -+# define yystpcpy stpcpy -+# else -+/* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in -+ YYDEST. */ -+static char * -+# if defined (__STDC__) || defined (__cplusplus) -+yystpcpy (char *yydest, const char *yysrc) -+# else -+yystpcpy (yydest, yysrc) -+ char *yydest; -+ const char *yysrc; -+# endif - { -- register char *t = to; -- register char *f = from; -- register int i = count; -+ register char *yyd = yydest; -+ register const char *yys = yysrc; - -- while (i-- > 0) -- *t++ = *f++; --} -+ while ((*yyd++ = *yys++) != '\0') -+ continue; - --#endif -+ return yyd - 1; -+} -+# endif -+# endif - #endif - --#line 217 "/usr/share/bison/bison.simple" -+#line 315 "/usr/local/share/bison/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 *. -@@ -525,76 +619,121 @@ - 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 */ -+# if defined (__STDC__) || defined (__cplusplus) -+# define YYPARSE_PARAM_ARG void *YYPARSE_PARAM -+# define YYPARSE_PARAM_DECL -+# else -+# define YYPARSE_PARAM_ARG YYPARSE_PARAM -+# define YYPARSE_PARAM_DECL void *YYPARSE_PARAM; -+# endif -+#else /* !YYPARSE_PARAM */ -+# define YYPARSE_PARAM_ARG -+# define YYPARSE_PARAM_DECL -+#endif /* !YYPARSE_PARAM */ - - /* Prevent warning if -Wstrict-prototypes. */ - #ifdef __GNUC__ --#ifdef YYPARSE_PARAM -+# ifdef YYPARSE_PARAM - int yyparse (void *); --#else -+# else - int yyparse (void); -+# endif - #endif -+ -+/* YY_DECL_VARIABLES -- depending whether we use a pure parser, -+ variables are global, or local to YYPARSE. */ -+ -+#define YY_DECL_NON_LSP_VARIABLES \ -+/* The lookahead symbol. */ \ -+int yychar; \ -+ \ -+/* The semantic value of the lookahead symbol. */ \ -+YYSTYPE yylval; \ -+ \ -+/* Number of parse errors so far. */ \ -+int yynerrs; -+ -+#if YYLSP_NEEDED -+# define YY_DECL_VARIABLES \ -+YY_DECL_NON_LSP_VARIABLES \ -+ \ -+/* Location data for the lookahead symbol. */ \ -+YYLTYPE yylloc; -+#else -+# define YY_DECL_VARIABLES \ -+YY_DECL_NON_LSP_VARIABLES - #endif - -+ -+/* If nonreentrant, generate the variables here. */ -+ -+#if !YYPURE -+YY_DECL_VARIABLES -+#endif /* !YYPURE */ -+ - int --yyparse(YYPARSE_PARAM_ARG) -+yyparse (YYPARSE_PARAM_ARG) - YYPARSE_PARAM_DECL - { -+ /* If reentrant, generate the variables here. */ -+#if YYPURE -+ YY_DECL_VARIABLES -+#endif /* !YYPURE */ -+ - 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 */ -+ int yyresult; -+ /* Number of tokens to shift before error messages enabled. */ -+ int yyerrstatus; -+ /* Lookahead token as an internal (translated) token number. */ -+ int yychar1 = 0; - -- short yyssa[YYINITDEPTH]; /* the state stack */ -- YYSTYPE yyvsa[YYINITDEPTH]; /* the semantic value stack */ -+ /* Three stacks and their tools: -+ `yyss': related to states, -+ `yyvs': related to semantic values, -+ `yyls': related to locations. - -- short *yyss = yyssa; /* refer to the stacks thru separate pointers */ -- YYSTYPE *yyvs = yyvsa; /* to allow yyoverflow to reallocate them elsewhere */ -+ Refer to the stacks thru separate pointers, to allow yyoverflow -+ to reallocate them elsewhere. */ - --#ifdef YYLSP_NEEDED -- YYLTYPE yylsa[YYINITDEPTH]; /* the location stack */ -+ /* The state stack. */ -+ short yyssa[YYINITDEPTH]; -+ short *yyss = yyssa; -+ register short *yyssp; -+ -+ /* The semantic value stack. */ -+ YYSTYPE yyvsa[YYINITDEPTH]; -+ YYSTYPE *yyvs = yyvsa; -+ register YYSTYPE *yyvsp; -+ -+#if YYLSP_NEEDED -+ /* The location stack. */ -+ YYLTYPE yylsa[YYINITDEPTH]; - YYLTYPE *yyls = yylsa; - YYLTYPE *yylsp; -+#endif - --#define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) -+#if YYLSP_NEEDED -+# define YYPOPSTACK (yyvsp--, yyssp--, yylsp--) - #else --#define YYPOPSTACK (yyvsp--, yyssp--) -+# define YYPOPSTACK (yyvsp--, yyssp--) - #endif - -- int yystacksize = YYINITDEPTH; -- int yyfree_stacks = 0; -+ YYSIZE_T yystacksize = YYINITDEPTH; - --#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 */ -+ /* The variables used to return semantic value and location from the -+ action routines. */ -+ YYSTYPE yyval; -+#if YYLSP_NEEDED -+ YYLTYPE yyloc; -+#endif - -+ /* When reducing, the number of symbols on the RHS of the reduced -+ rule. */ - int yylen; - --#if YYDEBUG != 0 -- if (yydebug) -- fprintf(stderr, "Starting parse\n"); --#endif -+ YYDPRINTF ((stderr, "Starting parse\n")); - - yystate = 0; - yyerrstatus = 0; -@@ -606,110 +745,110 @@ - so that they stay on the same level as the state stack. - The wasted elements are never initialized. */ - -- yyssp = yyss - 1; -+ yyssp = yyss; - yyvsp = yyvs; --#ifdef YYLSP_NEEDED -+#if YYLSP_NEEDED - yylsp = yyls; - #endif -+ goto yysetstate; - --/* 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: -+/*------------------------------------------------------------. -+| yynewstate -- Push a new state, which is found in yystate. | -+`------------------------------------------------------------*/ -+ yynewstate: -+ /* In all cases, when you get here, the value and location stacks -+ have just been pushed. so pushing a state here evens the stacks. -+ */ -+ yyssp++; - -- *++yyssp = yystate; -+ yysetstate: -+ *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; -+ YYSIZE_T yysize = 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 -+ { -+ /* 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; - -- yyss = yyss1; yyvs = yyvs1; --#ifdef YYLSP_NEEDED -- yyls = yyls1; --#endif -+ /* Each stack pointer address is followed by the size of the -+ data in use in that stack, in bytes. */ -+# if YYLSP_NEEDED -+ YYLTYPE *yyls1 = yyls; -+ /* 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, yysize * sizeof (*yyssp), -+ &yyvs1, yysize * sizeof (*yyvsp), -+ &yyls1, yysize * sizeof (*yylsp), -+ &yystacksize); -+ yyls = yyls1; -+# else -+ yyoverflow ("parser stack overflow", -+ &yyss1, yysize * sizeof (*yyssp), -+ &yyvs1, yysize * sizeof (*yyvsp), -+ &yystacksize); -+# endif -+ yyss = yyss1; -+ yyvs = yyvs1; -+ } - #else /* no yyoverflow */ -+# ifndef YYSTACK_RELOCATE -+ goto yyoverflowlab; -+# else - /* 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; -- } -+ goto yyoverflowlab; - 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 -+ -+ { -+ short *yyss1 = yyss; -+ union yyalloc *yyptr = -+ (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize)); -+ if (! yyptr) -+ goto yyoverflowlab; -+ YYSTACK_RELOCATE (yyss); -+ YYSTACK_RELOCATE (yyvs); -+# if YYLSP_NEEDED -+ YYSTACK_RELOCATE (yyls); -+# endif -+# undef YYSTACK_RELOCATE -+ if (yyss1 != yyssa) -+ YYSTACK_FREE (yyss1); -+ } -+# endif - #endif /* no yyoverflow */ - -- yyssp = yyss + size - 1; -- yyvsp = yyvs + size - 1; --#ifdef YYLSP_NEEDED -- yylsp = yyls + size - 1; -+ yyssp = yyss + yysize - 1; -+ yyvsp = yyvs + yysize - 1; -+#if YYLSP_NEEDED -+ yylsp = yyls + yysize - 1; - #endif - --#if YYDEBUG != 0 -- if (yydebug) -- fprintf(stderr, "Stack size increased to %d\n", yystacksize); --#endif -+ YYDPRINTF ((stderr, "Stack size increased to %lu\n", -+ (unsigned long int) yystacksize)); - - if (yyssp >= yyss + yystacksize - 1) - YYABORT; - } - --#if YYDEBUG != 0 -- if (yydebug) -- fprintf(stderr, "Entering state %d\n", yystate); --#endif -+ YYDPRINTF ((stderr, "Entering state %d\n", yystate)); - - goto yybackup; -- yybackup: -+ -+ -+/*-----------. -+| yybackup. | -+`-----------*/ -+yybackup: - - /* Do appropriate processing given the current state. */ - /* Read a lookahead token if we need one and don't already have one. */ -@@ -728,10 +867,7 @@ - - if (yychar == YYEMPTY) - { --#if YYDEBUG != 0 -- if (yydebug) -- fprintf(stderr, "Reading a token: "); --#endif -+ YYDPRINTF ((stderr, "Reading a token: ")); - yychar = YYLEX; - } - -@@ -742,25 +878,25 @@ - yychar1 = 0; - yychar = YYEOF; /* Don't call YYLEX any more */ - --#if YYDEBUG != 0 -- if (yydebug) -- fprintf(stderr, "Now at end of input.\n"); --#endif -+ YYDPRINTF ((stderr, "Now at end of input.\n")); - } - else - { -- yychar1 = YYTRANSLATE(yychar); -+ yychar1 = YYTRANSLATE (yychar); - --#if YYDEBUG != 0 -+#if YYDEBUG -+ /* We have to keep this `#if YYDEBUG', since we use variables -+ which are defined only if `YYDEBUG' is set. */ - 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 -+ YYFPRINTF (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 -+ YYFPRINTF (stderr, ")\n"); - } - #endif - } -@@ -792,177 +928,185 @@ - YYACCEPT; - - /* Shift the lookahead token. */ -- --#if YYDEBUG != 0 -- if (yydebug) -- fprintf(stderr, "Shifting token %d (%s), ", yychar, yytname[yychar1]); --#endif -+ YYDPRINTF ((stderr, "Shifting token %d (%s), ", -+ yychar, yytname[yychar1])); - - /* Discard the token being shifted unless it is eof. */ - if (yychar != YYEOF) - yychar = YYEMPTY; - - *++yyvsp = yylval; --#ifdef YYLSP_NEEDED -+#if YYLSP_NEEDED - *++yylsp = yylloc; - #endif - -- /* count tokens shifted since error; after three, turn off error status. */ -- if (yyerrstatus) yyerrstatus--; -+ /* 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: - -+/*-----------------------------------------------------------. -+| yydefault -- do the default action for the current state. | -+`-----------------------------------------------------------*/ -+yydefault: - yyn = yydefact[yystate]; - if (yyn == 0) - goto yyerrlab; -+ goto yyreduce; - --/* Do a reduction. yyn is the number of a rule to reduce with. */ -+ -+/*-----------------------------. -+| yyreduce -- Do a reduction. | -+`-----------------------------*/ - yyreduce: -+ /* yyn is the number of a rule to reduce with. */ - yylen = yyr2[yyn]; -- if (yylen > 0) -- yyval = yyvsp[1-yylen]; /* implement default value of the action */ - --#if YYDEBUG != 0 -+ /* If YYLEN is nonzero, implement the default value of the action: -+ `$$ = $1'. -+ -+ Otherwise, the following line sets YYVAL to the semantic value of -+ the lookahead token. This behavior is undocumented and Bison -+ users should not rely upon it. Assigning to YYVAL -+ unconditionally makes the parser a bit smaller, and it avoids a -+ GCC warning that YYVAL may be used uninitialized. */ -+ yyval = yyvsp[1-yylen]; -+ -+#if YYLSP_NEEDED -+ /* Similarly for the default location. Let the user run additional -+ commands if for instance locations are ranges. */ -+ yyloc = yylsp[1-yylen]; -+ YYLLOC_DEFAULT (yyloc, (yylsp - yylen), yylen); -+#endif -+ -+#if YYDEBUG -+ /* We have to keep this `#if YYDEBUG', since we use variables which -+ are defined only if `YYDEBUG' is set. */ - if (yydebug) - { -- int i; -+ int yyi; - -- fprintf (stderr, "Reducing via rule %d (line %d), ", -- yyn, yyrline[yyn]); -+ YYFPRINTF (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]]); -+ for (yyi = yyprhs[yyn]; yyrhs[yyi] > 0; yyi++) -+ YYFPRINTF (stderr, "%s ", yytname[yyrhs[yyi]]); -+ YYFPRINTF (stderr, " -> %s\n", yytname[yyr1[yyn]]); - } - #endif - -- - switch (yyn) { - - case 1: --#line 178 "plural.y" -+#line 151 "plural.y" - { - if (yyvsp[0].exp == NULL) - YYABORT; - ((struct parse_args *) arg)->res = yyvsp[0].exp; -- ; -- break;} -+ } -+ break; - case 2: --#line 186 "plural.y" -+#line 159 "plural.y" - { - yyval.exp = new_exp_3 (qmop, yyvsp[-4].exp, yyvsp[-2].exp, yyvsp[0].exp); -- ; -- break;} -+ } -+ break; - case 3: --#line 190 "plural.y" -+#line 163 "plural.y" - { - yyval.exp = new_exp_2 (lor, yyvsp[-2].exp, yyvsp[0].exp); -- ; -- break;} -+ } -+ break; - case 4: --#line 194 "plural.y" -+#line 167 "plural.y" - { - yyval.exp = new_exp_2 (land, yyvsp[-2].exp, yyvsp[0].exp); -- ; -- break;} -+ } -+ break; - case 5: --#line 198 "plural.y" -+#line 171 "plural.y" - { - yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); -- ; -- break;} -+ } -+ break; - case 6: --#line 202 "plural.y" -+#line 175 "plural.y" - { - yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); -- ; -- break;} -+ } -+ break; - case 7: --#line 206 "plural.y" -+#line 179 "plural.y" - { - yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); -- ; -- break;} -+ } -+ break; - case 8: --#line 210 "plural.y" -+#line 183 "plural.y" - { - yyval.exp = new_exp_2 (yyvsp[-1].op, yyvsp[-2].exp, yyvsp[0].exp); -- ; -- break;} -+ } -+ break; - case 9: --#line 214 "plural.y" -+#line 187 "plural.y" - { - yyval.exp = new_exp_1 (lnot, yyvsp[0].exp); -- ; -- break;} -+ } -+ break; - case 10: --#line 218 "plural.y" -+#line 191 "plural.y" - { - yyval.exp = new_exp_0 (var); -- ; -- break;} -+ } -+ break; - case 11: --#line 222 "plural.y" -+#line 195 "plural.y" - { - if ((yyval.exp = new_exp_0 (num)) != NULL) - yyval.exp->val.num = yyvsp[0].num; -- ; -- break;} -+ } -+ break; - case 12: --#line 227 "plural.y" -+#line 200 "plural.y" - { - yyval.exp = yyvsp[-1].exp; -- ; -- break;} -+ } -+ break; - } -- /* the action file gets copied in in place of this dollarsign */ --#line 543 "/usr/share/bison/bison.simple" -+ -+#line 705 "/usr/local/share/bison/bison.simple" -+ - - yyvsp -= yylen; - yyssp -= yylen; --#ifdef YYLSP_NEEDED -+#if YYLSP_NEEDED - yylsp -= yylen; - #endif - --#if YYDEBUG != 0 -+#if YYDEBUG - if (yydebug) - { -- short *ssp1 = yyss - 1; -- fprintf (stderr, "state stack now"); -- while (ssp1 != yyssp) -- fprintf (stderr, " %d", *++ssp1); -- fprintf (stderr, "\n"); -+ short *yyssp1 = yyss - 1; -+ YYFPRINTF (stderr, "state stack now"); -+ while (yyssp1 != yyssp) -+ YYFPRINTF (stderr, " %d", *++yyssp1); -+ YYFPRINTF (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; -- } -+#if YYLSP_NEEDED -+ *++yylsp = yyloc; - #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. */ -+ /* 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]; - -@@ -974,10 +1118,13 @@ - - goto yynewstate; - --yyerrlab: /* here on detecting error */ - -- if (! yyerrstatus) -- /* If not already recovering from an error, report this error. */ -+/*------------------------------------. -+| yyerrlab -- here on detecting error | -+`------------------------------------*/ -+yyerrlab: -+ /* If not already recovering from an error, report this error. */ -+ if (!yyerrstatus) - { - ++yynerrs; - -@@ -986,102 +1133,121 @@ - - if (yyn > YYFLAG && yyn < YYLAST) - { -- int size = 0; -- char *msg; -- int x, count; -+ YYSIZE_T yysize = 0; -+ char *yymsg; -+ int yyx, yycount; - -- 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) -+ yycount = 0; -+ /* Start YYX at -YYN if negative to avoid negative indexes in -+ YYCHECK. */ -+ for (yyx = yyn < 0 ? -yyn : 0; -+ yyx < (int) (sizeof (yytname) / sizeof (char *)); yyx++) -+ if (yycheck[yyx + yyn] == yyx) -+ yysize += yystrlen (yytname[yyx]) + 15, yycount++; -+ yysize += yystrlen ("parse error, unexpected ") + 1; -+ yysize += yystrlen (yytname[YYTRANSLATE (yychar)]); -+ yymsg = (char *) YYSTACK_ALLOC (yysize); -+ if (yymsg != 0) - { -- strcpy(msg, "parse error"); -+ char *yyp = yystpcpy (yymsg, "parse error, unexpected "); -+ yyp = yystpcpy (yyp, yytname[YYTRANSLATE (yychar)]); - -- if (count < 5) -+ if (yycount < 5) - { -- count = 0; -- for (x = (yyn < 0 ? -yyn : 0); -- x < (sizeof(yytname) / sizeof(char *)); x++) -- if (yycheck[x + yyn] == x) -+ yycount = 0; -+ for (yyx = yyn < 0 ? -yyn : 0; -+ yyx < (int) (sizeof (yytname) / sizeof (char *)); -+ yyx++) -+ if (yycheck[yyx + yyn] == yyx) - { -- strcat(msg, count == 0 ? ", expecting `" : " or `"); -- strcat(msg, yytname[x]); -- strcat(msg, "'"); -- count++; -+ const char *yyq = ! yycount ? ", expecting " : " or "; -+ yyp = yystpcpy (yyp, yyq); -+ yyp = yystpcpy (yyp, yytname[yyx]); -+ yycount++; - } - } -- yyerror(msg); -- free(msg); -+ yyerror (yymsg); -+ YYSTACK_FREE (yymsg); - } - else -- yyerror ("parse error; also virtual memory exceeded"); -+ yyerror ("parse error; also virtual memory exhausted"); - } - else --#endif /* YYERROR_VERBOSE */ -- yyerror("parse error"); -+#endif /* defined (YYERROR_VERBOSE) */ -+ yyerror ("parse error"); - } -- - goto yyerrlab1; --yyerrlab1: /* here on error raised explicitly by an action */ - -+ -+/*--------------------------------------------------. -+| yyerrlab1 -- error raised explicitly by an action | -+`--------------------------------------------------*/ -+yyerrlab1: - if (yyerrstatus == 3) - { -- /* if just tried and failed to reuse lookahead token after an error, discard it. */ -+ /* 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 -- -+ YYDPRINTF ((stderr, "Discarding token %d (%s).\n", -+ yychar, yytname[yychar1])); - yychar = YYEMPTY; - } - -- /* Else will try to reuse lookahead token -- after shifting the error token. */ -+ /* 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. */ - -+/*-------------------------------------------------------------------. -+| yyerrdefault -- current state does not do anything special for the | -+| error token. | -+`-------------------------------------------------------------------*/ -+yyerrdefault: - #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; -+ -+ /* If its default is to accept any token, ok. Otherwise pop it. */ -+ yyn = yydefact[yystate]; -+ if (yyn) -+ goto yydefault; - #endif - --yyerrpop: /* pop the current state because it cannot handle the error token */ - -- if (yyssp == yyss) YYABORT; -+/*---------------------------------------------------------------. -+| yyerrpop -- pop the current state because it cannot handle the | -+| error token | -+`---------------------------------------------------------------*/ -+yyerrpop: -+ if (yyssp == yyss) -+ YYABORT; - yyvsp--; - yystate = *--yyssp; --#ifdef YYLSP_NEEDED -+#if YYLSP_NEEDED - yylsp--; - #endif - --#if YYDEBUG != 0 -+#if YYDEBUG - if (yydebug) - { -- short *ssp1 = yyss - 1; -- fprintf (stderr, "Error: state stack now"); -- while (ssp1 != yyssp) -- fprintf (stderr, " %d", *++ssp1); -- fprintf (stderr, "\n"); -+ short *yyssp1 = yyss - 1; -+ YYFPRINTF (stderr, "Error: state stack now"); -+ while (yyssp1 != yyssp) -+ YYFPRINTF (stderr, " %d", *++yyssp1); -+ YYFPRINTF (stderr, "\n"); - } - #endif - -+/*--------------. -+| yyerrhandle. | -+`--------------*/ - yyerrhandle: -- - yyn = yypact[yystate]; - if (yyn == YYFLAG) - goto yyerrdefault; -@@ -1104,50 +1270,52 @@ - if (yyn == YYFINAL) - YYACCEPT; - --#if YYDEBUG != 0 -- if (yydebug) -- fprintf(stderr, "Shifting error token, "); --#endif -+ YYDPRINTF ((stderr, "Shifting error token, ")); - - *++yyvsp = yylval; --#ifdef YYLSP_NEEDED -+#if 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); -+/*-------------------------------------. -+| yyacceptlab -- YYACCEPT comes here. | -+`-------------------------------------*/ -+yyacceptlab: -+ yyresult = 0; -+ goto yyreturn; -+ -+/*-----------------------------------. -+| yyabortlab -- YYABORT comes here. | -+`-----------------------------------*/ -+yyabortlab: -+ yyresult = 1; -+ goto yyreturn; -+ -+/*---------------------------------------------. -+| yyoverflowab -- parser overflow comes here. | -+`---------------------------------------------*/ -+yyoverflowlab: -+ yyerror ("parser stack overflow"); -+ yyresult = 2; -+ /* Fall through. */ -+ -+yyreturn: -+#ifndef yyoverflow -+ if (yyss != yyssa) -+ YYSTACK_FREE (yyss); - #endif -- } -- return 1; -+ return yyresult; - } --#line 232 "plural.y" -+#line 205 "plural.y" - - - void - internal_function --FREE_EXPRESSION (exp) -- struct expression *exp; -+FREE_EXPRESSION (struct expression *exp) - { - if (exp == NULL) - return; -@@ -1173,9 +1341,7 @@ - - - static int --yylex (lval, pexp) -- YYSTYPE *lval; -- const char **pexp; -+yylex (YYSTYPE *lval, const char **pexp) - { - const char *exp = *pexp; - int result; -@@ -1318,8 +1484,7 @@ - - - static void --yyerror (str) -- const char *str; -+yyerror (const char *str) - { - /* Do nothing. We don't print error messages here. */ - } -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/plural.y psmisc-20.2.works.clean/intl/plural.y ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/plural.y 2001-04-13 23:00:43.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/plural.y 2004-10-13 15:18:41.000000000 -0500 -@@ -1,21 +1,22 @@ - %{ - /* Expression parsing for plural form selection. -- Copyright (C) 2000, 2001 Free Software Foundation, Inc. -+ Copyright (C) 2000-2001, 2003 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) -+ 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 General Public License for more details. -+ 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 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. */ -+ 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 bison generated parser uses alloca. AIX 3 forces us to put this - declaration at the beginning of the file. The declaration in bison's -@@ -29,25 +30,21 @@ - # include <config.h> - #endif - -+#include <stddef.h> - #include <stdlib.h> --#include "gettextP.h" -+#include "plural-exp.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__ -+/* The main function generated by the parser is called __gettextparse, -+ but we want it to be called PLURAL_PARSE. */ -+#ifndef _LIBC -+# define __gettextparse PLURAL_PARSE - #endif - - #define YYLEX_PARAM &((struct parse_args *) arg)->cp - #define YYPARSE_PARAM arg - %} - %pure_parser --%expect 10 -+%expect 7 - - %union { - unsigned long int num; -@@ -57,28 +54,13 @@ - - %{ - /* 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)); -+static int yylex (YYSTYPE *lval, const char **pexp); -+static void yyerror (const char *str); - - /* Allocation of expressions. */ - - static struct expression * --new_exp (nargs, op, args) -- int nargs; -- enum operator op; -- struct expression * const *args; -+new_exp (int nargs, enum operator op, struct expression * const *args) - { - int i; - struct expression *newp; -@@ -107,16 +89,13 @@ - } - - static inline struct expression * --new_exp_0 (op) -- enum operator op; -+new_exp_0 (enum operator op) - { - return new_exp (0, op, NULL); - } - - static inline struct expression * --new_exp_1 (op, right) -- enum operator op; -- struct expression *right; -+new_exp_1 (enum operator op, struct expression *right) - { - struct expression *args[1]; - -@@ -125,10 +104,7 @@ - } - - static struct expression * --new_exp_2 (op, left, right) -- enum operator op; -- struct expression *left; -- struct expression *right; -+new_exp_2 (enum operator op, struct expression *left, struct expression *right) - { - struct expression *args[2]; - -@@ -138,11 +114,8 @@ - } - - static inline struct expression * --new_exp_3 (op, bexp, tbranch, fbranch) -- enum operator op; -- struct expression *bexp; -- struct expression *tbranch; -- struct expression *fbranch; -+new_exp_3 (enum operator op, struct expression *bexp, -+ struct expression *tbranch, struct expression *fbranch) - { - struct expression *args[3]; - -@@ -233,8 +206,7 @@ - - void - internal_function --FREE_EXPRESSION (exp) -- struct expression *exp; -+FREE_EXPRESSION (struct expression *exp) - { - if (exp == NULL) - return; -@@ -260,9 +232,7 @@ - - - static int --yylex (lval, pexp) -- YYSTYPE *lval; -- const char **pexp; -+yylex (YYSTYPE *lval, const char **pexp) - { - const char *exp = *pexp; - int result; -@@ -405,8 +375,7 @@ - - - static void --yyerror (str) -- const char *str; -+yyerror (const char *str) - { - /* Do nothing. We don't print error messages here. */ - } -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/printf-args.c psmisc-20.2.works.clean/intl/printf-args.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/printf-args.c 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/printf-args.c 2004-10-13 15:18:41.000000000 -0500 -@@ -0,0 +1,119 @@ -+/* Decomposed printf argument list. -+ Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc. -+ -+ This program is free software; you can redistribute it and/or modify it -+ under the terms of the GNU 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. */ -+ -+#ifdef HAVE_CONFIG_H -+# include <config.h> -+#endif -+ -+/* Specification. */ -+#include "printf-args.h" -+ -+#ifdef STATIC -+STATIC -+#endif -+int -+printf_fetchargs (va_list args, arguments *a) -+{ -+ size_t i; -+ argument *ap; -+ -+ for (i = 0, ap = &a->arg[0]; i < a->count; i++, ap++) -+ switch (ap->type) -+ { -+ case TYPE_SCHAR: -+ ap->a.a_schar = va_arg (args, /*signed char*/ int); -+ break; -+ case TYPE_UCHAR: -+ ap->a.a_uchar = va_arg (args, /*unsigned char*/ int); -+ break; -+ case TYPE_SHORT: -+ ap->a.a_short = va_arg (args, /*short*/ int); -+ break; -+ case TYPE_USHORT: -+ ap->a.a_ushort = va_arg (args, /*unsigned short*/ int); -+ break; -+ case TYPE_INT: -+ ap->a.a_int = va_arg (args, int); -+ break; -+ case TYPE_UINT: -+ ap->a.a_uint = va_arg (args, unsigned int); -+ break; -+ case TYPE_LONGINT: -+ ap->a.a_longint = va_arg (args, long int); -+ break; -+ case TYPE_ULONGINT: -+ ap->a.a_ulongint = va_arg (args, unsigned long int); -+ break; -+#ifdef HAVE_LONG_LONG -+ case TYPE_LONGLONGINT: -+ ap->a.a_longlongint = va_arg (args, long long int); -+ break; -+ case TYPE_ULONGLONGINT: -+ ap->a.a_ulonglongint = va_arg (args, unsigned long long int); -+ break; -+#endif -+ case TYPE_DOUBLE: -+ ap->a.a_double = va_arg (args, double); -+ break; -+#ifdef HAVE_LONG_DOUBLE -+ case TYPE_LONGDOUBLE: -+ ap->a.a_longdouble = va_arg (args, long double); -+ break; -+#endif -+ case TYPE_CHAR: -+ ap->a.a_char = va_arg (args, int); -+ break; -+#ifdef HAVE_WINT_T -+ case TYPE_WIDE_CHAR: -+ ap->a.a_wide_char = va_arg (args, wint_t); -+ break; -+#endif -+ case TYPE_STRING: -+ ap->a.a_string = va_arg (args, const char *); -+ break; -+#ifdef HAVE_WCHAR_T -+ case TYPE_WIDE_STRING: -+ ap->a.a_wide_string = va_arg (args, const wchar_t *); -+ break; -+#endif -+ case TYPE_POINTER: -+ ap->a.a_pointer = va_arg (args, void *); -+ break; -+ case TYPE_COUNT_SCHAR_POINTER: -+ ap->a.a_count_schar_pointer = va_arg (args, signed char *); -+ break; -+ case TYPE_COUNT_SHORT_POINTER: -+ ap->a.a_count_short_pointer = va_arg (args, short *); -+ break; -+ case TYPE_COUNT_INT_POINTER: -+ ap->a.a_count_int_pointer = va_arg (args, int *); -+ break; -+ case TYPE_COUNT_LONGINT_POINTER: -+ ap->a.a_count_longint_pointer = va_arg (args, long int *); -+ break; -+#ifdef HAVE_LONG_LONG -+ case TYPE_COUNT_LONGLONGINT_POINTER: -+ ap->a.a_count_longlongint_pointer = va_arg (args, long long int *); -+ break; -+#endif -+ default: -+ /* Unknown type. */ -+ return -1; -+ } -+ return 0; -+} -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/printf-args.h psmisc-20.2.works.clean/intl/printf-args.h ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/printf-args.h 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/printf-args.h 2004-10-13 15:18:41.000000000 -0500 -@@ -0,0 +1,137 @@ -+/* Decomposed printf argument list. -+ Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc. -+ -+ This program is free software; you can redistribute it and/or modify it -+ under the terms of the GNU 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. */ -+ -+#ifndef _PRINTF_ARGS_H -+#define _PRINTF_ARGS_H -+ -+/* Get size_t. */ -+#include <stddef.h> -+ -+/* Get wchar_t. */ -+#ifdef HAVE_WCHAR_T -+# include <stddef.h> -+#endif -+ -+/* Get wint_t. */ -+#ifdef HAVE_WINT_T -+# include <wchar.h> -+#endif -+ -+/* Get va_list. */ -+#include <stdarg.h> -+ -+ -+/* Argument types */ -+typedef enum -+{ -+ TYPE_NONE, -+ TYPE_SCHAR, -+ TYPE_UCHAR, -+ TYPE_SHORT, -+ TYPE_USHORT, -+ TYPE_INT, -+ TYPE_UINT, -+ TYPE_LONGINT, -+ TYPE_ULONGINT, -+#ifdef HAVE_LONG_LONG -+ TYPE_LONGLONGINT, -+ TYPE_ULONGLONGINT, -+#endif -+ TYPE_DOUBLE, -+#ifdef HAVE_LONG_DOUBLE -+ TYPE_LONGDOUBLE, -+#endif -+ TYPE_CHAR, -+#ifdef HAVE_WINT_T -+ TYPE_WIDE_CHAR, -+#endif -+ TYPE_STRING, -+#ifdef HAVE_WCHAR_T -+ TYPE_WIDE_STRING, -+#endif -+ TYPE_POINTER, -+ TYPE_COUNT_SCHAR_POINTER, -+ TYPE_COUNT_SHORT_POINTER, -+ TYPE_COUNT_INT_POINTER, -+ TYPE_COUNT_LONGINT_POINTER -+#ifdef HAVE_LONG_LONG -+, TYPE_COUNT_LONGLONGINT_POINTER -+#endif -+} arg_type; -+ -+/* Polymorphic argument */ -+typedef struct -+{ -+ arg_type type; -+ union -+ { -+ signed char a_schar; -+ unsigned char a_uchar; -+ short a_short; -+ unsigned short a_ushort; -+ int a_int; -+ unsigned int a_uint; -+ long int a_longint; -+ unsigned long int a_ulongint; -+#ifdef HAVE_LONG_LONG -+ long long int a_longlongint; -+ unsigned long long int a_ulonglongint; -+#endif -+ float a_float; -+ double a_double; -+#ifdef HAVE_LONG_DOUBLE -+ long double a_longdouble; -+#endif -+ int a_char; -+#ifdef HAVE_WINT_T -+ wint_t a_wide_char; -+#endif -+ const char* a_string; -+#ifdef HAVE_WCHAR_T -+ const wchar_t* a_wide_string; -+#endif -+ void* a_pointer; -+ signed char * a_count_schar_pointer; -+ short * a_count_short_pointer; -+ int * a_count_int_pointer; -+ long int * a_count_longint_pointer; -+#ifdef HAVE_LONG_LONG -+ long long int * a_count_longlongint_pointer; -+#endif -+ } -+ a; -+} -+argument; -+ -+typedef struct -+{ -+ size_t count; -+ argument *arg; -+} -+arguments; -+ -+ -+/* Fetch the arguments, putting them into a. */ -+#ifdef STATIC -+STATIC -+#else -+extern -+#endif -+int printf_fetchargs (va_list args, arguments *a); -+ -+#endif /* _PRINTF_ARGS_H */ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/printf-parse.c psmisc-20.2.works.clean/intl/printf-parse.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/printf-parse.c 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/printf-parse.c 2004-10-13 15:18:41.000000000 -0500 -@@ -0,0 +1,537 @@ -+/* Formatted output to strings. -+ Copyright (C) 1999-2000, 2002-2003 Free Software Foundation, Inc. -+ -+ This program is free software; you can redistribute it and/or modify it -+ under the terms of the GNU 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. */ -+ -+#ifdef HAVE_CONFIG_H -+# include <config.h> -+#endif -+ -+/* Specification. */ -+#if WIDE_CHAR_VERSION -+# include "wprintf-parse.h" -+#else -+# include "printf-parse.h" -+#endif -+ -+/* Get size_t, NULL. */ -+#include <stddef.h> -+ -+/* Get intmax_t. */ -+#if HAVE_STDINT_H_WITH_UINTMAX -+# include <stdint.h> -+#endif -+#if HAVE_INTTYPES_H_WITH_UINTMAX -+# include <inttypes.h> -+#endif -+ -+/* malloc(), realloc(), free(). */ -+#include <stdlib.h> -+ -+/* Checked size_t computations. */ -+#include "xsize.h" -+ -+#if WIDE_CHAR_VERSION -+# define PRINTF_PARSE wprintf_parse -+# define CHAR_T wchar_t -+# define DIRECTIVE wchar_t_directive -+# define DIRECTIVES wchar_t_directives -+#else -+# define PRINTF_PARSE printf_parse -+# define CHAR_T char -+# define DIRECTIVE char_directive -+# define DIRECTIVES char_directives -+#endif -+ -+#ifdef STATIC -+STATIC -+#endif -+int -+PRINTF_PARSE (const CHAR_T *format, DIRECTIVES *d, arguments *a) -+{ -+ const CHAR_T *cp = format; /* pointer into format */ -+ size_t arg_posn = 0; /* number of regular arguments consumed */ -+ size_t d_allocated; /* allocated elements of d->dir */ -+ size_t a_allocated; /* allocated elements of a->arg */ -+ size_t max_width_length = 0; -+ size_t max_precision_length = 0; -+ -+ d->count = 0; -+ d_allocated = 1; -+ d->dir = malloc (d_allocated * sizeof (DIRECTIVE)); -+ if (d->dir == NULL) -+ /* Out of memory. */ -+ return -1; -+ -+ a->count = 0; -+ a_allocated = 0; -+ a->arg = NULL; -+ -+#define REGISTER_ARG(_index_,_type_) \ -+ { \ -+ size_t n = (_index_); \ -+ if (n >= a_allocated) \ -+ { \ -+ size_t memory_size; \ -+ argument *memory; \ -+ \ -+ a_allocated = xtimes (a_allocated, 2); \ -+ if (a_allocated <= n) \ -+ a_allocated = xsum (n, 1); \ -+ memory_size = xtimes (a_allocated, sizeof (argument)); \ -+ if (size_overflow_p (memory_size)) \ -+ /* Overflow, would lead to out of memory. */ \ -+ goto error; \ -+ memory = (a->arg \ -+ ? realloc (a->arg, memory_size) \ -+ : malloc (memory_size)); \ -+ if (memory == NULL) \ -+ /* Out of memory. */ \ -+ goto error; \ -+ a->arg = memory; \ -+ } \ -+ while (a->count <= n) \ -+ a->arg[a->count++].type = TYPE_NONE; \ -+ if (a->arg[n].type == TYPE_NONE) \ -+ a->arg[n].type = (_type_); \ -+ else if (a->arg[n].type != (_type_)) \ -+ /* Ambiguous type for positional argument. */ \ -+ goto error; \ -+ } -+ -+ while (*cp != '\0') -+ { -+ CHAR_T c = *cp++; -+ if (c == '%') -+ { -+ size_t arg_index = ARG_NONE; -+ DIRECTIVE *dp = &d->dir[d->count];/* pointer to next directive */ -+ -+ /* Initialize the next directive. */ -+ dp->dir_start = cp - 1; -+ dp->flags = 0; -+ dp->width_start = NULL; -+ dp->width_end = NULL; -+ dp->width_arg_index = ARG_NONE; -+ dp->precision_start = NULL; -+ dp->precision_end = NULL; -+ dp->precision_arg_index = ARG_NONE; -+ dp->arg_index = ARG_NONE; -+ -+ /* Test for positional argument. */ -+ if (*cp >= '0' && *cp <= '9') -+ { -+ const CHAR_T *np; -+ -+ for (np = cp; *np >= '0' && *np <= '9'; np++) -+ ; -+ if (*np == '$') -+ { -+ size_t n = 0; -+ -+ for (np = cp; *np >= '0' && *np <= '9'; np++) -+ n = xsum (xtimes (n, 10), *np - '0'); -+ if (n == 0) -+ /* Positional argument 0. */ -+ goto error; -+ if (size_overflow_p (n)) -+ /* n too large, would lead to out of memory later. */ -+ goto error; -+ arg_index = n - 1; -+ cp = np + 1; -+ } -+ } -+ -+ /* Read the flags. */ -+ for (;;) -+ { -+ if (*cp == '\'') -+ { -+ dp->flags |= FLAG_GROUP; -+ cp++; -+ } -+ else if (*cp == '-') -+ { -+ dp->flags |= FLAG_LEFT; -+ cp++; -+ } -+ else if (*cp == '+') -+ { -+ dp->flags |= FLAG_SHOWSIGN; -+ cp++; -+ } -+ else if (*cp == ' ') -+ { -+ dp->flags |= FLAG_SPACE; -+ cp++; -+ } -+ else if (*cp == '#') -+ { -+ dp->flags |= FLAG_ALT; -+ cp++; -+ } -+ else if (*cp == '0') -+ { -+ dp->flags |= FLAG_ZERO; -+ cp++; -+ } -+ else -+ break; -+ } -+ -+ /* Parse the field width. */ -+ if (*cp == '*') -+ { -+ dp->width_start = cp; -+ cp++; -+ dp->width_end = cp; -+ if (max_width_length < 1) -+ max_width_length = 1; -+ -+ /* Test for positional argument. */ -+ if (*cp >= '0' && *cp <= '9') -+ { -+ const CHAR_T *np; -+ -+ for (np = cp; *np >= '0' && *np <= '9'; np++) -+ ; -+ if (*np == '$') -+ { -+ size_t n = 0; -+ -+ for (np = cp; *np >= '0' && *np <= '9'; np++) -+ n = xsum (xtimes (n, 10), *np - '0'); -+ if (n == 0) -+ /* Positional argument 0. */ -+ goto error; -+ if (size_overflow_p (n)) -+ /* n too large, would lead to out of memory later. */ -+ goto error; -+ dp->width_arg_index = n - 1; -+ cp = np + 1; -+ } -+ } -+ if (dp->width_arg_index == ARG_NONE) -+ { -+ dp->width_arg_index = arg_posn++; -+ if (dp->width_arg_index == ARG_NONE) -+ /* arg_posn wrapped around. */ -+ goto error; -+ } -+ REGISTER_ARG (dp->width_arg_index, TYPE_INT); -+ } -+ else if (*cp >= '0' && *cp <= '9') -+ { -+ size_t width_length; -+ -+ dp->width_start = cp; -+ for (; *cp >= '0' && *cp <= '9'; cp++) -+ ; -+ dp->width_end = cp; -+ width_length = dp->width_end - dp->width_start; -+ if (max_width_length < width_length) -+ max_width_length = width_length; -+ } -+ -+ /* Parse the precision. */ -+ if (*cp == '.') -+ { -+ cp++; -+ if (*cp == '*') -+ { -+ dp->precision_start = cp - 1; -+ cp++; -+ dp->precision_end = cp; -+ if (max_precision_length < 2) -+ max_precision_length = 2; -+ -+ /* Test for positional argument. */ -+ if (*cp >= '0' && *cp <= '9') -+ { -+ const CHAR_T *np; -+ -+ for (np = cp; *np >= '0' && *np <= '9'; np++) -+ ; -+ if (*np == '$') -+ { -+ size_t n = 0; -+ -+ for (np = cp; *np >= '0' && *np <= '9'; np++) -+ n = xsum (xtimes (n, 10), *np - '0'); -+ if (n == 0) -+ /* Positional argument 0. */ -+ goto error; -+ if (size_overflow_p (n)) -+ /* n too large, would lead to out of memory -+ later. */ -+ goto error; -+ dp->precision_arg_index = n - 1; -+ cp = np + 1; -+ } -+ } -+ if (dp->precision_arg_index == ARG_NONE) -+ { -+ dp->precision_arg_index = arg_posn++; -+ if (dp->precision_arg_index == ARG_NONE) -+ /* arg_posn wrapped around. */ -+ goto error; -+ } -+ REGISTER_ARG (dp->precision_arg_index, TYPE_INT); -+ } -+ else -+ { -+ size_t precision_length; -+ -+ dp->precision_start = cp - 1; -+ for (; *cp >= '0' && *cp <= '9'; cp++) -+ ; -+ dp->precision_end = cp; -+ precision_length = dp->precision_end - dp->precision_start; -+ if (max_precision_length < precision_length) -+ max_precision_length = precision_length; -+ } -+ } -+ -+ { -+ arg_type type; -+ -+ /* Parse argument type/size specifiers. */ -+ { -+ int flags = 0; -+ -+ for (;;) -+ { -+ if (*cp == 'h') -+ { -+ flags |= (1 << (flags & 1)); -+ cp++; -+ } -+ else if (*cp == 'L') -+ { -+ flags |= 4; -+ cp++; -+ } -+ else if (*cp == 'l') -+ { -+ flags += 8; -+ cp++; -+ } -+#ifdef HAVE_INTMAX_T -+ else if (*cp == 'j') -+ { -+ if (sizeof (intmax_t) > sizeof (long)) -+ { -+ /* intmax_t = long long */ -+ flags += 16; -+ } -+ else if (sizeof (intmax_t) > sizeof (int)) -+ { -+ /* intmax_t = long */ -+ flags += 8; -+ } -+ cp++; -+ } -+#endif -+ else if (*cp == 'z' || *cp == 'Z') -+ { -+ /* 'z' is standardized in ISO C 99, but glibc uses 'Z' -+ because the warning facility in gcc-2.95.2 understands -+ only 'Z' (see gcc-2.95.2/gcc/c-common.c:1784). */ -+ if (sizeof (size_t) > sizeof (long)) -+ { -+ /* size_t = long long */ -+ flags += 16; -+ } -+ else if (sizeof (size_t) > sizeof (int)) -+ { -+ /* size_t = long */ -+ flags += 8; -+ } -+ cp++; -+ } -+ else if (*cp == 't') -+ { -+ if (sizeof (ptrdiff_t) > sizeof (long)) -+ { -+ /* ptrdiff_t = long long */ -+ flags += 16; -+ } -+ else if (sizeof (ptrdiff_t) > sizeof (int)) -+ { -+ /* ptrdiff_t = long */ -+ flags += 8; -+ } -+ cp++; -+ } -+ else -+ break; -+ } -+ -+ /* Read the conversion character. */ -+ c = *cp++; -+ switch (c) -+ { -+ case 'd': case 'i': -+#ifdef HAVE_LONG_LONG -+ if (flags >= 16 || (flags & 4)) -+ type = TYPE_LONGLONGINT; -+ else -+#endif -+ if (flags >= 8) -+ type = TYPE_LONGINT; -+ else if (flags & 2) -+ type = TYPE_SCHAR; -+ else if (flags & 1) -+ type = TYPE_SHORT; -+ else -+ type = TYPE_INT; -+ break; -+ case 'o': case 'u': case 'x': case 'X': -+#ifdef HAVE_LONG_LONG -+ if (flags >= 16 || (flags & 4)) -+ type = TYPE_ULONGLONGINT; -+ else -+#endif -+ if (flags >= 8) -+ type = TYPE_ULONGINT; -+ else if (flags & 2) -+ type = TYPE_UCHAR; -+ else if (flags & 1) -+ type = TYPE_USHORT; -+ else -+ type = TYPE_UINT; -+ break; -+ case 'f': case 'F': case 'e': case 'E': case 'g': case 'G': -+ case 'a': case 'A': -+#ifdef HAVE_LONG_DOUBLE -+ if (flags >= 16 || (flags & 4)) -+ type = TYPE_LONGDOUBLE; -+ else -+#endif -+ type = TYPE_DOUBLE; -+ break; -+ case 'c': -+ if (flags >= 8) -+#ifdef HAVE_WINT_T -+ type = TYPE_WIDE_CHAR; -+#else -+ goto error; -+#endif -+ else -+ type = TYPE_CHAR; -+ break; -+#ifdef HAVE_WINT_T -+ case 'C': -+ type = TYPE_WIDE_CHAR; -+ c = 'c'; -+ break; -+#endif -+ case 's': -+ if (flags >= 8) -+#ifdef HAVE_WCHAR_T -+ type = TYPE_WIDE_STRING; -+#else -+ goto error; -+#endif -+ else -+ type = TYPE_STRING; -+ break; -+#ifdef HAVE_WCHAR_T -+ case 'S': -+ type = TYPE_WIDE_STRING; -+ c = 's'; -+ break; -+#endif -+ case 'p': -+ type = TYPE_POINTER; -+ break; -+ case 'n': -+#ifdef HAVE_LONG_LONG -+ if (flags >= 16 || (flags & 4)) -+ type = TYPE_COUNT_LONGLONGINT_POINTER; -+ else -+#endif -+ if (flags >= 8) -+ type = TYPE_COUNT_LONGINT_POINTER; -+ else if (flags & 2) -+ type = TYPE_COUNT_SCHAR_POINTER; -+ else if (flags & 1) -+ type = TYPE_COUNT_SHORT_POINTER; -+ else -+ type = TYPE_COUNT_INT_POINTER; -+ break; -+ case '%': -+ type = TYPE_NONE; -+ break; -+ default: -+ /* Unknown conversion character. */ -+ goto error; -+ } -+ } -+ -+ if (type != TYPE_NONE) -+ { -+ dp->arg_index = arg_index; -+ if (dp->arg_index == ARG_NONE) -+ { -+ dp->arg_index = arg_posn++; -+ if (dp->arg_index == ARG_NONE) -+ /* arg_posn wrapped around. */ -+ goto error; -+ } -+ REGISTER_ARG (dp->arg_index, type); -+ } -+ dp->conversion = c; -+ dp->dir_end = cp; -+ } -+ -+ d->count++; -+ if (d->count >= d_allocated) -+ { -+ size_t memory_size; -+ DIRECTIVE *memory; -+ -+ d_allocated = xtimes (d_allocated, 2); -+ memory_size = xtimes (d_allocated, sizeof (DIRECTIVE)); -+ if (size_overflow_p (memory_size)) -+ /* Overflow, would lead to out of memory. */ -+ goto error; -+ memory = realloc (d->dir, memory_size); -+ if (memory == NULL) -+ /* Out of memory. */ -+ goto error; -+ d->dir = memory; -+ } -+ } -+ } -+ d->dir[d->count].dir_start = cp; -+ -+ d->max_width_length = max_width_length; -+ d->max_precision_length = max_precision_length; -+ return 0; -+ -+error: -+ if (a->arg) -+ free (a->arg); -+ if (d->dir) -+ free (d->dir); -+ return -1; -+} -+ -+#undef DIRECTIVES -+#undef DIRECTIVE -+#undef CHAR_T -+#undef PRINTF_PARSE -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/printf-parse.h psmisc-20.2.works.clean/intl/printf-parse.h ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/printf-parse.h 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/printf-parse.h 2004-10-13 15:18:41.000000000 -0500 -@@ -0,0 +1,75 @@ -+/* Parse printf format string. -+ Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc. -+ -+ This program is free software; you can redistribute it and/or modify it -+ under the terms of the GNU 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. */ -+ -+#ifndef _PRINTF_PARSE_H -+#define _PRINTF_PARSE_H -+ -+#include "printf-args.h" -+ -+ -+/* Flags */ -+#define FLAG_GROUP 1 /* ' flag */ -+#define FLAG_LEFT 2 /* - flag */ -+#define FLAG_SHOWSIGN 4 /* + flag */ -+#define FLAG_SPACE 8 /* space flag */ -+#define FLAG_ALT 16 /* # flag */ -+#define FLAG_ZERO 32 -+ -+/* arg_index value indicating that no argument is consumed. */ -+#define ARG_NONE (~(size_t)0) -+ -+/* A parsed directive. */ -+typedef struct -+{ -+ const char* dir_start; -+ const char* dir_end; -+ int flags; -+ const char* width_start; -+ const char* width_end; -+ size_t width_arg_index; -+ const char* precision_start; -+ const char* precision_end; -+ size_t precision_arg_index; -+ char conversion; /* d i o u x X f e E g G c s p n U % but not C S */ -+ size_t arg_index; -+} -+char_directive; -+ -+/* A parsed format string. */ -+typedef struct -+{ -+ size_t count; -+ char_directive *dir; -+ size_t max_width_length; -+ size_t max_precision_length; -+} -+char_directives; -+ -+ -+/* Parses the format string. Fills in the number N of directives, and fills -+ in directives[0], ..., directives[N-1], and sets directives[N].dir_start -+ to the end of the format string. Also fills in the arg_type fields of the -+ arguments and the needed count of arguments. */ -+#ifdef STATIC -+STATIC -+#else -+extern -+#endif -+int printf_parse (const char *format, char_directives *d, arguments *a); -+ -+#endif /* _PRINTF_PARSE_H */ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/printf.c psmisc-20.2.works.clean/intl/printf.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/printf.c 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/printf.c 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,371 @@ -+/* Formatted output to strings, using POSIX/XSI format strings with positions. -+ Copyright (C) 2003 Free Software Foundation, Inc. -+ Written by Bruno Haible <bruno@clisp.org>, 2003. -+ -+ This program is free software; you can redistribute it and/or modify it -+ under the terms of the GNU 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. */ -+ -+#ifdef HAVE_CONFIG_H -+# include <config.h> -+#endif -+ -+#ifdef __GNUC__ -+# define alloca __builtin_alloca -+# define HAVE_ALLOCA 1 -+#else -+# ifdef _MSC_VER -+# include <malloc.h> -+# define alloca _alloca -+# 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 -+#endif -+ -+#include <stdio.h> -+ -+#if !HAVE_POSIX_PRINTF -+ -+#include <stdlib.h> -+#include <string.h> -+ -+/* When building a DLL, we must export some functions. Note that because -+ the functions are only defined for binary backward compatibility, we -+ don't need to use __declspec(dllimport) in any case. */ -+#if defined _MSC_VER && BUILDING_DLL -+# define DLL_EXPORTED __declspec(dllexport) -+#else -+# define DLL_EXPORTED -+#endif -+ -+#define STATIC static -+ -+/* Define auxiliary functions declared in "printf-args.h". */ -+#include "printf-args.c" -+ -+/* Define auxiliary functions declared in "printf-parse.h". */ -+#include "printf-parse.c" -+ -+/* Define functions declared in "vasnprintf.h". */ -+#define vasnprintf libintl_vasnprintf -+#include "vasnprintf.c" -+#if 0 /* not needed */ -+#define asnprintf libintl_asnprintf -+#include "asnprintf.c" -+#endif -+ -+DLL_EXPORTED -+int -+libintl_vfprintf (FILE *stream, const char *format, va_list args) -+{ -+ if (strchr (format, '$') == NULL) -+ return vfprintf (stream, format, args); -+ else -+ { -+ size_t length; -+ char *result = libintl_vasnprintf (NULL, &length, format, args); -+ int retval = -1; -+ if (result != NULL) -+ { -+ if (fwrite (result, 1, length, stream) == length) -+ retval = length; -+ free (result); -+ } -+ return retval; -+ } -+} -+ -+DLL_EXPORTED -+int -+libintl_fprintf (FILE *stream, const char *format, ...) -+{ -+ va_list args; -+ int retval; -+ -+ va_start (args, format); -+ retval = libintl_vfprintf (stream, format, args); -+ va_end (args); -+ return retval; -+} -+ -+DLL_EXPORTED -+int -+libintl_vprintf (const char *format, va_list args) -+{ -+ return libintl_vfprintf (stdout, format, args); -+} -+ -+DLL_EXPORTED -+int -+libintl_printf (const char *format, ...) -+{ -+ va_list args; -+ int retval; -+ -+ va_start (args, format); -+ retval = libintl_vprintf (format, args); -+ va_end (args); -+ return retval; -+} -+ -+DLL_EXPORTED -+int -+libintl_vsprintf (char *resultbuf, const char *format, va_list args) -+{ -+ if (strchr (format, '$') == NULL) -+ return vsprintf (resultbuf, format, args); -+ else -+ { -+ size_t length = (size_t) ~0 / (4 * sizeof (char)); -+ char *result = libintl_vasnprintf (resultbuf, &length, format, args); -+ if (result != resultbuf) -+ { -+ free (result); -+ return -1; -+ } -+ else -+ return length; -+ } -+} -+ -+DLL_EXPORTED -+int -+libintl_sprintf (char *resultbuf, const char *format, ...) -+{ -+ va_list args; -+ int retval; -+ -+ va_start (args, format); -+ retval = libintl_vsprintf (resultbuf, format, args); -+ va_end (args); -+ return retval; -+} -+ -+#if HAVE_SNPRINTF -+ -+# if HAVE_DECL__SNPRINTF -+ /* Windows. */ -+# define system_vsnprintf _vsnprintf -+# else -+ /* Unix. */ -+# define system_vsnprintf vsnprintf -+# endif -+ -+DLL_EXPORTED -+int -+libintl_vsnprintf (char *resultbuf, size_t length, const char *format, va_list args) -+{ -+ if (strchr (format, '$') == NULL) -+ return system_vsnprintf (resultbuf, length, format, args); -+ else -+ { -+ size_t maxlength = length; -+ char *result = libintl_vasnprintf (resultbuf, &length, format, args); -+ if (result != resultbuf) -+ { -+ if (maxlength > 0) -+ { -+ if (length < maxlength) -+ abort (); -+ memcpy (resultbuf, result, maxlength - 1); -+ resultbuf[maxlength - 1] = '\0'; -+ } -+ free (result); -+ return -1; -+ } -+ else -+ return length; -+ } -+} -+ -+DLL_EXPORTED -+int -+libintl_snprintf (char *resultbuf, size_t length, const char *format, ...) -+{ -+ va_list args; -+ int retval; -+ -+ va_start (args, format); -+ retval = libintl_vsnprintf (resultbuf, length, format, args); -+ va_end (args); -+ return retval; -+} -+ -+#endif -+ -+#if HAVE_ASPRINTF -+ -+DLL_EXPORTED -+int -+libintl_vasprintf (char **resultp, const char *format, va_list args) -+{ -+ size_t length; -+ char *result = libintl_vasnprintf (NULL, &length, format, args); -+ if (result == NULL) -+ return -1; -+ *resultp = result; -+ return length; -+} -+ -+DLL_EXPORTED -+int -+libintl_asprintf (char **resultp, const char *format, ...) -+{ -+ va_list args; -+ int retval; -+ -+ va_start (args, format); -+ retval = libintl_vasprintf (resultp, format, args); -+ va_end (args); -+ return retval; -+} -+ -+#endif -+ -+#if HAVE_FWPRINTF -+ -+#include <wchar.h> -+ -+#define WIDE_CHAR_VERSION 1 -+ -+/* Define auxiliary functions declared in "wprintf-parse.h". */ -+#include "printf-parse.c" -+ -+/* Define functions declared in "vasnprintf.h". */ -+#define vasnwprintf libintl_vasnwprintf -+#include "vasnprintf.c" -+#if 0 /* not needed */ -+#define asnwprintf libintl_asnwprintf -+#include "asnprintf.c" -+#endif -+ -+# if HAVE_DECL__SNWPRINTF -+ /* Windows. */ -+# define system_vswprintf _vsnwprintf -+# else -+ /* Unix. */ -+# define system_vswprintf vswprintf -+# endif -+ -+DLL_EXPORTED -+int -+libintl_vfwprintf (FILE *stream, const wchar_t *format, va_list args) -+{ -+ if (wcschr (format, '$') == NULL) -+ return vfwprintf (stream, format, args); -+ else -+ { -+ size_t length; -+ wchar_t *result = libintl_vasnwprintf (NULL, &length, format, args); -+ int retval = -1; -+ if (result != NULL) -+ { -+ size_t i; -+ for (i = 0; i < length; i++) -+ if (fputwc (result[i], stream) == WEOF) -+ break; -+ if (i == length) -+ retval = length; -+ free (result); -+ } -+ return retval; -+ } -+} -+ -+DLL_EXPORTED -+int -+libintl_fwprintf (FILE *stream, const wchar_t *format, ...) -+{ -+ va_list args; -+ int retval; -+ -+ va_start (args, format); -+ retval = libintl_vfwprintf (stream, format, args); -+ va_end (args); -+ return retval; -+} -+ -+DLL_EXPORTED -+int -+libintl_vwprintf (const wchar_t *format, va_list args) -+{ -+ return libintl_vfwprintf (stdout, format, args); -+} -+ -+DLL_EXPORTED -+int -+libintl_wprintf (const wchar_t *format, ...) -+{ -+ va_list args; -+ int retval; -+ -+ va_start (args, format); -+ retval = libintl_vwprintf (format, args); -+ va_end (args); -+ return retval; -+} -+ -+DLL_EXPORTED -+int -+libintl_vswprintf (wchar_t *resultbuf, size_t length, const wchar_t *format, va_list args) -+{ -+ if (wcschr (format, '$') == NULL) -+ return system_vswprintf (resultbuf, length, format, args); -+ else -+ { -+ size_t maxlength = length; -+ wchar_t *result = libintl_vasnwprintf (resultbuf, &length, format, args); -+ if (result != resultbuf) -+ { -+ if (maxlength > 0) -+ { -+ if (length < maxlength) -+ abort (); -+ memcpy (resultbuf, result, (maxlength - 1) * sizeof (wchar_t)); -+ resultbuf[maxlength - 1] = 0; -+ } -+ free (result); -+ return -1; -+ } -+ else -+ return length; -+ } -+} -+ -+DLL_EXPORTED -+int -+libintl_swprintf (wchar_t *resultbuf, size_t length, const wchar_t *format, ...) -+{ -+ va_list args; -+ int retval; -+ -+ va_start (args, format); -+ retval = libintl_vswprintf (resultbuf, length, format, args); -+ va_end (args); -+ return retval; -+} -+ -+#endif -+ -+#endif -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/relocatable.c psmisc-20.2.works.clean/intl/relocatable.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/relocatable.c 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/relocatable.c 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,449 @@ -+/* Provide relocatable packages. -+ Copyright (C) 2003 Free Software Foundation, Inc. -+ Written by Bruno Haible <bruno@clisp.org>, 2003. -+ -+ This program is free software; you can redistribute it and/or modify it -+ under the terms of the GNU 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. */ -+ -+ -+/* Tell glibc's <stdio.h> to provide a prototype for getline(). -+ 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 -+ -+/* Specification. */ -+#include "relocatable.h" -+ -+#if ENABLE_RELOCATABLE -+ -+#include <stddef.h> -+#include <stdio.h> -+#include <stdlib.h> -+#include <string.h> -+ -+#ifdef NO_XMALLOC -+# define xmalloc malloc -+#else -+# include "xalloc.h" -+#endif -+ -+#if defined _WIN32 || defined __WIN32__ -+# define WIN32_LEAN_AND_MEAN -+# include <windows.h> -+#endif -+ -+#if DEPENDS_ON_LIBCHARSET -+# include <libcharset.h> -+#endif -+#if DEPENDS_ON_LIBICONV && HAVE_ICONV -+# include <iconv.h> -+#endif -+#if DEPENDS_ON_LIBINTL && ENABLE_NLS -+# include <libintl.h> -+#endif -+ -+/* Faked cheap 'bool'. */ -+#undef bool -+#undef false -+#undef true -+#define bool int -+#define false 0 -+#define true 1 -+ -+/* Pathname support. -+ ISSLASH(C) tests whether C is a directory separator character. -+ 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_PATH_WITH_DIR(P) \ -+ (strchr (P, '/') != NULL || strchr (P, '\\') != NULL || HAS_DEVICE (P)) -+# define FILESYSTEM_PREFIX_LEN(P) (HAS_DEVICE (P) ? 2 : 0) -+#else -+ /* Unix */ -+# define ISSLASH(C) ((C) == '/') -+# define IS_PATH_WITH_DIR(P) (strchr (P, '/') != NULL) -+# define FILESYSTEM_PREFIX_LEN(P) 0 -+#endif -+ -+/* Original installation prefix. */ -+static char *orig_prefix; -+static size_t orig_prefix_len; -+/* Current installation prefix. */ -+static char *curr_prefix; -+static size_t curr_prefix_len; -+/* These prefixes do not end in a slash. Anything that will be concatenated -+ to them must start with a slash. */ -+ -+/* Sets the original and the current installation prefix of this module. -+ Relocation simply replaces a pathname starting with the original prefix -+ by the corresponding pathname with the current prefix instead. Both -+ prefixes should be directory names without trailing slash (i.e. use "" -+ instead of "/"). */ -+static void -+set_this_relocation_prefix (const char *orig_prefix_arg, -+ const char *curr_prefix_arg) -+{ -+ if (orig_prefix_arg != NULL && curr_prefix_arg != NULL -+ /* Optimization: if orig_prefix and curr_prefix are equal, the -+ relocation is a nop. */ -+ && strcmp (orig_prefix_arg, curr_prefix_arg) != 0) -+ { -+ /* Duplicate the argument strings. */ -+ char *memory; -+ -+ orig_prefix_len = strlen (orig_prefix_arg); -+ curr_prefix_len = strlen (curr_prefix_arg); -+ memory = (char *) xmalloc (orig_prefix_len + 1 + curr_prefix_len + 1); -+#ifdef NO_XMALLOC -+ if (memory != NULL) -+#endif -+ { -+ memcpy (memory, orig_prefix_arg, orig_prefix_len + 1); -+ orig_prefix = memory; -+ memory += orig_prefix_len + 1; -+ memcpy (memory, curr_prefix_arg, curr_prefix_len + 1); -+ curr_prefix = memory; -+ return; -+ } -+ } -+ orig_prefix = NULL; -+ curr_prefix = NULL; -+ /* Don't worry about wasted memory here - this function is usually only -+ called once. */ -+} -+ -+/* Sets the original and the current installation prefix of the package. -+ Relocation simply replaces a pathname starting with the original prefix -+ by the corresponding pathname with the current prefix instead. Both -+ prefixes should be directory names without trailing slash (i.e. use "" -+ instead of "/"). */ -+void -+set_relocation_prefix (const char *orig_prefix_arg, const char *curr_prefix_arg) -+{ -+ set_this_relocation_prefix (orig_prefix_arg, curr_prefix_arg); -+ -+ /* Now notify all dependent libraries. */ -+#if DEPENDS_ON_LIBCHARSET -+ libcharset_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); -+#endif -+#if DEPENDS_ON_LIBICONV && HAVE_ICONV && _LIBICONV_VERSION >= 0x0109 -+ libiconv_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); -+#endif -+#if DEPENDS_ON_LIBINTL && ENABLE_NLS && defined libintl_set_relocation_prefix -+ libintl_set_relocation_prefix (orig_prefix_arg, curr_prefix_arg); -+#endif -+} -+ -+#if !defined IN_LIBRARY || (defined PIC && defined INSTALLDIR) -+ -+/* Convenience function: -+ Computes the current installation prefix, based on the original -+ installation prefix, the original installation directory of a particular -+ file, and the current pathname of this file. Returns NULL upon failure. */ -+#ifdef IN_LIBRARY -+#define compute_curr_prefix local_compute_curr_prefix -+static -+#endif -+const char * -+compute_curr_prefix (const char *orig_installprefix, -+ const char *orig_installdir, -+ const char *curr_pathname) -+{ -+ const char *curr_installdir; -+ const char *rel_installdir; -+ -+ if (curr_pathname == NULL) -+ return NULL; -+ -+ /* Determine the relative installation directory, relative to the prefix. -+ This is simply the difference between orig_installprefix and -+ orig_installdir. */ -+ if (strncmp (orig_installprefix, orig_installdir, strlen (orig_installprefix)) -+ != 0) -+ /* Shouldn't happen - nothing should be installed outside $(prefix). */ -+ return NULL; -+ rel_installdir = orig_installdir + strlen (orig_installprefix); -+ -+ /* Determine the current installation directory. */ -+ { -+ const char *p_base = curr_pathname + FILESYSTEM_PREFIX_LEN (curr_pathname); -+ const char *p = curr_pathname + strlen (curr_pathname); -+ char *q; -+ -+ while (p > p_base) -+ { -+ p--; -+ if (ISSLASH (*p)) -+ break; -+ } -+ -+ q = (char *) xmalloc (p - curr_pathname + 1); -+#ifdef NO_XMALLOC -+ if (q == NULL) -+ return NULL; -+#endif -+ memcpy (q, curr_pathname, p - curr_pathname); -+ q[p - curr_pathname] = '\0'; -+ curr_installdir = q; -+ } -+ -+ /* Compute the current installation prefix by removing the trailing -+ rel_installdir from it. */ -+ { -+ const char *rp = rel_installdir + strlen (rel_installdir); -+ const char *cp = curr_installdir + strlen (curr_installdir); -+ const char *cp_base = -+ curr_installdir + FILESYSTEM_PREFIX_LEN (curr_installdir); -+ -+ while (rp > rel_installdir && cp > cp_base) -+ { -+ bool same = false; -+ const char *rpi = rp; -+ const char *cpi = cp; -+ -+ while (rpi > rel_installdir && cpi > cp_base) -+ { -+ rpi--; -+ cpi--; -+ if (ISSLASH (*rpi) || ISSLASH (*cpi)) -+ { -+ if (ISSLASH (*rpi) && ISSLASH (*cpi)) -+ same = true; -+ break; -+ } -+#if defined _WIN32 || defined __WIN32__ || defined __EMX__ || defined __DJGPP__ -+ /* Win32, OS/2, DOS - case insignificant filesystem */ -+ if ((*rpi >= 'a' && *rpi <= 'z' ? *rpi - 'a' + 'A' : *rpi) -+ != (*cpi >= 'a' && *cpi <= 'z' ? *cpi - 'a' + 'A' : *cpi)) -+ break; -+#else -+ if (*rpi != *cpi) -+ break; -+#endif -+ } -+ if (!same) -+ break; -+ /* The last pathname component was the same. opi and cpi now point -+ to the slash before it. */ -+ rp = rpi; -+ cp = cpi; -+ } -+ -+ if (rp > rel_installdir) -+ /* Unexpected: The curr_installdir does not end with rel_installdir. */ -+ return NULL; -+ -+ { -+ size_t curr_prefix_len = cp - curr_installdir; -+ char *curr_prefix; -+ -+ curr_prefix = (char *) xmalloc (curr_prefix_len + 1); -+#ifdef NO_XMALLOC -+ if (curr_prefix == NULL) -+ return NULL; -+#endif -+ memcpy (curr_prefix, curr_installdir, curr_prefix_len); -+ curr_prefix[curr_prefix_len] = '\0'; -+ -+ return curr_prefix; -+ } -+ } -+} -+ -+#endif /* !IN_LIBRARY || PIC */ -+ -+#if defined PIC && defined INSTALLDIR -+ -+/* Full pathname of shared library, or NULL. */ -+static char *shared_library_fullname; -+ -+#if defined _WIN32 || defined __WIN32__ -+ -+/* Determine the full pathname of the shared library when it is loaded. */ -+ -+BOOL WINAPI -+DllMain (HINSTANCE module_handle, DWORD event, LPVOID reserved) -+{ -+ (void) reserved; -+ -+ if (event == DLL_PROCESS_ATTACH) -+ { -+ /* The DLL is being loaded into an application's address range. */ -+ static char location[MAX_PATH]; -+ -+ if (!GetModuleFileName (module_handle, location, sizeof (location))) -+ /* Shouldn't happen. */ -+ return FALSE; -+ -+ if (!IS_PATH_WITH_DIR (location)) -+ /* Shouldn't happen. */ -+ return FALSE; -+ -+ shared_library_fullname = strdup (location); -+ } -+ -+ return TRUE; -+} -+ -+#else /* Unix */ -+ -+static void -+find_shared_library_fullname () -+{ -+#if defined __linux__ && __GLIBC__ >= 2 -+ /* Linux has /proc/self/maps. glibc 2 has the getline() function. */ -+ FILE *fp; -+ -+ /* Open the current process' maps file. It describes one VMA per line. */ -+ fp = fopen ("/proc/self/maps", "r"); -+ if (fp) -+ { -+ unsigned long address = (unsigned long) &find_shared_library_fullname; -+ for (;;) -+ { -+ unsigned long start, end; -+ int c; -+ -+ if (fscanf (fp, "%lx-%lx", &start, &end) != 2) -+ break; -+ if (address >= start && address <= end - 1) -+ { -+ /* Found it. Now see if this line contains a filename. */ -+ while (c = getc (fp), c != EOF && c != '\n' && c != '/') -+ continue; -+ if (c == '/') -+ { -+ size_t size; -+ int len; -+ -+ ungetc (c, fp); -+ shared_library_fullname = NULL; size = 0; -+ len = getline (&shared_library_fullname, &size, fp); -+ if (len >= 0) -+ { -+ /* Success: filled shared_library_fullname. */ -+ if (len > 0 && shared_library_fullname[len - 1] == '\n') -+ shared_library_fullname[len - 1] = '\0'; -+ } -+ } -+ break; -+ } -+ while (c = getc (fp), c != EOF && c != '\n') -+ continue; -+ } -+ fclose (fp); -+ } -+#endif -+} -+ -+#endif /* WIN32 / Unix */ -+ -+/* Return the full pathname of the current shared library. -+ Return NULL if unknown. -+ Guaranteed to work only on Linux and Woe32. */ -+static char * -+get_shared_library_fullname () -+{ -+#if !(defined _WIN32 || defined __WIN32__) -+ static bool tried_find_shared_library_fullname; -+ if (!tried_find_shared_library_fullname) -+ { -+ find_shared_library_fullname (); -+ tried_find_shared_library_fullname = true; -+ } -+#endif -+ return shared_library_fullname; -+} -+ -+#endif /* PIC */ -+ -+/* Returns the pathname, relocated according to the current installation -+ directory. */ -+const char * -+relocate (const char *pathname) -+{ -+#if defined PIC && defined INSTALLDIR -+ static int initialized; -+ -+ /* Initialization code for a shared library. */ -+ if (!initialized) -+ { -+ /* At this point, orig_prefix and curr_prefix likely have already been -+ set through the main program's set_program_name_and_installdir -+ function. This is sufficient in the case that the library has -+ initially been installed in the same orig_prefix. But we can do -+ better, to also cover the cases that 1. it has been installed -+ in a different prefix before being moved to orig_prefix and (later) -+ to curr_prefix, 2. unlike the program, it has not moved away from -+ orig_prefix. */ -+ const char *orig_installprefix = INSTALLPREFIX; -+ const char *orig_installdir = INSTALLDIR; -+ const char *curr_prefix_better; -+ -+ curr_prefix_better = -+ compute_curr_prefix (orig_installprefix, orig_installdir, -+ get_shared_library_fullname ()); -+ if (curr_prefix_better == NULL) -+ curr_prefix_better = curr_prefix; -+ -+ set_relocation_prefix (orig_installprefix, curr_prefix_better); -+ -+ initialized = 1; -+ } -+#endif -+ -+ /* Note: It is not necessary to perform case insensitive comparison here, -+ even for DOS-like filesystems, because the pathname argument was -+ typically created from the same Makefile variable as orig_prefix came -+ from. */ -+ if (orig_prefix != NULL && curr_prefix != NULL -+ && strncmp (pathname, orig_prefix, orig_prefix_len) == 0) -+ { -+ if (pathname[orig_prefix_len] == '\0') -+ /* pathname equals orig_prefix. */ -+ return curr_prefix; -+ if (ISSLASH (pathname[orig_prefix_len])) -+ { -+ /* pathname starts with orig_prefix. */ -+ const char *pathname_tail = &pathname[orig_prefix_len]; -+ char *result = -+ (char *) xmalloc (curr_prefix_len + strlen (pathname_tail) + 1); -+ -+#ifdef NO_XMALLOC -+ if (result != NULL) -+#endif -+ { -+ memcpy (result, curr_prefix, curr_prefix_len); -+ strcpy (result + curr_prefix_len, pathname_tail); -+ return result; -+ } -+ } -+ } -+ /* Nothing to relocate. */ -+ return pathname; -+} -+ -+#endif -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/relocatable.h psmisc-20.2.works.clean/intl/relocatable.h ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/relocatable.h 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/relocatable.h 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,77 @@ -+/* Provide relocatable packages. -+ Copyright (C) 2003 Free Software Foundation, Inc. -+ Written by Bruno Haible <bruno@clisp.org>, 2003. -+ -+ This program is free software; you can redistribute it and/or modify it -+ under the terms of the GNU 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. */ -+ -+#ifndef _RELOCATABLE_H -+#define _RELOCATABLE_H -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+ -+/* This can be enabled through the configure --enable-relocatable option. */ -+#if ENABLE_RELOCATABLE -+ -+/* When building a DLL, we must export some functions. Note that because -+ this is a private .h file, we don't need to use __declspec(dllimport) -+ in any case. */ -+#if defined _MSC_VER && BUILDING_DLL -+# define RELOCATABLE_DLL_EXPORTED __declspec(dllexport) -+#else -+# define RELOCATABLE_DLL_EXPORTED -+#endif -+ -+/* Sets the original and the current installation prefix of the package. -+ Relocation simply replaces a pathname starting with the original prefix -+ by the corresponding pathname with the current prefix instead. Both -+ prefixes should be directory names without trailing slash (i.e. use "" -+ instead of "/"). */ -+extern RELOCATABLE_DLL_EXPORTED void -+ set_relocation_prefix (const char *orig_prefix, -+ const char *curr_prefix); -+ -+/* Returns the pathname, relocated according to the current installation -+ directory. */ -+extern const char * relocate (const char *pathname); -+ -+/* Memory management: relocate() leaks memory, because it has to construct -+ a fresh pathname. If this is a problem because your program calls -+ relocate() frequently, think about caching the result. */ -+ -+/* Convenience function: -+ Computes the current installation prefix, based on the original -+ installation prefix, the original installation directory of a particular -+ file, and the current pathname of this file. Returns NULL upon failure. */ -+extern const char * compute_curr_prefix (const char *orig_installprefix, -+ const char *orig_installdir, -+ const char *curr_pathname); -+ -+#else -+ -+/* By default, we use the hardwired pathnames. */ -+#define relocate(pathname) (pathname) -+ -+#endif -+ -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif /* _RELOCATABLE_H */ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/textdomain.c psmisc-20.2.works.clean/intl/textdomain.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/textdomain.c 2001-04-13 23:00:42.000000000 -0500 -+++ psmisc-20.2.works.clean/intl/textdomain.c 2004-10-13 15:18:42.000000000 -0500 -@@ -1,19 +1,20 @@ - /* Implementation of the textdomain(3) function. -- Copyright (C) 1995-1998, 2000, 2001 Free Software Foundation, Inc. -+ Copyright (C) 1995-1998, 2000-2003 Free Software Foundation, Inc. - -- This program is free software; you can redistribute it and/or modify -- it under the terms of the GNU General Public License as published by -- the Free Software Foundation; either version 2, or (at your option) -+ 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 General Public License for more details. -+ 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 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. */ -+ 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. */ - - #ifdef HAVE_CONFIG_H - # include <config.h> -@@ -43,17 +44,17 @@ - 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_default_domain libintl_nl_default_default_domain -+# define _nl_current_default_domain libintl_nl_current_default_domain - #endif - - /* @@ end of prolog @@ */ - - /* Name of the default text domain. */ --extern const char _nl_default_default_domain[]; -+extern const char _nl_default_default_domain[] attribute_hidden; - - /* Default text domain in which entries for gettext(3) are to be found. */ --extern const char *_nl_current_default_domain; -+extern const char *_nl_current_default_domain attribute_hidden; - - - /* Names for the libintl functions are a problem. They must not clash -@@ -66,18 +67,17 @@ - # define strdup(str) __strdup (str) - # endif - #else --# define TEXTDOMAIN textdomain__ -+# define TEXTDOMAIN libintl_textdomain - #endif - - /* Lock variable to protect the global data in the gettext implementation. */ --__libc_rwlock_define (extern, _nl_state_lock) -+__libc_rwlock_define (extern, _nl_state_lock attribute_hidden) - - /* 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". */ - char * --TEXTDOMAIN (domainname) -- const char *domainname; -+TEXTDOMAIN (const char *domainname) - { - char *new_domain; - char *old_domain; -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/vasnprintf.c psmisc-20.2.works.clean/intl/vasnprintf.c ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/vasnprintf.c 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/vasnprintf.c 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,887 @@ -+/* vsprintf with automatic memory allocation. -+ Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc. -+ -+ This program is free software; you can redistribute it and/or modify it -+ under the terms of the GNU 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. */ -+ -+/* Tell glibc's <stdio.h> to provide a prototype for snprintf(). -+ 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 -+#ifndef IN_LIBINTL -+# include <alloca.h> -+#endif -+ -+/* Specification. */ -+#if WIDE_CHAR_VERSION -+# include "vasnwprintf.h" -+#else -+# include "vasnprintf.h" -+#endif -+ -+#include <stdio.h> /* snprintf(), sprintf() */ -+#include <stdlib.h> /* abort(), malloc(), realloc(), free() */ -+#include <string.h> /* memcpy(), strlen() */ -+#include <errno.h> /* errno */ -+#include <limits.h> /* CHAR_BIT */ -+#include <float.h> /* DBL_MAX_EXP, LDBL_MAX_EXP */ -+#if WIDE_CHAR_VERSION -+# include "wprintf-parse.h" -+#else -+# include "printf-parse.h" -+#endif -+ -+/* Checked size_t computations. */ -+#include "xsize.h" -+ -+#ifdef HAVE_WCHAR_T -+# ifdef HAVE_WCSLEN -+# define local_wcslen wcslen -+# else -+ /* Solaris 2.5.1 has wcslen() in a separate library libw.so. To avoid -+ a dependency towards this library, here is a local substitute. -+ Define this substitute only once, even if this file is included -+ twice in the same compilation unit. */ -+# ifndef local_wcslen_defined -+# define local_wcslen_defined 1 -+static size_t -+local_wcslen (const wchar_t *s) -+{ -+ const wchar_t *ptr; -+ -+ for (ptr = s; *ptr != (wchar_t) 0; ptr++) -+ ; -+ return ptr - s; -+} -+# endif -+# endif -+#endif -+ -+#if WIDE_CHAR_VERSION -+# define VASNPRINTF vasnwprintf -+# define CHAR_T wchar_t -+# define DIRECTIVE wchar_t_directive -+# define DIRECTIVES wchar_t_directives -+# define PRINTF_PARSE wprintf_parse -+# define USE_SNPRINTF 1 -+# if HAVE_DECL__SNWPRINTF -+ /* On Windows, the function swprintf() has a different signature than -+ on Unix; we use the _snwprintf() function instead. */ -+# define SNPRINTF _snwprintf -+# else -+ /* Unix. */ -+# define SNPRINTF swprintf -+# endif -+#else -+# define VASNPRINTF vasnprintf -+# define CHAR_T char -+# define DIRECTIVE char_directive -+# define DIRECTIVES char_directives -+# define PRINTF_PARSE printf_parse -+# define USE_SNPRINTF (HAVE_DECL__SNPRINTF || HAVE_SNPRINTF) -+# if HAVE_DECL__SNPRINTF -+ /* Windows. */ -+# define SNPRINTF _snprintf -+# else -+ /* Unix. */ -+# define SNPRINTF snprintf -+# endif -+#endif -+ -+CHAR_T * -+VASNPRINTF (CHAR_T *resultbuf, size_t *lengthp, const CHAR_T *format, va_list args) -+{ -+ DIRECTIVES d; -+ arguments a; -+ -+ if (PRINTF_PARSE (format, &d, &a) < 0) -+ { -+ errno = EINVAL; -+ return NULL; -+ } -+ -+#define CLEANUP() \ -+ free (d.dir); \ -+ if (a.arg) \ -+ free (a.arg); -+ -+ if (printf_fetchargs (args, &a) < 0) -+ { -+ CLEANUP (); -+ errno = EINVAL; -+ return NULL; -+ } -+ -+ { -+ size_t buf_neededlength; -+ CHAR_T *buf; -+ CHAR_T *buf_malloced; -+ const CHAR_T *cp; -+ size_t i; -+ DIRECTIVE *dp; -+ /* Output string accumulator. */ -+ CHAR_T *result; -+ size_t allocated; -+ size_t length; -+ -+ /* Allocate a small buffer that will hold a directive passed to -+ sprintf or snprintf. */ -+ buf_neededlength = -+ xsum4 (7, d.max_width_length, d.max_precision_length, 6); -+#if HAVE_ALLOCA -+ if (buf_neededlength < 4000 / sizeof (CHAR_T)) -+ { -+ buf = (CHAR_T *) alloca (buf_neededlength * sizeof (CHAR_T)); -+ buf_malloced = NULL; -+ } -+ else -+#endif -+ { -+ size_t buf_memsize = xtimes (buf_neededlength, sizeof (CHAR_T)); -+ if (size_overflow_p (buf_memsize)) -+ goto out_of_memory_1; -+ buf = (CHAR_T *) malloc (buf_memsize); -+ if (buf == NULL) -+ goto out_of_memory_1; -+ buf_malloced = buf; -+ } -+ -+ if (resultbuf != NULL) -+ { -+ result = resultbuf; -+ allocated = *lengthp; -+ } -+ else -+ { -+ result = NULL; -+ allocated = 0; -+ } -+ length = 0; -+ /* Invariants: -+ result is either == resultbuf or == NULL or malloc-allocated. -+ If length > 0, then result != NULL. */ -+ -+ /* Ensures that allocated >= needed. Aborts through a jump to -+ out_of_memory if needed is SIZE_MAX or otherwise too big. */ -+#define ENSURE_ALLOCATION(needed) \ -+ if ((needed) > allocated) \ -+ { \ -+ size_t memory_size; \ -+ CHAR_T *memory; \ -+ \ -+ allocated = (allocated > 0 ? xtimes (allocated, 2) : 12); \ -+ if ((needed) > allocated) \ -+ allocated = (needed); \ -+ memory_size = xtimes (allocated, sizeof (CHAR_T)); \ -+ if (size_overflow_p (memory_size)) \ -+ goto out_of_memory; \ -+ if (result == resultbuf || result == NULL) \ -+ memory = (CHAR_T *) malloc (memory_size); \ -+ else \ -+ memory = (CHAR_T *) realloc (result, memory_size); \ -+ if (memory == NULL) \ -+ goto out_of_memory; \ -+ if (result == resultbuf && length > 0) \ -+ memcpy (memory, result, length * sizeof (CHAR_T)); \ -+ result = memory; \ -+ } -+ -+ for (cp = format, i = 0, dp = &d.dir[0]; ; cp = dp->dir_end, i++, dp++) -+ { -+ if (cp != dp->dir_start) -+ { -+ size_t n = dp->dir_start - cp; -+ size_t augmented_length = xsum (length, n); -+ -+ ENSURE_ALLOCATION (augmented_length); -+ memcpy (result + length, cp, n * sizeof (CHAR_T)); -+ length = augmented_length; -+ } -+ if (i == d.count) -+ break; -+ -+ /* Execute a single directive. */ -+ if (dp->conversion == '%') -+ { -+ size_t augmented_length; -+ -+ if (!(dp->arg_index == ARG_NONE)) -+ abort (); -+ augmented_length = xsum (length, 1); -+ ENSURE_ALLOCATION (augmented_length); -+ result[length] = '%'; -+ length = augmented_length; -+ } -+ else -+ { -+ if (!(dp->arg_index != ARG_NONE)) -+ abort (); -+ -+ if (dp->conversion == 'n') -+ { -+ switch (a.arg[dp->arg_index].type) -+ { -+ case TYPE_COUNT_SCHAR_POINTER: -+ *a.arg[dp->arg_index].a.a_count_schar_pointer = length; -+ break; -+ case TYPE_COUNT_SHORT_POINTER: -+ *a.arg[dp->arg_index].a.a_count_short_pointer = length; -+ break; -+ case TYPE_COUNT_INT_POINTER: -+ *a.arg[dp->arg_index].a.a_count_int_pointer = length; -+ break; -+ case TYPE_COUNT_LONGINT_POINTER: -+ *a.arg[dp->arg_index].a.a_count_longint_pointer = length; -+ break; -+#ifdef HAVE_LONG_LONG -+ case TYPE_COUNT_LONGLONGINT_POINTER: -+ *a.arg[dp->arg_index].a.a_count_longlongint_pointer = length; -+ break; -+#endif -+ default: -+ abort (); -+ } -+ } -+ else -+ { -+ arg_type type = a.arg[dp->arg_index].type; -+ CHAR_T *p; -+ unsigned int prefix_count; -+ int prefixes[2]; -+#if !USE_SNPRINTF -+ size_t tmp_length; -+ CHAR_T tmpbuf[700]; -+ CHAR_T *tmp; -+ -+ /* Allocate a temporary buffer of sufficient size for calling -+ sprintf. */ -+ { -+ size_t width; -+ size_t precision; -+ -+ width = 0; -+ if (dp->width_start != dp->width_end) -+ { -+ if (dp->width_arg_index != ARG_NONE) -+ { -+ int arg; -+ -+ if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) -+ abort (); -+ arg = a.arg[dp->width_arg_index].a.a_int; -+ width = (arg < 0 ? (unsigned int) (-arg) : arg); -+ } -+ else -+ { -+ const CHAR_T *digitp = dp->width_start; -+ -+ do -+ width = xsum (xtimes (width, 10), *digitp++ - '0'); -+ while (digitp != dp->width_end); -+ } -+ } -+ -+ precision = 6; -+ if (dp->precision_start != dp->precision_end) -+ { -+ if (dp->precision_arg_index != ARG_NONE) -+ { -+ int arg; -+ -+ if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) -+ abort (); -+ arg = a.arg[dp->precision_arg_index].a.a_int; -+ precision = (arg < 0 ? 0 : arg); -+ } -+ else -+ { -+ const CHAR_T *digitp = dp->precision_start + 1; -+ -+ precision = 0; -+ do -+ precision = xsum (xtimes (precision, 10), *digitp++ - '0'); -+ while (digitp != dp->precision_end); -+ } -+ } -+ -+ switch (dp->conversion) -+ { -+ -+ case 'd': case 'i': case 'u': -+# ifdef HAVE_LONG_LONG -+ if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) -+ tmp_length = -+ (unsigned int) (sizeof (unsigned long long) * CHAR_BIT -+ * 0.30103 /* binary -> decimal */ -+ * 2 /* estimate for FLAG_GROUP */ -+ ) -+ + 1 /* turn floor into ceil */ -+ + 1; /* account for leading sign */ -+ else -+# endif -+ if (type == TYPE_LONGINT || type == TYPE_ULONGINT) -+ tmp_length = -+ (unsigned int) (sizeof (unsigned long) * CHAR_BIT -+ * 0.30103 /* binary -> decimal */ -+ * 2 /* estimate for FLAG_GROUP */ -+ ) -+ + 1 /* turn floor into ceil */ -+ + 1; /* account for leading sign */ -+ else -+ tmp_length = -+ (unsigned int) (sizeof (unsigned int) * CHAR_BIT -+ * 0.30103 /* binary -> decimal */ -+ * 2 /* estimate for FLAG_GROUP */ -+ ) -+ + 1 /* turn floor into ceil */ -+ + 1; /* account for leading sign */ -+ break; -+ -+ case 'o': -+# ifdef HAVE_LONG_LONG -+ if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) -+ tmp_length = -+ (unsigned int) (sizeof (unsigned long long) * CHAR_BIT -+ * 0.333334 /* binary -> octal */ -+ ) -+ + 1 /* turn floor into ceil */ -+ + 1; /* account for leading sign */ -+ else -+# endif -+ if (type == TYPE_LONGINT || type == TYPE_ULONGINT) -+ tmp_length = -+ (unsigned int) (sizeof (unsigned long) * CHAR_BIT -+ * 0.333334 /* binary -> octal */ -+ ) -+ + 1 /* turn floor into ceil */ -+ + 1; /* account for leading sign */ -+ else -+ tmp_length = -+ (unsigned int) (sizeof (unsigned int) * CHAR_BIT -+ * 0.333334 /* binary -> octal */ -+ ) -+ + 1 /* turn floor into ceil */ -+ + 1; /* account for leading sign */ -+ break; -+ -+ case 'x': case 'X': -+# ifdef HAVE_LONG_LONG -+ if (type == TYPE_LONGLONGINT || type == TYPE_ULONGLONGINT) -+ tmp_length = -+ (unsigned int) (sizeof (unsigned long long) * CHAR_BIT -+ * 0.25 /* binary -> hexadecimal */ -+ ) -+ + 1 /* turn floor into ceil */ -+ + 2; /* account for leading sign or alternate form */ -+ else -+# endif -+ if (type == TYPE_LONGINT || type == TYPE_ULONGINT) -+ tmp_length = -+ (unsigned int) (sizeof (unsigned long) * CHAR_BIT -+ * 0.25 /* binary -> hexadecimal */ -+ ) -+ + 1 /* turn floor into ceil */ -+ + 2; /* account for leading sign or alternate form */ -+ else -+ tmp_length = -+ (unsigned int) (sizeof (unsigned int) * CHAR_BIT -+ * 0.25 /* binary -> hexadecimal */ -+ ) -+ + 1 /* turn floor into ceil */ -+ + 2; /* account for leading sign or alternate form */ -+ break; -+ -+ case 'f': case 'F': -+# ifdef HAVE_LONG_DOUBLE -+ if (type == TYPE_LONGDOUBLE) -+ tmp_length = -+ (unsigned int) (LDBL_MAX_EXP -+ * 0.30103 /* binary -> decimal */ -+ * 2 /* estimate for FLAG_GROUP */ -+ ) -+ + 1 /* turn floor into ceil */ -+ + 10; /* sign, decimal point etc. */ -+ else -+# endif -+ tmp_length = -+ (unsigned int) (DBL_MAX_EXP -+ * 0.30103 /* binary -> decimal */ -+ * 2 /* estimate for FLAG_GROUP */ -+ ) -+ + 1 /* turn floor into ceil */ -+ + 10; /* sign, decimal point etc. */ -+ tmp_length = xsum (tmp_length, precision); -+ break; -+ -+ case 'e': case 'E': case 'g': case 'G': -+ case 'a': case 'A': -+ tmp_length = -+ 12; /* sign, decimal point, exponent etc. */ -+ tmp_length = xsum (tmp_length, precision); -+ break; -+ -+ case 'c': -+# if defined HAVE_WINT_T && !WIDE_CHAR_VERSION -+ if (type == TYPE_WIDE_CHAR) -+ tmp_length = MB_CUR_MAX; -+ else -+# endif -+ tmp_length = 1; -+ break; -+ -+ case 's': -+# ifdef HAVE_WCHAR_T -+ if (type == TYPE_WIDE_STRING) -+ { -+ tmp_length = -+ local_wcslen (a.arg[dp->arg_index].a.a_wide_string); -+ -+# if !WIDE_CHAR_VERSION -+ tmp_length = xtimes (tmp_length, MB_CUR_MAX); -+# endif -+ } -+ else -+# endif -+ tmp_length = strlen (a.arg[dp->arg_index].a.a_string); -+ break; -+ -+ case 'p': -+ tmp_length = -+ (unsigned int) (sizeof (void *) * CHAR_BIT -+ * 0.25 /* binary -> hexadecimal */ -+ ) -+ + 1 /* turn floor into ceil */ -+ + 2; /* account for leading 0x */ -+ break; -+ -+ default: -+ abort (); -+ } -+ -+ if (tmp_length < width) -+ tmp_length = width; -+ -+ tmp_length = xsum (tmp_length, 1); /* account for trailing NUL */ -+ } -+ -+ if (tmp_length <= sizeof (tmpbuf) / sizeof (CHAR_T)) -+ tmp = tmpbuf; -+ else -+ { -+ size_t tmp_memsize = xtimes (tmp_length, sizeof (CHAR_T)); -+ -+ if (size_overflow_p (tmp_memsize)) -+ /* Overflow, would lead to out of memory. */ -+ goto out_of_memory; -+ tmp = (CHAR_T *) malloc (tmp_memsize); -+ if (tmp == NULL) -+ /* Out of memory. */ -+ goto out_of_memory; -+ } -+#endif -+ -+ /* Construct the format string for calling snprintf or -+ sprintf. */ -+ p = buf; -+ *p++ = '%'; -+ if (dp->flags & FLAG_GROUP) -+ *p++ = '\''; -+ if (dp->flags & FLAG_LEFT) -+ *p++ = '-'; -+ if (dp->flags & FLAG_SHOWSIGN) -+ *p++ = '+'; -+ if (dp->flags & FLAG_SPACE) -+ *p++ = ' '; -+ if (dp->flags & FLAG_ALT) -+ *p++ = '#'; -+ if (dp->flags & FLAG_ZERO) -+ *p++ = '0'; -+ if (dp->width_start != dp->width_end) -+ { -+ size_t n = dp->width_end - dp->width_start; -+ memcpy (p, dp->width_start, n * sizeof (CHAR_T)); -+ p += n; -+ } -+ if (dp->precision_start != dp->precision_end) -+ { -+ size_t n = dp->precision_end - dp->precision_start; -+ memcpy (p, dp->precision_start, n * sizeof (CHAR_T)); -+ p += n; -+ } -+ -+ switch (type) -+ { -+#ifdef HAVE_LONG_LONG -+ case TYPE_LONGLONGINT: -+ case TYPE_ULONGLONGINT: -+ *p++ = 'l'; -+ /*FALLTHROUGH*/ -+#endif -+ case TYPE_LONGINT: -+ case TYPE_ULONGINT: -+#ifdef HAVE_WINT_T -+ case TYPE_WIDE_CHAR: -+#endif -+#ifdef HAVE_WCHAR_T -+ case TYPE_WIDE_STRING: -+#endif -+ *p++ = 'l'; -+ break; -+#ifdef HAVE_LONG_DOUBLE -+ case TYPE_LONGDOUBLE: -+ *p++ = 'L'; -+ break; -+#endif -+ default: -+ break; -+ } -+ *p = dp->conversion; -+#if USE_SNPRINTF -+ p[1] = '%'; -+ p[2] = 'n'; -+ p[3] = '\0'; -+#else -+ p[1] = '\0'; -+#endif -+ -+ /* Construct the arguments for calling snprintf or sprintf. */ -+ prefix_count = 0; -+ if (dp->width_arg_index != ARG_NONE) -+ { -+ if (!(a.arg[dp->width_arg_index].type == TYPE_INT)) -+ abort (); -+ prefixes[prefix_count++] = a.arg[dp->width_arg_index].a.a_int; -+ } -+ if (dp->precision_arg_index != ARG_NONE) -+ { -+ if (!(a.arg[dp->precision_arg_index].type == TYPE_INT)) -+ abort (); -+ prefixes[prefix_count++] = a.arg[dp->precision_arg_index].a.a_int; -+ } -+ -+#if USE_SNPRINTF -+ /* Prepare checking whether snprintf returns the count -+ via %n. */ -+ ENSURE_ALLOCATION (xsum (length, 1)); -+ result[length] = '\0'; -+#endif -+ -+ for (;;) -+ { -+ size_t maxlen; -+ int count; -+ int retcount; -+ -+ maxlen = allocated - length; -+ count = -1; -+ retcount = 0; -+ -+#if USE_SNPRINTF -+# define SNPRINTF_BUF(arg) \ -+ switch (prefix_count) \ -+ { \ -+ case 0: \ -+ retcount = SNPRINTF (result + length, maxlen, buf, \ -+ arg, &count); \ -+ break; \ -+ case 1: \ -+ retcount = SNPRINTF (result + length, maxlen, buf, \ -+ prefixes[0], arg, &count); \ -+ break; \ -+ case 2: \ -+ retcount = SNPRINTF (result + length, maxlen, buf, \ -+ prefixes[0], prefixes[1], arg, \ -+ &count); \ -+ break; \ -+ default: \ -+ abort (); \ -+ } -+#else -+# define SNPRINTF_BUF(arg) \ -+ switch (prefix_count) \ -+ { \ -+ case 0: \ -+ count = sprintf (tmp, buf, arg); \ -+ break; \ -+ case 1: \ -+ count = sprintf (tmp, buf, prefixes[0], arg); \ -+ break; \ -+ case 2: \ -+ count = sprintf (tmp, buf, prefixes[0], prefixes[1],\ -+ arg); \ -+ break; \ -+ default: \ -+ abort (); \ -+ } -+#endif -+ -+ switch (type) -+ { -+ case TYPE_SCHAR: -+ { -+ int arg = a.arg[dp->arg_index].a.a_schar; -+ SNPRINTF_BUF (arg); -+ } -+ break; -+ case TYPE_UCHAR: -+ { -+ unsigned int arg = a.arg[dp->arg_index].a.a_uchar; -+ SNPRINTF_BUF (arg); -+ } -+ break; -+ case TYPE_SHORT: -+ { -+ int arg = a.arg[dp->arg_index].a.a_short; -+ SNPRINTF_BUF (arg); -+ } -+ break; -+ case TYPE_USHORT: -+ { -+ unsigned int arg = a.arg[dp->arg_index].a.a_ushort; -+ SNPRINTF_BUF (arg); -+ } -+ break; -+ case TYPE_INT: -+ { -+ int arg = a.arg[dp->arg_index].a.a_int; -+ SNPRINTF_BUF (arg); -+ } -+ break; -+ case TYPE_UINT: -+ { -+ unsigned int arg = a.arg[dp->arg_index].a.a_uint; -+ SNPRINTF_BUF (arg); -+ } -+ break; -+ case TYPE_LONGINT: -+ { -+ long int arg = a.arg[dp->arg_index].a.a_longint; -+ SNPRINTF_BUF (arg); -+ } -+ break; -+ case TYPE_ULONGINT: -+ { -+ unsigned long int arg = a.arg[dp->arg_index].a.a_ulongint; -+ SNPRINTF_BUF (arg); -+ } -+ break; -+#ifdef HAVE_LONG_LONG -+ case TYPE_LONGLONGINT: -+ { -+ long long int arg = a.arg[dp->arg_index].a.a_longlongint; -+ SNPRINTF_BUF (arg); -+ } -+ break; -+ case TYPE_ULONGLONGINT: -+ { -+ unsigned long long int arg = a.arg[dp->arg_index].a.a_ulonglongint; -+ SNPRINTF_BUF (arg); -+ } -+ break; -+#endif -+ case TYPE_DOUBLE: -+ { -+ double arg = a.arg[dp->arg_index].a.a_double; -+ SNPRINTF_BUF (arg); -+ } -+ break; -+#ifdef HAVE_LONG_DOUBLE -+ case TYPE_LONGDOUBLE: -+ { -+ long double arg = a.arg[dp->arg_index].a.a_longdouble; -+ SNPRINTF_BUF (arg); -+ } -+ break; -+#endif -+ case TYPE_CHAR: -+ { -+ int arg = a.arg[dp->arg_index].a.a_char; -+ SNPRINTF_BUF (arg); -+ } -+ break; -+#ifdef HAVE_WINT_T -+ case TYPE_WIDE_CHAR: -+ { -+ wint_t arg = a.arg[dp->arg_index].a.a_wide_char; -+ SNPRINTF_BUF (arg); -+ } -+ break; -+#endif -+ case TYPE_STRING: -+ { -+ const char *arg = a.arg[dp->arg_index].a.a_string; -+ SNPRINTF_BUF (arg); -+ } -+ break; -+#ifdef HAVE_WCHAR_T -+ case TYPE_WIDE_STRING: -+ { -+ const wchar_t *arg = a.arg[dp->arg_index].a.a_wide_string; -+ SNPRINTF_BUF (arg); -+ } -+ break; -+#endif -+ case TYPE_POINTER: -+ { -+ void *arg = a.arg[dp->arg_index].a.a_pointer; -+ SNPRINTF_BUF (arg); -+ } -+ break; -+ default: -+ abort (); -+ } -+ -+#if USE_SNPRINTF -+ /* Portability: Not all implementations of snprintf() -+ are ISO C 99 compliant. Determine the number of -+ bytes that snprintf() has produced or would have -+ produced. */ -+ if (count >= 0) -+ { -+ /* Verify that snprintf() has NUL-terminated its -+ result. */ -+ if (count < maxlen && result[length + count] != '\0') -+ abort (); -+ /* Portability hack. */ -+ if (retcount > count) -+ count = retcount; -+ } -+ else -+ { -+ /* snprintf() doesn't understand the '%n' -+ directive. */ -+ if (p[1] != '\0') -+ { -+ /* Don't use the '%n' directive; instead, look -+ at the snprintf() return value. */ -+ p[1] = '\0'; -+ continue; -+ } -+ else -+ { -+ /* Look at the snprintf() return value. */ -+ if (retcount < 0) -+ { -+ /* HP-UX 10.20 snprintf() is doubly deficient: -+ It doesn't understand the '%n' directive, -+ *and* it returns -1 (rather than the length -+ that would have been required) when the -+ buffer is too small. */ -+ size_t bigger_need = -+ xsum (xtimes (allocated, 2), 12); -+ ENSURE_ALLOCATION (bigger_need); -+ continue; -+ } -+ else -+ count = retcount; -+ } -+ } -+#endif -+ -+ /* Attempt to handle failure. */ -+ if (count < 0) -+ { -+ if (!(result == resultbuf || result == NULL)) -+ free (result); -+ if (buf_malloced != NULL) -+ free (buf_malloced); -+ CLEANUP (); -+ errno = EINVAL; -+ return NULL; -+ } -+ -+#if !USE_SNPRINTF -+ if (count >= tmp_length) -+ /* tmp_length was incorrectly calculated - fix the -+ code above! */ -+ abort (); -+#endif -+ -+ /* Make room for the result. */ -+ if (count >= maxlen) -+ { -+ /* Need at least count bytes. But allocate -+ proportionally, to avoid looping eternally if -+ snprintf() reports a too small count. */ -+ size_t n = -+ xmax (xsum (length, count), xtimes (allocated, 2)); -+ -+ ENSURE_ALLOCATION (n); -+#if USE_SNPRINTF -+ continue; -+#endif -+ } -+ -+#if USE_SNPRINTF -+ /* The snprintf() result did fit. */ -+#else -+ /* Append the sprintf() result. */ -+ memcpy (result + length, tmp, count * sizeof (CHAR_T)); -+ if (tmp != tmpbuf) -+ free (tmp); -+#endif -+ -+ length += count; -+ break; -+ } -+ } -+ } -+ } -+ -+ /* Add the final NUL. */ -+ ENSURE_ALLOCATION (xsum (length, 1)); -+ result[length] = '\0'; -+ -+ if (result != resultbuf && length + 1 < allocated) -+ { -+ /* Shrink the allocated memory if possible. */ -+ CHAR_T *memory; -+ -+ memory = (CHAR_T *) realloc (result, (length + 1) * sizeof (CHAR_T)); -+ if (memory != NULL) -+ result = memory; -+ } -+ -+ if (buf_malloced != NULL) -+ free (buf_malloced); -+ CLEANUP (); -+ *lengthp = length; -+ return result; -+ -+ out_of_memory: -+ if (!(result == resultbuf || result == NULL)) -+ free (result); -+ if (buf_malloced != NULL) -+ free (buf_malloced); -+ out_of_memory_1: -+ CLEANUP (); -+ errno = ENOMEM; -+ return NULL; -+ } -+} -+ -+#undef SNPRINTF -+#undef USE_SNPRINTF -+#undef PRINTF_PARSE -+#undef DIRECTIVES -+#undef DIRECTIVE -+#undef CHAR_T -+#undef VASNPRINTF -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/vasnprintf.h psmisc-20.2.works.clean/intl/vasnprintf.h ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/vasnprintf.h 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/vasnprintf.h 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,61 @@ -+/* vsprintf with automatic memory allocation. -+ Copyright (C) 2002-2003 Free Software Foundation, Inc. -+ -+ This program is free software; you can redistribute it and/or modify it -+ under the terms of the GNU 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. */ -+ -+#ifndef _VASNPRINTF_H -+#define _VASNPRINTF_H -+ -+/* Get va_list. */ -+#include <stdarg.h> -+ -+/* Get size_t. */ -+#include <stddef.h> -+ -+#ifndef __attribute__ -+/* This feature is available in gcc versions 2.5 and later. */ -+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 5) || __STRICT_ANSI__ -+# define __attribute__(Spec) /* empty */ -+# endif -+/* The __-protected variants of `format' and `printf' attributes -+ are accepted by gcc versions 2.6.4 (effectively 2.7) and later. */ -+# if __GNUC__ < 2 || (__GNUC__ == 2 && __GNUC_MINOR__ < 7) -+# define __format__ format -+# define __printf__ printf -+# endif -+#endif -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* Write formatted output to a string dynamically allocated with malloc(). -+ You can pass a preallocated buffer for the result in RESULTBUF and its -+ size in *LENGTHP; otherwise you pass RESULTBUF = NULL. -+ If successful, return the address of the string (this may be = RESULTBUF -+ if no dynamic memory allocation was necessary) and set *LENGTHP to the -+ number of resulting bytes, excluding the trailing NUL. Upon error, set -+ errno and return NULL. */ -+extern char * asnprintf (char *resultbuf, size_t *lengthp, const char *format, ...) -+ __attribute__ ((__format__ (__printf__, 3, 4))); -+extern char * vasnprintf (char *resultbuf, size_t *lengthp, const char *format, va_list args) -+ __attribute__ ((__format__ (__printf__, 3, 0))); -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif /* _VASNPRINTF_H */ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/vasnwprintf.h psmisc-20.2.works.clean/intl/vasnwprintf.h ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/vasnwprintf.h 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/vasnwprintf.h 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,46 @@ -+/* vswprintf with automatic memory allocation. -+ Copyright (C) 2002-2003 Free Software Foundation, Inc. -+ -+ This program is free software; you can redistribute it and/or modify it -+ under the terms of the GNU 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. */ -+ -+#ifndef _VASNWPRINTF_H -+#define _VASNWPRINTF_H -+ -+/* Get va_list. */ -+#include <stdarg.h> -+ -+/* Get wchar_t, size_t. */ -+#include <stddef.h> -+ -+#ifdef __cplusplus -+extern "C" { -+#endif -+ -+/* Write formatted output to a string dynamically allocated with malloc(). -+ You can pass a preallocated buffer for the result in RESULTBUF and its -+ size in *LENGTHP; otherwise you pass RESULTBUF = NULL. -+ If successful, return the address of the string (this may be = RESULTBUF -+ if no dynamic memory allocation was necessary) and set *LENGTHP to the -+ number of resulting bytes, excluding the trailing NUL. Upon error, set -+ errno and return NULL. */ -+extern wchar_t * asnwprintf (wchar_t *resultbuf, size_t *lengthp, const wchar_t *format, ...); -+extern wchar_t * vasnwprintf (wchar_t *resultbuf, size_t *lengthp, const wchar_t *format, va_list args); -+ -+#ifdef __cplusplus -+} -+#endif -+ -+#endif /* _VASNWPRINTF_H */ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/wprintf-parse.h psmisc-20.2.works.clean/intl/wprintf-parse.h ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/wprintf-parse.h 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/wprintf-parse.h 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,75 @@ -+/* Parse printf format string. -+ Copyright (C) 1999, 2002-2003 Free Software Foundation, Inc. -+ -+ This program is free software; you can redistribute it and/or modify it -+ under the terms of the GNU 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. */ -+ -+#ifndef _WPRINTF_PARSE_H -+#define _WPRINTF_PARSE_H -+ -+#include "printf-args.h" -+ -+ -+/* Flags */ -+#define FLAG_GROUP 1 /* ' flag */ -+#define FLAG_LEFT 2 /* - flag */ -+#define FLAG_SHOWSIGN 4 /* + flag */ -+#define FLAG_SPACE 8 /* space flag */ -+#define FLAG_ALT 16 /* # flag */ -+#define FLAG_ZERO 32 -+ -+/* arg_index value indicating that no argument is consumed. */ -+#define ARG_NONE (~(size_t)0) -+ -+/* A parsed directive. */ -+typedef struct -+{ -+ const wchar_t* dir_start; -+ const wchar_t* dir_end; -+ int flags; -+ const wchar_t* width_start; -+ const wchar_t* width_end; -+ size_t width_arg_index; -+ const wchar_t* precision_start; -+ const wchar_t* precision_end; -+ size_t precision_arg_index; -+ wchar_t conversion; /* d i o u x X f e E g G c s p n U % but not C S */ -+ size_t arg_index; -+} -+wchar_t_directive; -+ -+/* A parsed format string. */ -+typedef struct -+{ -+ size_t count; -+ wchar_t_directive *dir; -+ size_t max_width_length; -+ size_t max_precision_length; -+} -+wchar_t_directives; -+ -+ -+/* Parses the format string. Fills in the number N of directives, and fills -+ in directives[0], ..., directives[N-1], and sets directives[N].dir_start -+ to the end of the format string. Also fills in the arg_type fields of the -+ arguments and the needed count of arguments. */ -+#ifdef STATIC -+STATIC -+#else -+extern -+#endif -+int wprintf_parse (const wchar_t *format, wchar_t_directives *d, arguments *a); -+ -+#endif /* _WPRINTF_PARSE_H */ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/xsize.h psmisc-20.2.works.clean/intl/xsize.h ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/intl/xsize.h 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/intl/xsize.h 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,109 @@ -+/* xsize.h -- Checked size_t computations. -+ -+ Copyright (C) 2003 Free Software Foundation, Inc. -+ -+ This program is free software; you can redistribute it and/or modify it -+ under the terms of the GNU 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. */ -+ -+#ifndef _XSIZE_H -+#define _XSIZE_H -+ -+/* Get size_t. */ -+#include <stddef.h> -+ -+/* Get SIZE_MAX. */ -+#include <limits.h> -+#if HAVE_STDINT_H -+# include <stdint.h> -+#endif -+ -+/* The size of memory objects is often computed through expressions of -+ type size_t. Example: -+ void* p = malloc (header_size + n * element_size). -+ These computations can lead to overflow. When this happens, malloc() -+ returns a piece of memory that is way too small, and the program then -+ crashes while attempting to fill the memory. -+ To avoid this, the functions and macros in this file check for overflow. -+ The convention is that SIZE_MAX represents overflow. -+ malloc (SIZE_MAX) is not guaranteed to fail -- think of a malloc -+ implementation that uses mmap --, it's recommended to use size_overflow_p() -+ or size_in_bounds_p() before invoking malloc(). -+ The example thus becomes: -+ size_t size = xsum (header_size, xtimes (n, element_size)); -+ void *p = (size_in_bounds_p (size) ? malloc (size) : NULL); -+*/ -+ -+/* Convert an arbitrary value >= 0 to type size_t. */ -+#define xcast_size_t(N) \ -+ ((N) <= SIZE_MAX ? (size_t) (N) : SIZE_MAX) -+ -+/* Sum of two sizes, with overflow check. */ -+static inline size_t -+#if __GNUC__ >= 3 -+__attribute__ ((__pure__)) -+#endif -+xsum (size_t size1, size_t size2) -+{ -+ size_t sum = size1 + size2; -+ return (sum >= size1 ? sum : SIZE_MAX); -+} -+ -+/* Sum of three sizes, with overflow check. */ -+static inline size_t -+#if __GNUC__ >= 3 -+__attribute__ ((__pure__)) -+#endif -+xsum3 (size_t size1, size_t size2, size_t size3) -+{ -+ return xsum (xsum (size1, size2), size3); -+} -+ -+/* Sum of four sizes, with overflow check. */ -+static inline size_t -+#if __GNUC__ >= 3 -+__attribute__ ((__pure__)) -+#endif -+xsum4 (size_t size1, size_t size2, size_t size3, size_t size4) -+{ -+ return xsum (xsum (xsum (size1, size2), size3), size4); -+} -+ -+/* Maximum of two sizes, with overflow check. */ -+static inline size_t -+#if __GNUC__ >= 3 -+__attribute__ ((__pure__)) -+#endif -+xmax (size_t size1, size_t size2) -+{ -+ /* No explicit check is needed here, because for any n: -+ max (SIZE_MAX, n) == SIZE_MAX and max (n, SIZE_MAX) == SIZE_MAX. */ -+ return (size1 >= size2 ? size1 : size2); -+} -+ -+/* Multiplication of a count with an element size, with overflow check. -+ The count must be >= 0 and the element size must be > 0. -+ This is a macro, not an inline function, so that it works correctly even -+ when N is of a wider tupe and N > SIZE_MAX. */ -+#define xtimes(N, ELSIZE) \ -+ ((N) <= SIZE_MAX / (ELSIZE) ? (size_t) (N) * (ELSIZE) : SIZE_MAX) -+ -+/* Check for overflow. */ -+#define size_overflow_p(SIZE) \ -+ ((SIZE) == SIZE_MAX) -+/* Check against overflow. */ -+#define size_in_bounds_p(SIZE) \ -+ ((SIZE) != SIZE_MAX) -+ -+#endif /* _XSIZE_H */ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/ChangeLog psmisc-20.2.works.clean/m4/ChangeLog ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/ChangeLog 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/ChangeLog 2004-10-13 15:11:01.000000000 -0500 -@@ -0,0 +1,25 @@ -+2004-10-13 gettextize <bug-gnu-gettext@gnu.org> -+ -+ * gettext.m4: Upgrade to gettext-0.14.1. -+ * intmax.m4: New file, from gettext-0.14.1. -+ * inttypes_h.m4: Upgrade to gettext-0.14.1. -+ * isc-posix.m4: New file, from gettext-0.14.1. -+ * lib-ld.m4: Upgrade to gettext-0.14.1. -+ * lib-link.m4: Upgrade to gettext-0.14.1. -+ * lib-prefix.m4: Upgrade to gettext-0.14.1. -+ * longdouble.m4: New file, from gettext-0.14.1. -+ * longlong.m4: New file, from gettext-0.14.1. -+ * nls.m4: New file, from gettext-0.14.1. -+ * po.m4: New file, from gettext-0.14.1. -+ * printf-posix.m4: New file, from gettext-0.14.1. -+ * progtest.m4: Upgrade to gettext-0.14.1. -+ * signed.m4: New file, from gettext-0.14.1. -+ * size_max.m4: New file, from gettext-0.14.1. -+ * stdint_h.m4: Upgrade to gettext-0.14.1. -+ * uintmax_t.m4: Upgrade to gettext-0.14.1. -+ * ulonglong.m4: Upgrade to gettext-0.14.1. -+ * wchar_t.m4: New file, from gettext-0.14.1. -+ * wint_t.m4: New file, from gettext-0.14.1. -+ * xsize.m4: New file, from gettext-0.14.1. -+ * Makefile.am: New file. -+ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/Makefile psmisc-20.2.works.clean/m4/Makefile -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/Makefile.am psmisc-20.2.works.clean/m4/Makefile.am ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/Makefile.am 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/Makefile.am 2004-10-13 15:11:01.000000000 -0500 -@@ -0,0 +1 @@ -+EXTRA_DIST = intmax.m4 isc-posix.m4 longdouble.m4 longlong.m4 nls.m4 po.m4 printf-posix.m4 signed.m4 size_max.m4 wchar_t.m4 wint_t.m4 xsize.m4 -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/Makefile.in psmisc-20.2.works.clean/m4/Makefile.in -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/codeset.m4 psmisc-20.2.works.clean/m4/codeset.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/codeset.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/codeset.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,23 @@ -+# codeset.m4 serial AM1 (gettext-0.10.40) -+dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+dnl From Bruno Haible. -+ -+AC_DEFUN([AM_LANGINFO_CODESET], -+[ -+ AC_CACHE_CHECK([for nl_langinfo and CODESET], am_cv_langinfo_codeset, -+ [AC_TRY_LINK([#include <langinfo.h>], -+ [char* cs = nl_langinfo(CODESET);], -+ am_cv_langinfo_codeset=yes, -+ am_cv_langinfo_codeset=no) -+ ]) -+ if test $am_cv_langinfo_codeset = yes; then -+ AC_DEFINE(HAVE_LANGINFO_CODESET, 1, -+ [Define if you have <langinfo.h> and nl_langinfo(CODESET).]) -+ fi -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/codeset.m4~ psmisc-20.2.works.clean/m4/codeset.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/gettext.m4 psmisc-20.2.works.clean/m4/gettext.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/gettext.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/gettext.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,487 @@ -+# gettext.m4 serial 28 (gettext-0.13) -+dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+dnl -+dnl This file can can be used in projects which are not available under -+dnl the GNU General Public License or the GNU Library General Public -+dnl License but which still want to provide support for the GNU gettext -+dnl functionality. -+dnl Please note that the actual code of the GNU gettext library is covered -+dnl by the GNU Library General Public License, and the rest of the GNU -+dnl gettext package package is covered by the GNU General Public License. -+dnl They are *not* in the public domain. -+ -+dnl Authors: -+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. -+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003. -+ -+dnl Macro to add for using GNU gettext. -+ -+dnl Usage: AM_GNU_GETTEXT([INTLSYMBOL], [NEEDSYMBOL], [INTLDIR]). -+dnl INTLSYMBOL can be one of 'external', 'no-libtool', 'use-libtool'. The -+dnl default (if it is not specified or empty) is 'no-libtool'. -+dnl INTLSYMBOL should be 'external' for packages with no intl directory, -+dnl and 'no-libtool' or 'use-libtool' for packages with an intl directory. -+dnl If INTLSYMBOL is 'use-libtool', then a libtool library -+dnl $(top_builddir)/intl/libintl.la will be created (shared and/or static, -+dnl depending on --{enable,disable}-{shared,static} and on the presence of -+dnl AM-DISABLE-SHARED). If INTLSYMBOL is 'no-libtool', a static library -+dnl $(top_builddir)/intl/libintl.a will be created. -+dnl If NEEDSYMBOL is specified and is 'need-ngettext', then GNU gettext -+dnl implementations (in libc or libintl) without the ngettext() function -+dnl will be ignored. If NEEDSYMBOL is specified and is -+dnl 'need-formatstring-macros', then GNU gettext implementations that don't -+dnl support the ISO C 99 <inttypes.h> formatstring macros will be ignored. -+dnl INTLDIR is used to find the intl libraries. If empty, -+dnl the value `$(top_builddir)/intl/' is used. -+dnl -+dnl The result of the configuration is one of three cases: -+dnl 1) GNU gettext, as included in the intl subdirectory, will be compiled -+dnl and used. -+dnl Catalog format: GNU --> install in $(datadir) -+dnl Catalog extension: .mo after installation, .gmo in source tree -+dnl 2) GNU gettext has been found in the system's C library. -+dnl Catalog format: GNU --> install in $(datadir) -+dnl Catalog extension: .mo after installation, .gmo in source tree -+dnl 3) No internationalization, always use English msgid. -+dnl Catalog format: none -+dnl Catalog extension: none -+dnl If INTLSYMBOL is 'external', only cases 2 and 3 can occur. -+dnl The use of .gmo is historical (it was needed to avoid overwriting the -+dnl GNU format catalogs when building on a platform with an X/Open gettext), -+dnl but we keep it in order not to force irrelevant filename changes on the -+dnl maintainers. -+dnl -+AC_DEFUN([AM_GNU_GETTEXT], -+[ -+ dnl Argument checking. -+ ifelse([$1], [], , [ifelse([$1], [external], , [ifelse([$1], [no-libtool], , [ifelse([$1], [use-libtool], , -+ [errprint([ERROR: invalid first argument to AM_GNU_GETTEXT -+])])])])]) -+ ifelse([$2], [], , [ifelse([$2], [need-ngettext], , [ifelse([$2], [need-formatstring-macros], , -+ [errprint([ERROR: invalid second argument to AM_GNU_GETTEXT -+])])])]) -+ define(gt_included_intl, ifelse([$1], [external], [no], [yes])) -+ define(gt_libtool_suffix_prefix, ifelse([$1], [use-libtool], [l], [])) -+ -+ AC_REQUIRE([AM_PO_SUBDIRS])dnl -+ ifelse(gt_included_intl, yes, [ -+ AC_REQUIRE([AM_INTL_SUBDIR])dnl -+ ]) -+ -+ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. -+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -+ AC_REQUIRE([AC_LIB_RPATH]) -+ -+ dnl Sometimes libintl requires libiconv, so first search for libiconv. -+ dnl Ideally we would do this search only after the -+ dnl if test "$USE_NLS" = "yes"; then -+ dnl if test "$gt_cv_func_gnugettext_libc" != "yes"; then -+ dnl tests. But if configure.in invokes AM_ICONV after AM_GNU_GETTEXT -+ dnl the configure script would need to contain the same shell code -+ dnl again, outside any 'if'. There are two solutions: -+ dnl - Invoke AM_ICONV_LINKFLAGS_BODY here, outside any 'if'. -+ dnl - Control the expansions in more detail using AC_PROVIDE_IFELSE. -+ dnl Since AC_PROVIDE_IFELSE is only in autoconf >= 2.52 and not -+ dnl documented, we avoid it. -+ ifelse(gt_included_intl, yes, , [ -+ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) -+ ]) -+ -+ dnl Set USE_NLS. -+ AM_NLS -+ -+ ifelse(gt_included_intl, yes, [ -+ BUILD_INCLUDED_LIBINTL=no -+ USE_INCLUDED_LIBINTL=no -+ ]) -+ LIBINTL= -+ LTLIBINTL= -+ POSUB= -+ -+ dnl If we use NLS figure out what method -+ if test "$USE_NLS" = "yes"; then -+ gt_use_preinstalled_gnugettext=no -+ ifelse(gt_included_intl, yes, [ -+ AC_MSG_CHECKING([whether included gettext is requested]) -+ AC_ARG_WITH(included-gettext, -+ [ --with-included-gettext use the GNU gettext library included here], -+ nls_cv_force_use_gnu_gettext=$withval, -+ nls_cv_force_use_gnu_gettext=no) -+ AC_MSG_RESULT($nls_cv_force_use_gnu_gettext) -+ -+ nls_cv_use_gnu_gettext="$nls_cv_force_use_gnu_gettext" -+ if test "$nls_cv_force_use_gnu_gettext" != "yes"; then -+ ]) -+ dnl User does not insist on using GNU NLS library. Figure out what -+ dnl to use. If GNU gettext is available we use this. Else we have -+ dnl to fall back to GNU NLS library. -+ -+ dnl Add a version number to the cache macros. -+ define([gt_api_version], ifelse([$2], [need-formatstring-macros], 3, ifelse([$2], [need-ngettext], 2, 1))) -+ define([gt_cv_func_gnugettext_libc], [gt_cv_func_gnugettext]gt_api_version[_libc]) -+ define([gt_cv_func_gnugettext_libintl], [gt_cv_func_gnugettext]gt_api_version[_libintl]) -+ -+ AC_CACHE_CHECK([for GNU gettext in libc], gt_cv_func_gnugettext_libc, -+ [AC_TRY_LINK([#include <libintl.h> -+]ifelse([$2], [need-formatstring-macros], -+[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -+#endif -+changequote(,)dnl -+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -+changequote([,])dnl -+], [])[extern int _nl_msg_cat_cntr; -+extern int *_nl_domain_bindings;], -+ [bindtextdomain ("", ""); -+return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_domain_bindings], -+ gt_cv_func_gnugettext_libc=yes, -+ gt_cv_func_gnugettext_libc=no)]) -+ -+ if test "$gt_cv_func_gnugettext_libc" != "yes"; then -+ dnl Sometimes libintl requires libiconv, so first search for libiconv. -+ ifelse(gt_included_intl, yes, , [ -+ AM_ICONV_LINK -+ ]) -+ dnl Search for libintl and define LIBINTL, LTLIBINTL and INCINTL -+ dnl accordingly. Don't use AC_LIB_LINKFLAGS_BODY([intl],[iconv]) -+ dnl because that would add "-liconv" to LIBINTL and LTLIBINTL -+ dnl even if libiconv doesn't exist. -+ AC_LIB_LINKFLAGS_BODY([intl]) -+ AC_CACHE_CHECK([for GNU gettext in libintl], -+ gt_cv_func_gnugettext_libintl, -+ [gt_save_CPPFLAGS="$CPPFLAGS" -+ CPPFLAGS="$CPPFLAGS $INCINTL" -+ gt_save_LIBS="$LIBS" -+ LIBS="$LIBS $LIBINTL" -+ dnl Now see whether libintl exists and does not depend on libiconv. -+ AC_TRY_LINK([#include <libintl.h> -+]ifelse([$2], [need-formatstring-macros], -+[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -+#endif -+changequote(,)dnl -+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -+changequote([,])dnl -+], [])[extern int _nl_msg_cat_cntr; -+extern -+#ifdef __cplusplus -+"C" -+#endif -+const char *_nl_expand_alias ();], -+ [bindtextdomain ("", ""); -+return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], -+ gt_cv_func_gnugettext_libintl=yes, -+ gt_cv_func_gnugettext_libintl=no) -+ dnl Now see whether libintl exists and depends on libiconv. -+ if test "$gt_cv_func_gnugettext_libintl" != yes && test -n "$LIBICONV"; then -+ LIBS="$LIBS $LIBICONV" -+ AC_TRY_LINK([#include <libintl.h> -+]ifelse([$2], [need-formatstring-macros], -+[#ifndef __GNU_GETTEXT_SUPPORTED_REVISION -+#define __GNU_GETTEXT_SUPPORTED_REVISION(major) ((major) == 0 ? 0 : -1) -+#endif -+changequote(,)dnl -+typedef int array [2 * (__GNU_GETTEXT_SUPPORTED_REVISION(0) >= 1) - 1]; -+changequote([,])dnl -+], [])[extern int _nl_msg_cat_cntr; -+extern -+#ifdef __cplusplus -+"C" -+#endif -+const char *_nl_expand_alias ();], -+ [bindtextdomain ("", ""); -+return (int) gettext ("")]ifelse([$2], [need-ngettext], [ + (int) ngettext ("", "", 0)], [])[ + _nl_msg_cat_cntr + *_nl_expand_alias (0)], -+ [LIBINTL="$LIBINTL $LIBICONV" -+ LTLIBINTL="$LTLIBINTL $LTLIBICONV" -+ gt_cv_func_gnugettext_libintl=yes -+ ]) -+ fi -+ CPPFLAGS="$gt_save_CPPFLAGS" -+ LIBS="$gt_save_LIBS"]) -+ fi -+ -+ dnl If an already present or preinstalled GNU gettext() is found, -+ dnl use it. But if this macro is used in GNU gettext, and GNU -+ dnl gettext is already preinstalled in libintl, we update this -+ dnl libintl. (Cf. the install rule in intl/Makefile.in.) -+ if test "$gt_cv_func_gnugettext_libc" = "yes" \ -+ || { test "$gt_cv_func_gnugettext_libintl" = "yes" \ -+ && test "$PACKAGE" != gettext-runtime \ -+ && test "$PACKAGE" != gettext-tools; }; then -+ gt_use_preinstalled_gnugettext=yes -+ else -+ dnl Reset the values set by searching for libintl. -+ LIBINTL= -+ LTLIBINTL= -+ INCINTL= -+ fi -+ -+ ifelse(gt_included_intl, yes, [ -+ if test "$gt_use_preinstalled_gnugettext" != "yes"; then -+ dnl GNU gettext is not found in the C library. -+ dnl Fall back on included GNU gettext library. -+ nls_cv_use_gnu_gettext=yes -+ fi -+ fi -+ -+ if test "$nls_cv_use_gnu_gettext" = "yes"; then -+ dnl Mark actions used to generate GNU NLS library. -+ BUILD_INCLUDED_LIBINTL=yes -+ USE_INCLUDED_LIBINTL=yes -+ LIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LIBICONV" -+ LTLIBINTL="ifelse([$3],[],\${top_builddir}/intl,[$3])/libintl.[]gt_libtool_suffix_prefix[]a $LTLIBICONV" -+ LIBS=`echo " $LIBS " | sed -e 's/ -lintl / /' -e 's/^ //' -e 's/ $//'` -+ fi -+ -+ if test "$gt_use_preinstalled_gnugettext" = "yes" \ -+ || test "$nls_cv_use_gnu_gettext" = "yes"; then -+ dnl Mark actions to use GNU gettext tools. -+ CATOBJEXT=.gmo -+ fi -+ ]) -+ -+ if test "$gt_use_preinstalled_gnugettext" = "yes" \ -+ || test "$nls_cv_use_gnu_gettext" = "yes"; then -+ AC_DEFINE(ENABLE_NLS, 1, -+ [Define to 1 if translation of program messages to the user's native language -+ is requested.]) -+ else -+ USE_NLS=no -+ fi -+ fi -+ -+ AC_MSG_CHECKING([whether to use NLS]) -+ AC_MSG_RESULT([$USE_NLS]) -+ if test "$USE_NLS" = "yes"; then -+ AC_MSG_CHECKING([where the gettext function comes from]) -+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then -+ if test "$gt_cv_func_gnugettext_libintl" = "yes"; then -+ gt_source="external libintl" -+ else -+ gt_source="libc" -+ fi -+ else -+ gt_source="included intl directory" -+ fi -+ AC_MSG_RESULT([$gt_source]) -+ fi -+ -+ if test "$USE_NLS" = "yes"; then -+ -+ if test "$gt_use_preinstalled_gnugettext" = "yes"; then -+ if test "$gt_cv_func_gnugettext_libintl" = "yes"; then -+ AC_MSG_CHECKING([how to link with libintl]) -+ AC_MSG_RESULT([$LIBINTL]) -+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCINTL]) -+ fi -+ -+ dnl For backward compatibility. Some packages may be using this. -+ AC_DEFINE(HAVE_GETTEXT, 1, -+ [Define if the GNU gettext() function is already present or preinstalled.]) -+ AC_DEFINE(HAVE_DCGETTEXT, 1, -+ [Define if the GNU dcgettext() function is already present or preinstalled.]) -+ fi -+ -+ dnl We need to process the po/ directory. -+ POSUB=po -+ fi -+ -+ ifelse(gt_included_intl, yes, [ -+ dnl If this is used in GNU gettext we have to set BUILD_INCLUDED_LIBINTL -+ dnl to 'yes' because some of the testsuite requires it. -+ if test "$PACKAGE" = gettext-runtime || test "$PACKAGE" = gettext-tools; then -+ BUILD_INCLUDED_LIBINTL=yes -+ fi -+ -+ dnl Make all variables we use known to autoconf. -+ AC_SUBST(BUILD_INCLUDED_LIBINTL) -+ AC_SUBST(USE_INCLUDED_LIBINTL) -+ AC_SUBST(CATOBJEXT) -+ -+ dnl For backward compatibility. Some configure.ins may be using this. -+ nls_cv_header_intl= -+ nls_cv_header_libgt= -+ -+ dnl For backward compatibility. Some Makefiles may be using this. -+ DATADIRNAME=share -+ AC_SUBST(DATADIRNAME) -+ -+ dnl For backward compatibility. Some Makefiles may be using this. -+ INSTOBJEXT=.mo -+ AC_SUBST(INSTOBJEXT) -+ -+ dnl For backward compatibility. Some Makefiles may be using this. -+ GENCAT=gencat -+ AC_SUBST(GENCAT) -+ -+ dnl For backward compatibility. Some Makefiles may be using this. -+ if test "$USE_INCLUDED_LIBINTL" = yes; then -+ INTLOBJS="\$(GETTOBJS)" -+ fi -+ AC_SUBST(INTLOBJS) -+ -+ dnl Enable libtool support if the surrounding package wishes it. -+ INTL_LIBTOOL_SUFFIX_PREFIX=gt_libtool_suffix_prefix -+ AC_SUBST(INTL_LIBTOOL_SUFFIX_PREFIX) -+ ]) -+ -+ dnl For backward compatibility. Some Makefiles may be using this. -+ INTLLIBS="$LIBINTL" -+ AC_SUBST(INTLLIBS) -+ -+ dnl Make all documented variables known to autoconf. -+ AC_SUBST(LIBINTL) -+ AC_SUBST(LTLIBINTL) -+ AC_SUBST(POSUB) -+]) -+ -+ -+dnl Checks for all prerequisites of the intl subdirectory, -+dnl except for INTL_LIBTOOL_SUFFIX_PREFIX (and possibly LIBTOOL), INTLOBJS, -+dnl USE_INCLUDED_LIBINTL, BUILD_INCLUDED_LIBINTL. -+AC_DEFUN([AM_INTL_SUBDIR], -+[ -+ AC_REQUIRE([AC_PROG_INSTALL])dnl -+ AC_REQUIRE([AM_MKINSTALLDIRS])dnl -+ AC_REQUIRE([AC_PROG_CC])dnl -+ AC_REQUIRE([AC_CANONICAL_HOST])dnl -+ AC_REQUIRE([AC_PROG_RANLIB])dnl -+ AC_REQUIRE([AC_ISC_POSIX])dnl -+ AC_REQUIRE([AC_HEADER_STDC])dnl -+ AC_REQUIRE([AC_C_CONST])dnl -+ AC_REQUIRE([bh_C_SIGNED])dnl -+ AC_REQUIRE([AC_C_INLINE])dnl -+ AC_REQUIRE([AC_TYPE_OFF_T])dnl -+ AC_REQUIRE([AC_TYPE_SIZE_T])dnl -+ AC_REQUIRE([jm_AC_TYPE_LONG_LONG])dnl -+ AC_REQUIRE([gt_TYPE_LONGDOUBLE])dnl -+ AC_REQUIRE([gt_TYPE_WCHAR_T])dnl -+ AC_REQUIRE([gt_TYPE_WINT_T])dnl -+ AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) -+ AC_REQUIRE([jm_AC_HEADER_STDINT_H]) -+ AC_REQUIRE([gt_TYPE_INTMAX_T]) -+ AC_REQUIRE([gt_PRINTF_POSIX]) -+ AC_REQUIRE([AC_FUNC_ALLOCA])dnl -+ AC_REQUIRE([AC_FUNC_MMAP])dnl -+ AC_REQUIRE([jm_GLIBC21])dnl -+ AC_REQUIRE([gt_INTDIV0])dnl -+ AC_REQUIRE([jm_AC_TYPE_UINTMAX_T])dnl -+ AC_REQUIRE([gt_HEADER_INTTYPES_H])dnl -+ AC_REQUIRE([gt_INTTYPES_PRI])dnl -+ AC_REQUIRE([gl_XSIZE])dnl -+ -+ AC_CHECK_TYPE([ptrdiff_t], , -+ [AC_DEFINE([ptrdiff_t], [long], -+ [Define as the type of the result of subtracting two pointers, if the system doesn't define it.]) -+ ]) -+ AC_CHECK_HEADERS([argz.h limits.h locale.h nl_types.h malloc.h stddef.h \ -+stdlib.h string.h unistd.h sys/param.h]) -+ AC_CHECK_FUNCS([asprintf fwprintf getcwd getegid geteuid getgid getuid \ -+mempcpy munmap putenv setenv setlocale snprintf stpcpy strcasecmp strdup \ -+strtoul tsearch wcslen __argz_count __argz_stringify __argz_next \ -+__fsetlocking]) -+ -+ dnl Use the _snprintf function only if it is declared (because on NetBSD it -+ dnl is defined as a weak alias of snprintf; we prefer to use the latter). -+ gt_CHECK_DECL(_snprintf, [#include <stdio.h>]) -+ gt_CHECK_DECL(_snwprintf, [#include <stdio.h>]) -+ -+ dnl Use the *_unlocked functions only if they are declared. -+ dnl (because some of them were defined without being declared in Solaris -+ dnl 2.5.1 but were removed in Solaris 2.6, whereas we want binaries built -+ dnl on Solaris 2.5.1 to run on Solaris 2.6). -+ dnl Don't use AC_CHECK_DECLS because it isn't supported in autoconf-2.13. -+ gt_CHECK_DECL(feof_unlocked, [#include <stdio.h>]) -+ gt_CHECK_DECL(fgets_unlocked, [#include <stdio.h>]) -+ gt_CHECK_DECL(getc_unlocked, [#include <stdio.h>]) -+ -+ case $gt_cv_func_printf_posix in -+ *yes) HAVE_POSIX_PRINTF=1 ;; -+ *) HAVE_POSIX_PRINTF=0 ;; -+ esac -+ AC_SUBST([HAVE_POSIX_PRINTF]) -+ if test "$ac_cv_func_asprintf" = yes; then -+ HAVE_ASPRINTF=1 -+ else -+ HAVE_ASPRINTF=0 -+ fi -+ AC_SUBST([HAVE_ASPRINTF]) -+ if test "$ac_cv_func_snprintf" = yes; then -+ HAVE_SNPRINTF=1 -+ else -+ HAVE_SNPRINTF=0 -+ fi -+ AC_SUBST([HAVE_SNPRINTF]) -+ if test "$ac_cv_func_wprintf" = yes; then -+ HAVE_WPRINTF=1 -+ else -+ HAVE_WPRINTF=0 -+ fi -+ AC_SUBST([HAVE_WPRINTF]) -+ -+ AM_ICONV -+ AM_LANGINFO_CODESET -+ if test $ac_cv_header_locale_h = yes; then -+ AM_LC_MESSAGES -+ fi -+ -+ dnl intl/plural.c is generated from intl/plural.y. It requires bison, -+ dnl because plural.y uses bison specific features. It requires at least -+ dnl bison-1.26 because earlier versions generate a plural.c that doesn't -+ dnl compile. -+ dnl bison is only needed for the maintainer (who touches plural.y). But in -+ dnl order to avoid separate Makefiles or --enable-maintainer-mode, we put -+ dnl the rule in general Makefile. Now, some people carelessly touch the -+ dnl files or have a broken "make" program, hence the plural.c rule will -+ dnl sometimes fire. To avoid an error, defines BISON to ":" if it is not -+ dnl present or too old. -+ AC_CHECK_PROGS([INTLBISON], [bison]) -+ if test -z "$INTLBISON"; then -+ ac_verc_fail=yes -+ else -+ dnl Found it, now check the version. -+ AC_MSG_CHECKING([version of bison]) -+changequote(<<,>>)dnl -+ ac_prog_version=`$INTLBISON --version 2>&1 | sed -n 's/^.*GNU Bison.* \([0-9]*\.[0-9.]*\).*$/\1/p'` -+ case $ac_prog_version in -+ '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;; -+ 1.2[6-9]* | 1.[3-9][0-9]* | [2-9].*) -+changequote([,])dnl -+ ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; -+ *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; -+ esac -+ AC_MSG_RESULT([$ac_prog_version]) -+ fi -+ if test $ac_verc_fail = yes; then -+ INTLBISON=: -+ fi -+]) -+ -+ -+dnl gt_CHECK_DECL(FUNC, INCLUDES) -+dnl Check whether a function is declared. -+AC_DEFUN([gt_CHECK_DECL], -+[ -+ AC_CACHE_CHECK([whether $1 is declared], ac_cv_have_decl_$1, -+ [AC_TRY_COMPILE([$2], [ -+#ifndef $1 -+ char *p = (char *) $1; -+#endif -+], ac_cv_have_decl_$1=yes, ac_cv_have_decl_$1=no)]) -+ if test $ac_cv_have_decl_$1 = yes; then -+ gt_value=1 -+ else -+ gt_value=0 -+ fi -+ AC_DEFINE_UNQUOTED([HAVE_DECL_]translit($1, [a-z], [A-Z]), [$gt_value], -+ [Define to 1 if you have the declaration of `$1', and to 0 if you don't.]) -+]) -+ -+ -+dnl Usage: AM_GNU_GETTEXT_VERSION([gettext-version]) -+AC_DEFUN([AM_GNU_GETTEXT_VERSION], []) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/gettext.m4~ psmisc-20.2.works.clean/m4/gettext.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/glibc21.m4 psmisc-20.2.works.clean/m4/glibc21.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/glibc21.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/glibc21.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,32 @@ -+# glibc21.m4 serial 2 (fileutils-4.1.3, gettext-0.10.40) -+dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+# Test for the GNU C Library, version 2.1 or newer. -+# From Bruno Haible. -+ -+AC_DEFUN([jm_GLIBC21], -+ [ -+ AC_CACHE_CHECK(whether we are using the GNU C Library 2.1 or newer, -+ ac_cv_gnu_library_2_1, -+ [AC_EGREP_CPP([Lucky GNU user], -+ [ -+#include <features.h> -+#ifdef __GNU_LIBRARY__ -+ #if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1) || (__GLIBC__ > 2) -+ Lucky GNU user -+ #endif -+#endif -+ ], -+ ac_cv_gnu_library_2_1=yes, -+ ac_cv_gnu_library_2_1=no) -+ ] -+ ) -+ AC_SUBST(GLIBC21) -+ GLIBC21="$ac_cv_gnu_library_2_1" -+ ] -+) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/glibc21.m4~ psmisc-20.2.works.clean/m4/glibc21.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/iconv.m4 psmisc-20.2.works.clean/m4/iconv.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/iconv.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/iconv.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,103 @@ -+# iconv.m4 serial AM4 (gettext-0.11.3) -+dnl Copyright (C) 2000-2002 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+dnl From Bruno Haible. -+ -+AC_DEFUN([AM_ICONV_LINKFLAGS_BODY], -+[ -+ dnl Prerequisites of AC_LIB_LINKFLAGS_BODY. -+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -+ AC_REQUIRE([AC_LIB_RPATH]) -+ -+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV -+ dnl accordingly. -+ AC_LIB_LINKFLAGS_BODY([iconv]) -+]) -+ -+AC_DEFUN([AM_ICONV_LINK], -+[ -+ dnl Some systems have iconv in libc, some have it in libiconv (OSF/1 and -+ dnl those with the standalone portable GNU libiconv installed). -+ -+ dnl Search for libiconv and define LIBICONV, LTLIBICONV and INCICONV -+ dnl accordingly. -+ AC_REQUIRE([AM_ICONV_LINKFLAGS_BODY]) -+ -+ dnl Add $INCICONV to CPPFLAGS before performing the following checks, -+ dnl because if the user has installed libiconv and not disabled its use -+ dnl via --without-libiconv-prefix, he wants to use it. The first -+ dnl AC_TRY_LINK will then fail, the second AC_TRY_LINK will succeed. -+ am_save_CPPFLAGS="$CPPFLAGS" -+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INCICONV]) -+ -+ AC_CACHE_CHECK(for iconv, am_cv_func_iconv, [ -+ am_cv_func_iconv="no, consider installing GNU libiconv" -+ am_cv_lib_iconv=no -+ AC_TRY_LINK([#include <stdlib.h> -+#include <iconv.h>], -+ [iconv_t cd = iconv_open("",""); -+ iconv(cd,NULL,NULL,NULL,NULL); -+ iconv_close(cd);], -+ am_cv_func_iconv=yes) -+ if test "$am_cv_func_iconv" != yes; then -+ am_save_LIBS="$LIBS" -+ LIBS="$LIBS $LIBICONV" -+ AC_TRY_LINK([#include <stdlib.h> -+#include <iconv.h>], -+ [iconv_t cd = iconv_open("",""); -+ iconv(cd,NULL,NULL,NULL,NULL); -+ iconv_close(cd);], -+ am_cv_lib_iconv=yes -+ am_cv_func_iconv=yes) -+ LIBS="$am_save_LIBS" -+ fi -+ ]) -+ if test "$am_cv_func_iconv" = yes; then -+ AC_DEFINE(HAVE_ICONV, 1, [Define if you have the iconv() function.]) -+ fi -+ if test "$am_cv_lib_iconv" = yes; then -+ AC_MSG_CHECKING([how to link with libiconv]) -+ AC_MSG_RESULT([$LIBICONV]) -+ else -+ dnl If $LIBICONV didn't lead to a usable library, we don't need $INCICONV -+ dnl either. -+ CPPFLAGS="$am_save_CPPFLAGS" -+ LIBICONV= -+ LTLIBICONV= -+ fi -+ AC_SUBST(LIBICONV) -+ AC_SUBST(LTLIBICONV) -+]) -+ -+AC_DEFUN([AM_ICONV], -+[ -+ AM_ICONV_LINK -+ if test "$am_cv_func_iconv" = yes; then -+ AC_MSG_CHECKING([for iconv declaration]) -+ AC_CACHE_VAL(am_cv_proto_iconv, [ -+ AC_TRY_COMPILE([ -+#include <stdlib.h> -+#include <iconv.h> -+extern -+#ifdef __cplusplus -+"C" -+#endif -+#if defined(__STDC__) || defined(__cplusplus) -+size_t iconv (iconv_t cd, char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft); -+#else -+size_t iconv(); -+#endif -+], [], am_cv_proto_iconv_arg1="", am_cv_proto_iconv_arg1="const") -+ am_cv_proto_iconv="extern size_t iconv (iconv_t cd, $am_cv_proto_iconv_arg1 char * *inbuf, size_t *inbytesleft, char * *outbuf, size_t *outbytesleft);"]) -+ am_cv_proto_iconv=`echo "[$]am_cv_proto_iconv" | tr -s ' ' | sed -e 's/( /(/'` -+ AC_MSG_RESULT([$]{ac_t:- -+ }[$]am_cv_proto_iconv) -+ AC_DEFINE_UNQUOTED(ICONV_CONST, $am_cv_proto_iconv_arg1, -+ [Define as const if the declaration of iconv() needs const.]) -+ fi -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/iconv.m4~ psmisc-20.2.works.clean/m4/iconv.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/intdiv0.m4 psmisc-20.2.works.clean/m4/intdiv0.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/intdiv0.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/intdiv0.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,72 @@ -+# intdiv0.m4 serial 1 (gettext-0.11.3) -+dnl Copyright (C) 2002 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+dnl From Bruno Haible. -+ -+AC_DEFUN([gt_INTDIV0], -+[ -+ AC_REQUIRE([AC_PROG_CC])dnl -+ AC_REQUIRE([AC_CANONICAL_HOST])dnl -+ -+ AC_CACHE_CHECK([whether integer division by zero raises SIGFPE], -+ gt_cv_int_divbyzero_sigfpe, -+ [ -+ AC_TRY_RUN([ -+#include <stdlib.h> -+#include <signal.h> -+ -+static void -+#ifdef __cplusplus -+sigfpe_handler (int sig) -+#else -+sigfpe_handler (sig) int sig; -+#endif -+{ -+ /* Exit with code 0 if SIGFPE, with code 1 if any other signal. */ -+ exit (sig != SIGFPE); -+} -+ -+int x = 1; -+int y = 0; -+int z; -+int nan; -+ -+int main () -+{ -+ signal (SIGFPE, sigfpe_handler); -+/* IRIX and AIX (when "xlc -qcheck" is used) yield signal SIGTRAP. */ -+#if (defined (__sgi) || defined (_AIX)) && defined (SIGTRAP) -+ signal (SIGTRAP, sigfpe_handler); -+#endif -+/* Linux/SPARC yields signal SIGILL. */ -+#if defined (__sparc__) && defined (__linux__) -+ signal (SIGILL, sigfpe_handler); -+#endif -+ -+ z = x / y; -+ nan = y / y; -+ exit (1); -+} -+], gt_cv_int_divbyzero_sigfpe=yes, gt_cv_int_divbyzero_sigfpe=no, -+ [ -+ # Guess based on the CPU. -+ case "$host_cpu" in -+ alpha* | i[34567]86 | m68k | s390*) -+ gt_cv_int_divbyzero_sigfpe="guessing yes";; -+ *) -+ gt_cv_int_divbyzero_sigfpe="guessing no";; -+ esac -+ ]) -+ ]) -+ case "$gt_cv_int_divbyzero_sigfpe" in -+ *yes) value=1;; -+ *) value=0;; -+ esac -+ AC_DEFINE_UNQUOTED(INTDIV0_RAISES_SIGFPE, $value, -+ [Define if integer division by zero raises signal SIGFPE.]) -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/intdiv0.m4~ psmisc-20.2.works.clean/m4/intdiv0.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/intmax.m4 psmisc-20.2.works.clean/m4/intmax.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/intmax.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/intmax.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,32 @@ -+# intmax.m4 serial 1 (gettext-0.12) -+dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+dnl From Bruno Haible. -+dnl Test whether the system has the 'intmax_t' type, but don't attempt to -+dnl find a replacement if it is lacking. -+ -+AC_DEFUN([gt_TYPE_INTMAX_T], -+[ -+ AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) -+ AC_REQUIRE([jm_AC_HEADER_STDINT_H]) -+ AC_CACHE_CHECK(for intmax_t, gt_cv_c_intmax_t, -+ [AC_TRY_COMPILE([ -+#include <stddef.h> -+#include <stdlib.h> -+#if HAVE_STDINT_H_WITH_UINTMAX -+#include <stdint.h> -+#endif -+#if HAVE_INTTYPES_H_WITH_UINTMAX -+#include <inttypes.h> -+#endif -+], [intmax_t x = -1;], gt_cv_c_intmax_t=yes, gt_cv_c_intmax_t=no)]) -+ if test $gt_cv_c_intmax_t = yes; then -+ AC_DEFINE(HAVE_INTMAX_T, 1, -+ [Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>.]) -+ fi -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/intmax.m4~ psmisc-20.2.works.clean/m4/intmax.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/inttypes-pri.m4 psmisc-20.2.works.clean/m4/inttypes-pri.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/inttypes-pri.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/inttypes-pri.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,32 @@ -+# inttypes-pri.m4 serial 1 (gettext-0.11.4) -+dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+dnl From Bruno Haible. -+ -+# Define PRI_MACROS_BROKEN if <inttypes.h> exists and defines the PRI* -+# macros to non-string values. This is the case on AIX 4.3.3. -+ -+AC_DEFUN([gt_INTTYPES_PRI], -+[ -+ AC_REQUIRE([gt_HEADER_INTTYPES_H]) -+ if test $gt_cv_header_inttypes_h = yes; then -+ AC_CACHE_CHECK([whether the inttypes.h PRIxNN macros are broken], -+ gt_cv_inttypes_pri_broken, -+ [ -+ AC_TRY_COMPILE([#include <inttypes.h> -+#ifdef PRId32 -+char *p = PRId32; -+#endif -+], [], gt_cv_inttypes_pri_broken=no, gt_cv_inttypes_pri_broken=yes) -+ ]) -+ fi -+ if test "$gt_cv_inttypes_pri_broken" = yes; then -+ AC_DEFINE_UNQUOTED(PRI_MACROS_BROKEN, 1, -+ [Define if <inttypes.h> exists and defines unusable PRI* macros.]) -+ fi -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/inttypes-pri.m4~ psmisc-20.2.works.clean/m4/inttypes-pri.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/inttypes.m4 psmisc-20.2.works.clean/m4/inttypes.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/inttypes.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/inttypes.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,27 @@ -+# inttypes.m4 serial 1 (gettext-0.11.4) -+dnl Copyright (C) 1997-2002 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+dnl From Paul Eggert. -+ -+# Define HAVE_INTTYPES_H if <inttypes.h> exists and doesn't clash with -+# <sys/types.h>. -+ -+AC_DEFUN([gt_HEADER_INTTYPES_H], -+[ -+ AC_CACHE_CHECK([for inttypes.h], gt_cv_header_inttypes_h, -+ [ -+ AC_TRY_COMPILE( -+ [#include <sys/types.h> -+#include <inttypes.h>], -+ [], gt_cv_header_inttypes_h=yes, gt_cv_header_inttypes_h=no) -+ ]) -+ if test $gt_cv_header_inttypes_h = yes; then -+ AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H, 1, -+ [Define if <inttypes.h> exists and doesn't clash with <sys/types.h>.]) -+ fi -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/inttypes.m4~ psmisc-20.2.works.clean/m4/inttypes.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/inttypes_h.m4 psmisc-20.2.works.clean/m4/inttypes_h.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/inttypes_h.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/inttypes_h.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,28 @@ -+# inttypes_h.m4 serial 5 (gettext-0.12) -+dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+dnl From Paul Eggert. -+ -+# Define HAVE_INTTYPES_H_WITH_UINTMAX if <inttypes.h> exists, -+# doesn't clash with <sys/types.h>, and declares uintmax_t. -+ -+AC_DEFUN([jm_AC_HEADER_INTTYPES_H], -+[ -+ AC_CACHE_CHECK([for inttypes.h], jm_ac_cv_header_inttypes_h, -+ [AC_TRY_COMPILE( -+ [#include <sys/types.h> -+#include <inttypes.h>], -+ [uintmax_t i = (uintmax_t) -1;], -+ jm_ac_cv_header_inttypes_h=yes, -+ jm_ac_cv_header_inttypes_h=no)]) -+ if test $jm_ac_cv_header_inttypes_h = yes; then -+ AC_DEFINE_UNQUOTED(HAVE_INTTYPES_H_WITH_UINTMAX, 1, -+ [Define if <inttypes.h> exists, doesn't clash with <sys/types.h>, -+ and declares uintmax_t. ]) -+ fi -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/inttypes_h.m4~ psmisc-20.2.works.clean/m4/inttypes_h.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/isc-posix.m4 psmisc-20.2.works.clean/m4/isc-posix.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/isc-posix.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/isc-posix.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,26 @@ -+# isc-posix.m4 serial 2 (gettext-0.11.2) -+dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+# This file is not needed with autoconf-2.53 and newer. Remove it in 2005. -+ -+# This test replaces the one in autoconf. -+# Currently this macro should have the same name as the autoconf macro -+# because gettext's gettext.m4 (distributed in the automake package) -+# still uses it. Otherwise, the use in gettext.m4 makes autoheader -+# give these diagnostics: -+# configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX -+# configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX -+ -+undefine([AC_ISC_POSIX]) -+ -+AC_DEFUN([AC_ISC_POSIX], -+ [ -+ dnl This test replaces the obsolescent AC_ISC_POSIX kludge. -+ AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"]) -+ ] -+) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/isc-posix.m4~ psmisc-20.2.works.clean/m4/isc-posix.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/lcmessage.m4 psmisc-20.2.works.clean/m4/lcmessage.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/lcmessage.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/lcmessage.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,32 @@ -+# lcmessage.m4 serial 3 (gettext-0.11.3) -+dnl Copyright (C) 1995-2002 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+dnl -+dnl This file can can be used in projects which are not available under -+dnl the GNU General Public License or the GNU Library General Public -+dnl License but which still want to provide support for the GNU gettext -+dnl functionality. -+dnl Please note that the actual code of the GNU gettext library is covered -+dnl by the GNU Library General Public License, and the rest of the GNU -+dnl gettext package package is covered by the GNU General Public License. -+dnl They are *not* in the public domain. -+ -+dnl Authors: -+dnl Ulrich Drepper <drepper@cygnus.com>, 1995. -+ -+# Check whether LC_MESSAGES is available in <locale.h>. -+ -+AC_DEFUN([AM_LC_MESSAGES], -+[ -+ AC_CACHE_CHECK([for LC_MESSAGES], am_cv_val_LC_MESSAGES, -+ [AC_TRY_LINK([#include <locale.h>], [return LC_MESSAGES], -+ am_cv_val_LC_MESSAGES=yes, am_cv_val_LC_MESSAGES=no)]) -+ if test $am_cv_val_LC_MESSAGES = yes; then -+ AC_DEFINE(HAVE_LC_MESSAGES, 1, -+ [Define if your <locale.h> file defines LC_MESSAGES.]) -+ fi -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/lcmessage.m4~ psmisc-20.2.works.clean/m4/lcmessage.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/lib-ld.m4 psmisc-20.2.works.clean/m4/lib-ld.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/lib-ld.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/lib-ld.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,112 @@ -+# lib-ld.m4 serial 3 (gettext-0.13) -+dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+dnl Subroutines of libtool.m4, -+dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision -+dnl with libtool.m4. -+ -+dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no. -+AC_DEFUN([AC_LIB_PROG_LD_GNU], -+[AC_CACHE_CHECK([if the linker ($LD) is GNU ld], acl_cv_prog_gnu_ld, -+[# I'd rather use --version here, but apparently some GNU ld's only accept -v. -+case `$LD -v 2>&1 </dev/null` in -+*GNU* | *'with BFD'*) -+ acl_cv_prog_gnu_ld=yes ;; -+*) -+ acl_cv_prog_gnu_ld=no ;; -+esac]) -+with_gnu_ld=$acl_cv_prog_gnu_ld -+]) -+ -+dnl From libtool-1.4. Sets the variable LD. -+AC_DEFUN([AC_LIB_PROG_LD], -+[AC_ARG_WITH(gnu-ld, -+[ --with-gnu-ld assume the C compiler uses GNU ld [default=no]], -+test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no) -+AC_REQUIRE([AC_PROG_CC])dnl -+AC_REQUIRE([AC_CANONICAL_HOST])dnl -+# Prepare PATH_SEPARATOR. -+# The user is always right. -+if test "${PATH_SEPARATOR+set}" != set; then -+ echo "#! /bin/sh" >conf$$.sh -+ echo "exit 0" >>conf$$.sh -+ chmod +x conf$$.sh -+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then -+ PATH_SEPARATOR=';' -+ else -+ PATH_SEPARATOR=: -+ fi -+ rm -f conf$$.sh -+fi -+ac_prog=ld -+if test "$GCC" = yes; then -+ # Check if gcc -print-prog-name=ld gives a path. -+ AC_MSG_CHECKING([for ld used by GCC]) -+ case $host in -+ *-*-mingw*) -+ # gcc leaves a trailing carriage return which upsets mingw -+ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; -+ *) -+ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; -+ esac -+ case $ac_prog in -+ # Accept absolute paths. -+ [[\\/]* | [A-Za-z]:[\\/]*)] -+ [re_direlt='/[^/][^/]*/\.\./'] -+ # Canonicalize the path of ld -+ ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'` -+ while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do -+ ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"` -+ done -+ test -z "$LD" && LD="$ac_prog" -+ ;; -+ "") -+ # If it fails, then pretend we aren't using GCC. -+ ac_prog=ld -+ ;; -+ *) -+ # If it is relative, then search for the first ld in PATH. -+ with_gnu_ld=unknown -+ ;; -+ esac -+elif test "$with_gnu_ld" = yes; then -+ AC_MSG_CHECKING([for GNU ld]) -+else -+ AC_MSG_CHECKING([for non-GNU ld]) -+fi -+AC_CACHE_VAL(acl_cv_path_LD, -+[if test -z "$LD"; then -+ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}" -+ for ac_dir in $PATH; do -+ test -z "$ac_dir" && ac_dir=. -+ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then -+ acl_cv_path_LD="$ac_dir/$ac_prog" -+ # Check to see if the program is GNU ld. I'd rather use --version, -+ # but apparently some GNU ld's only accept -v. -+ # Break only if it was the GNU/non-GNU ld that we prefer. -+ case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in -+ *GNU* | *'with BFD'*) -+ test "$with_gnu_ld" != no && break ;; -+ *) -+ test "$with_gnu_ld" != yes && break ;; -+ esac -+ fi -+ done -+ IFS="$ac_save_ifs" -+else -+ acl_cv_path_LD="$LD" # Let the user override the test with a path. -+fi]) -+LD="$acl_cv_path_LD" -+if test -n "$LD"; then -+ AC_MSG_RESULT($LD) -+else -+ AC_MSG_RESULT(no) -+fi -+test -z "$LD" && AC_MSG_ERROR([no acceptable ld found in \$PATH]) -+AC_LIB_PROG_LD_GNU -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/lib-ld.m4~ psmisc-20.2.works.clean/m4/lib-ld.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/lib-link.m4 psmisc-20.2.works.clean/m4/lib-link.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/lib-link.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/lib-link.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,551 @@ -+# lib-link.m4 serial 4 (gettext-0.12) -+dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+dnl From Bruno Haible. -+ -+dnl AC_LIB_LINKFLAGS(name [, dependencies]) searches for libname and -+dnl the libraries corresponding to explicit and implicit dependencies. -+dnl Sets and AC_SUBSTs the LIB${NAME} and LTLIB${NAME} variables and -+dnl augments the CPPFLAGS variable. -+AC_DEFUN([AC_LIB_LINKFLAGS], -+[ -+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -+ AC_REQUIRE([AC_LIB_RPATH]) -+ define([Name],[translit([$1],[./-], [___])]) -+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], -+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) -+ AC_CACHE_CHECK([how to link with lib[]$1], [ac_cv_lib[]Name[]_libs], [ -+ AC_LIB_LINKFLAGS_BODY([$1], [$2]) -+ ac_cv_lib[]Name[]_libs="$LIB[]NAME" -+ ac_cv_lib[]Name[]_ltlibs="$LTLIB[]NAME" -+ ac_cv_lib[]Name[]_cppflags="$INC[]NAME" -+ ]) -+ LIB[]NAME="$ac_cv_lib[]Name[]_libs" -+ LTLIB[]NAME="$ac_cv_lib[]Name[]_ltlibs" -+ INC[]NAME="$ac_cv_lib[]Name[]_cppflags" -+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) -+ AC_SUBST([LIB]NAME) -+ AC_SUBST([LTLIB]NAME) -+ dnl Also set HAVE_LIB[]NAME so that AC_LIB_HAVE_LINKFLAGS can reuse the -+ dnl results of this search when this library appears as a dependency. -+ HAVE_LIB[]NAME=yes -+ undefine([Name]) -+ undefine([NAME]) -+]) -+ -+dnl AC_LIB_HAVE_LINKFLAGS(name, dependencies, includes, testcode) -+dnl searches for libname and the libraries corresponding to explicit and -+dnl implicit dependencies, together with the specified include files and -+dnl the ability to compile and link the specified testcode. If found, it -+dnl sets and AC_SUBSTs HAVE_LIB${NAME}=yes and the LIB${NAME} and -+dnl LTLIB${NAME} variables and augments the CPPFLAGS variable, and -+dnl #defines HAVE_LIB${NAME} to 1. Otherwise, it sets and AC_SUBSTs -+dnl HAVE_LIB${NAME}=no and LIB${NAME} and LTLIB${NAME} to empty. -+AC_DEFUN([AC_LIB_HAVE_LINKFLAGS], -+[ -+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -+ AC_REQUIRE([AC_LIB_RPATH]) -+ define([Name],[translit([$1],[./-], [___])]) -+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], -+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) -+ -+ dnl Search for lib[]Name and define LIB[]NAME, LTLIB[]NAME and INC[]NAME -+ dnl accordingly. -+ AC_LIB_LINKFLAGS_BODY([$1], [$2]) -+ -+ dnl Add $INC[]NAME to CPPFLAGS before performing the following checks, -+ dnl because if the user has installed lib[]Name and not disabled its use -+ dnl via --without-lib[]Name-prefix, he wants to use it. -+ ac_save_CPPFLAGS="$CPPFLAGS" -+ AC_LIB_APPENDTOVAR([CPPFLAGS], [$INC]NAME) -+ -+ AC_CACHE_CHECK([for lib[]$1], [ac_cv_lib[]Name], [ -+ ac_save_LIBS="$LIBS" -+ LIBS="$LIBS $LIB[]NAME" -+ AC_TRY_LINK([$3], [$4], [ac_cv_lib[]Name=yes], [ac_cv_lib[]Name=no]) -+ LIBS="$ac_save_LIBS" -+ ]) -+ if test "$ac_cv_lib[]Name" = yes; then -+ HAVE_LIB[]NAME=yes -+ AC_DEFINE([HAVE_LIB]NAME, 1, [Define if you have the $1 library.]) -+ AC_MSG_CHECKING([how to link with lib[]$1]) -+ AC_MSG_RESULT([$LIB[]NAME]) -+ else -+ HAVE_LIB[]NAME=no -+ dnl If $LIB[]NAME didn't lead to a usable library, we don't need -+ dnl $INC[]NAME either. -+ CPPFLAGS="$ac_save_CPPFLAGS" -+ LIB[]NAME= -+ LTLIB[]NAME= -+ fi -+ AC_SUBST([HAVE_LIB]NAME) -+ AC_SUBST([LIB]NAME) -+ AC_SUBST([LTLIB]NAME) -+ undefine([Name]) -+ undefine([NAME]) -+]) -+ -+dnl Determine the platform dependent parameters needed to use rpath: -+dnl libext, shlibext, hardcode_libdir_flag_spec, hardcode_libdir_separator, -+dnl hardcode_direct, hardcode_minus_L. -+AC_DEFUN([AC_LIB_RPATH], -+[ -+ AC_REQUIRE([AC_PROG_CC]) dnl we use $CC, $GCC, $LDFLAGS -+ AC_REQUIRE([AC_LIB_PROG_LD]) dnl we use $LD, $with_gnu_ld -+ AC_REQUIRE([AC_CANONICAL_HOST]) dnl we use $host -+ AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT]) dnl we use $ac_aux_dir -+ AC_CACHE_CHECK([for shared library run path origin], acl_cv_rpath, [ -+ CC="$CC" GCC="$GCC" LDFLAGS="$LDFLAGS" LD="$LD" with_gnu_ld="$with_gnu_ld" \ -+ ${CONFIG_SHELL-/bin/sh} "$ac_aux_dir/config.rpath" "$host" > conftest.sh -+ . ./conftest.sh -+ rm -f ./conftest.sh -+ acl_cv_rpath=done -+ ]) -+ wl="$acl_cv_wl" -+ libext="$acl_cv_libext" -+ shlibext="$acl_cv_shlibext" -+ hardcode_libdir_flag_spec="$acl_cv_hardcode_libdir_flag_spec" -+ hardcode_libdir_separator="$acl_cv_hardcode_libdir_separator" -+ hardcode_direct="$acl_cv_hardcode_direct" -+ hardcode_minus_L="$acl_cv_hardcode_minus_L" -+ dnl Determine whether the user wants rpath handling at all. -+ AC_ARG_ENABLE(rpath, -+ [ --disable-rpath do not hardcode runtime library paths], -+ :, enable_rpath=yes) -+]) -+ -+dnl AC_LIB_LINKFLAGS_BODY(name [, dependencies]) searches for libname and -+dnl the libraries corresponding to explicit and implicit dependencies. -+dnl Sets the LIB${NAME}, LTLIB${NAME} and INC${NAME} variables. -+AC_DEFUN([AC_LIB_LINKFLAGS_BODY], -+[ -+ define([NAME],[translit([$1],[abcdefghijklmnopqrstuvwxyz./-], -+ [ABCDEFGHIJKLMNOPQRSTUVWXYZ___])]) -+ dnl By default, look in $includedir and $libdir. -+ use_additional=yes -+ AC_LIB_WITH_FINAL_PREFIX([ -+ eval additional_includedir=\"$includedir\" -+ eval additional_libdir=\"$libdir\" -+ ]) -+ AC_LIB_ARG_WITH([lib$1-prefix], -+[ --with-lib$1-prefix[=DIR] search for lib$1 in DIR/include and DIR/lib -+ --without-lib$1-prefix don't search for lib$1 in includedir and libdir], -+[ -+ if test "X$withval" = "Xno"; then -+ use_additional=no -+ else -+ if test "X$withval" = "X"; then -+ AC_LIB_WITH_FINAL_PREFIX([ -+ eval additional_includedir=\"$includedir\" -+ eval additional_libdir=\"$libdir\" -+ ]) -+ else -+ additional_includedir="$withval/include" -+ additional_libdir="$withval/lib" -+ fi -+ fi -+]) -+ dnl Search the library and its dependencies in $additional_libdir and -+ dnl $LDFLAGS. Using breadth-first-seach. -+ LIB[]NAME= -+ LTLIB[]NAME= -+ INC[]NAME= -+ rpathdirs= -+ ltrpathdirs= -+ names_already_handled= -+ names_next_round='$1 $2' -+ while test -n "$names_next_round"; do -+ names_this_round="$names_next_round" -+ names_next_round= -+ for name in $names_this_round; do -+ already_handled= -+ for n in $names_already_handled; do -+ if test "$n" = "$name"; then -+ already_handled=yes -+ break -+ fi -+ done -+ if test -z "$already_handled"; then -+ names_already_handled="$names_already_handled $name" -+ dnl See if it was already located by an earlier AC_LIB_LINKFLAGS -+ dnl or AC_LIB_HAVE_LINKFLAGS call. -+ uppername=`echo "$name" | sed -e 'y|abcdefghijklmnopqrstuvwxyz./-|ABCDEFGHIJKLMNOPQRSTUVWXYZ___|'` -+ eval value=\"\$HAVE_LIB$uppername\" -+ if test -n "$value"; then -+ if test "$value" = yes; then -+ eval value=\"\$LIB$uppername\" -+ test -z "$value" || LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$value" -+ eval value=\"\$LTLIB$uppername\" -+ test -z "$value" || LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$value" -+ else -+ dnl An earlier call to AC_LIB_HAVE_LINKFLAGS has determined -+ dnl that this library doesn't exist. So just drop it. -+ : -+ fi -+ else -+ dnl Search the library lib$name in $additional_libdir and $LDFLAGS -+ dnl and the already constructed $LIBNAME/$LTLIBNAME. -+ found_dir= -+ found_la= -+ found_so= -+ found_a= -+ if test $use_additional = yes; then -+ if test -n "$shlibext" && test -f "$additional_libdir/lib$name.$shlibext"; then -+ found_dir="$additional_libdir" -+ found_so="$additional_libdir/lib$name.$shlibext" -+ if test -f "$additional_libdir/lib$name.la"; then -+ found_la="$additional_libdir/lib$name.la" -+ fi -+ else -+ if test -f "$additional_libdir/lib$name.$libext"; then -+ found_dir="$additional_libdir" -+ found_a="$additional_libdir/lib$name.$libext" -+ if test -f "$additional_libdir/lib$name.la"; then -+ found_la="$additional_libdir/lib$name.la" -+ fi -+ fi -+ fi -+ fi -+ if test "X$found_dir" = "X"; then -+ for x in $LDFLAGS $LTLIB[]NAME; do -+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -+ case "$x" in -+ -L*) -+ dir=`echo "X$x" | sed -e 's/^X-L//'` -+ if test -n "$shlibext" && test -f "$dir/lib$name.$shlibext"; then -+ found_dir="$dir" -+ found_so="$dir/lib$name.$shlibext" -+ if test -f "$dir/lib$name.la"; then -+ found_la="$dir/lib$name.la" -+ fi -+ else -+ if test -f "$dir/lib$name.$libext"; then -+ found_dir="$dir" -+ found_a="$dir/lib$name.$libext" -+ if test -f "$dir/lib$name.la"; then -+ found_la="$dir/lib$name.la" -+ fi -+ fi -+ fi -+ ;; -+ esac -+ if test "X$found_dir" != "X"; then -+ break -+ fi -+ done -+ fi -+ if test "X$found_dir" != "X"; then -+ dnl Found the library. -+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$found_dir -l$name" -+ if test "X$found_so" != "X"; then -+ dnl Linking with a shared library. We attempt to hardcode its -+ dnl directory into the executable's runpath, unless it's the -+ dnl standard /usr/lib. -+ if test "$enable_rpath" = no || test "X$found_dir" = "X/usr/lib"; then -+ dnl No hardcoding is needed. -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" -+ else -+ dnl Use an explicit option to hardcode DIR into the resulting -+ dnl binary. -+ dnl Potentially add DIR to ltrpathdirs. -+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. -+ haveit= -+ for x in $ltrpathdirs; do -+ if test "X$x" = "X$found_dir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ ltrpathdirs="$ltrpathdirs $found_dir" -+ fi -+ dnl The hardcoding into $LIBNAME is system dependent. -+ if test "$hardcode_direct" = yes; then -+ dnl Using DIR/libNAME.so during linking hardcodes DIR into the -+ dnl resulting binary. -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" -+ else -+ if test -n "$hardcode_libdir_flag_spec" && test "$hardcode_minus_L" = no; then -+ dnl Use an explicit option to hardcode DIR into the resulting -+ dnl binary. -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" -+ dnl Potentially add DIR to rpathdirs. -+ dnl The rpathdirs will be appended to $LIBNAME at the end. -+ haveit= -+ for x in $rpathdirs; do -+ if test "X$x" = "X$found_dir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ rpathdirs="$rpathdirs $found_dir" -+ fi -+ else -+ dnl Rely on "-L$found_dir". -+ dnl But don't add it if it's already contained in the LDFLAGS -+ dnl or the already constructed $LIBNAME -+ haveit= -+ for x in $LDFLAGS $LIB[]NAME; do -+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -+ if test "X$x" = "X-L$found_dir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir" -+ fi -+ if test "$hardcode_minus_L" != no; then -+ dnl FIXME: Not sure whether we should use -+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" -+ dnl here. -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_so" -+ else -+ dnl We cannot use $hardcode_runpath_var and LD_RUN_PATH -+ dnl here, because this doesn't fit in flags passed to the -+ dnl compiler. So give up. No hardcoding. This affects only -+ dnl very old systems. -+ dnl FIXME: Not sure whether we should use -+ dnl "-L$found_dir -l$name" or "-L$found_dir $found_so" -+ dnl here. -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" -+ fi -+ fi -+ fi -+ fi -+ else -+ if test "X$found_a" != "X"; then -+ dnl Linking with a static library. -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$found_a" -+ else -+ dnl We shouldn't come here, but anyway it's good to have a -+ dnl fallback. -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$found_dir -l$name" -+ fi -+ fi -+ dnl Assume the include files are nearby. -+ additional_includedir= -+ case "$found_dir" in -+ */lib | */lib/) -+ basedir=`echo "X$found_dir" | sed -e 's,^X,,' -e 's,/lib/*$,,'` -+ additional_includedir="$basedir/include" -+ ;; -+ esac -+ if test "X$additional_includedir" != "X"; then -+ dnl Potentially add $additional_includedir to $INCNAME. -+ dnl But don't add it -+ dnl 1. if it's the standard /usr/include, -+ dnl 2. if it's /usr/local/include and we are using GCC on Linux, -+ dnl 3. if it's already present in $CPPFLAGS or the already -+ dnl constructed $INCNAME, -+ dnl 4. if it doesn't exist as a directory. -+ if test "X$additional_includedir" != "X/usr/include"; then -+ haveit= -+ if test "X$additional_includedir" = "X/usr/local/include"; then -+ if test -n "$GCC"; then -+ case $host_os in -+ linux*) haveit=yes;; -+ esac -+ fi -+ fi -+ if test -z "$haveit"; then -+ for x in $CPPFLAGS $INC[]NAME; do -+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -+ if test "X$x" = "X-I$additional_includedir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ if test -d "$additional_includedir"; then -+ dnl Really add $additional_includedir to $INCNAME. -+ INC[]NAME="${INC[]NAME}${INC[]NAME:+ }-I$additional_includedir" -+ fi -+ fi -+ fi -+ fi -+ fi -+ dnl Look for dependencies. -+ if test -n "$found_la"; then -+ dnl Read the .la file. It defines the variables -+ dnl dlname, library_names, old_library, dependency_libs, current, -+ dnl age, revision, installed, dlopen, dlpreopen, libdir. -+ save_libdir="$libdir" -+ case "$found_la" in -+ */* | *\\*) . "$found_la" ;; -+ *) . "./$found_la" ;; -+ esac -+ libdir="$save_libdir" -+ dnl We use only dependency_libs. -+ for dep in $dependency_libs; do -+ case "$dep" in -+ -L*) -+ additional_libdir=`echo "X$dep" | sed -e 's/^X-L//'` -+ dnl Potentially add $additional_libdir to $LIBNAME and $LTLIBNAME. -+ dnl But don't add it -+ dnl 1. if it's the standard /usr/lib, -+ dnl 2. if it's /usr/local/lib and we are using GCC on Linux, -+ dnl 3. if it's already present in $LDFLAGS or the already -+ dnl constructed $LIBNAME, -+ dnl 4. if it doesn't exist as a directory. -+ if test "X$additional_libdir" != "X/usr/lib"; then -+ haveit= -+ if test "X$additional_libdir" = "X/usr/local/lib"; then -+ if test -n "$GCC"; then -+ case $host_os in -+ linux*) haveit=yes;; -+ esac -+ fi -+ fi -+ if test -z "$haveit"; then -+ haveit= -+ for x in $LDFLAGS $LIB[]NAME; do -+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -+ if test "X$x" = "X-L$additional_libdir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ if test -d "$additional_libdir"; then -+ dnl Really add $additional_libdir to $LIBNAME. -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-L$additional_libdir" -+ fi -+ fi -+ haveit= -+ for x in $LDFLAGS $LTLIB[]NAME; do -+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -+ if test "X$x" = "X-L$additional_libdir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ if test -d "$additional_libdir"; then -+ dnl Really add $additional_libdir to $LTLIBNAME. -+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-L$additional_libdir" -+ fi -+ fi -+ fi -+ fi -+ ;; -+ -R*) -+ dir=`echo "X$dep" | sed -e 's/^X-R//'` -+ if test "$enable_rpath" != no; then -+ dnl Potentially add DIR to rpathdirs. -+ dnl The rpathdirs will be appended to $LIBNAME at the end. -+ haveit= -+ for x in $rpathdirs; do -+ if test "X$x" = "X$dir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ rpathdirs="$rpathdirs $dir" -+ fi -+ dnl Potentially add DIR to ltrpathdirs. -+ dnl The ltrpathdirs will be appended to $LTLIBNAME at the end. -+ haveit= -+ for x in $ltrpathdirs; do -+ if test "X$x" = "X$dir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ ltrpathdirs="$ltrpathdirs $dir" -+ fi -+ fi -+ ;; -+ -l*) -+ dnl Handle this in the next round. -+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's/^X-l//'` -+ ;; -+ *.la) -+ dnl Handle this in the next round. Throw away the .la's -+ dnl directory; it is already contained in a preceding -L -+ dnl option. -+ names_next_round="$names_next_round "`echo "X$dep" | sed -e 's,^X.*/,,' -e 's,^lib,,' -e 's,\.la$,,'` -+ ;; -+ *) -+ dnl Most likely an immediate library name. -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$dep" -+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }$dep" -+ ;; -+ esac -+ done -+ fi -+ else -+ dnl Didn't find the library; assume it is in the system directories -+ dnl known to the linker and runtime loader. (All the system -+ dnl directories known to the linker should also be known to the -+ dnl runtime loader, otherwise the system is severely misconfigured.) -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }-l$name" -+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-l$name" -+ fi -+ fi -+ fi -+ done -+ done -+ if test "X$rpathdirs" != "X"; then -+ if test -n "$hardcode_libdir_separator"; then -+ dnl Weird platform: only the last -rpath option counts, the user must -+ dnl pass all path elements in one option. We can arrange that for a -+ dnl single library, but not when more than one $LIBNAMEs are used. -+ alldirs= -+ for found_dir in $rpathdirs; do -+ alldirs="${alldirs}${alldirs:+$hardcode_libdir_separator}$found_dir" -+ done -+ dnl Note: hardcode_libdir_flag_spec uses $libdir and $wl. -+ acl_save_libdir="$libdir" -+ libdir="$alldirs" -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ libdir="$acl_save_libdir" -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" -+ else -+ dnl The -rpath options are cumulative. -+ for found_dir in $rpathdirs; do -+ acl_save_libdir="$libdir" -+ libdir="$found_dir" -+ eval flag=\"$hardcode_libdir_flag_spec\" -+ libdir="$acl_save_libdir" -+ LIB[]NAME="${LIB[]NAME}${LIB[]NAME:+ }$flag" -+ done -+ fi -+ fi -+ if test "X$ltrpathdirs" != "X"; then -+ dnl When using libtool, the option that works for both libraries and -+ dnl executables is -R. The -R options are cumulative. -+ for found_dir in $ltrpathdirs; do -+ LTLIB[]NAME="${LTLIB[]NAME}${LTLIB[]NAME:+ }-R$found_dir" -+ done -+ fi -+]) -+ -+dnl AC_LIB_APPENDTOVAR(VAR, CONTENTS) appends the elements of CONTENTS to VAR, -+dnl unless already present in VAR. -+dnl Works only for CPPFLAGS, not for LIB* variables because that sometimes -+dnl contains two or three consecutive elements that belong together. -+AC_DEFUN([AC_LIB_APPENDTOVAR], -+[ -+ for element in [$2]; do -+ haveit= -+ for x in $[$1]; do -+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -+ if test "X$x" = "X$element"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ [$1]="${[$1]}${[$1]:+ }$element" -+ fi -+ done -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/lib-link.m4~ psmisc-20.2.works.clean/m4/lib-link.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/lib-prefix.m4 psmisc-20.2.works.clean/m4/lib-prefix.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/lib-prefix.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/lib-prefix.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,155 @@ -+# lib-prefix.m4 serial 3 (gettext-0.13) -+dnl Copyright (C) 2001-2003 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+dnl From Bruno Haible. -+ -+dnl AC_LIB_ARG_WITH is synonymous to AC_ARG_WITH in autoconf-2.13, and -+dnl similar to AC_ARG_WITH in autoconf 2.52...2.57 except that is doesn't -+dnl require excessive bracketing. -+ifdef([AC_HELP_STRING], -+[AC_DEFUN([AC_LIB_ARG_WITH], [AC_ARG_WITH([$1],[[$2]],[$3],[$4])])], -+[AC_DEFUN([AC_][LIB_ARG_WITH], [AC_ARG_WITH([$1],[$2],[$3],[$4])])]) -+ -+dnl AC_LIB_PREFIX adds to the CPPFLAGS and LDFLAGS the flags that are needed -+dnl to access previously installed libraries. The basic assumption is that -+dnl a user will want packages to use other packages he previously installed -+dnl with the same --prefix option. -+dnl This macro is not needed if only AC_LIB_LINKFLAGS is used to locate -+dnl libraries, but is otherwise very convenient. -+AC_DEFUN([AC_LIB_PREFIX], -+[ -+ AC_BEFORE([$0], [AC_LIB_LINKFLAGS]) -+ AC_REQUIRE([AC_PROG_CC]) -+ AC_REQUIRE([AC_CANONICAL_HOST]) -+ AC_REQUIRE([AC_LIB_PREPARE_PREFIX]) -+ dnl By default, look in $includedir and $libdir. -+ use_additional=yes -+ AC_LIB_WITH_FINAL_PREFIX([ -+ eval additional_includedir=\"$includedir\" -+ eval additional_libdir=\"$libdir\" -+ ]) -+ AC_LIB_ARG_WITH([lib-prefix], -+[ --with-lib-prefix[=DIR] search for libraries in DIR/include and DIR/lib -+ --without-lib-prefix don't search for libraries in includedir and libdir], -+[ -+ if test "X$withval" = "Xno"; then -+ use_additional=no -+ else -+ if test "X$withval" = "X"; then -+ AC_LIB_WITH_FINAL_PREFIX([ -+ eval additional_includedir=\"$includedir\" -+ eval additional_libdir=\"$libdir\" -+ ]) -+ else -+ additional_includedir="$withval/include" -+ additional_libdir="$withval/lib" -+ fi -+ fi -+]) -+ if test $use_additional = yes; then -+ dnl Potentially add $additional_includedir to $CPPFLAGS. -+ dnl But don't add it -+ dnl 1. if it's the standard /usr/include, -+ dnl 2. if it's already present in $CPPFLAGS, -+ dnl 3. if it's /usr/local/include and we are using GCC on Linux, -+ dnl 4. if it doesn't exist as a directory. -+ if test "X$additional_includedir" != "X/usr/include"; then -+ haveit= -+ for x in $CPPFLAGS; do -+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -+ if test "X$x" = "X-I$additional_includedir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ if test "X$additional_includedir" = "X/usr/local/include"; then -+ if test -n "$GCC"; then -+ case $host_os in -+ linux*) haveit=yes;; -+ esac -+ fi -+ fi -+ if test -z "$haveit"; then -+ if test -d "$additional_includedir"; then -+ dnl Really add $additional_includedir to $CPPFLAGS. -+ CPPFLAGS="${CPPFLAGS}${CPPFLAGS:+ }-I$additional_includedir" -+ fi -+ fi -+ fi -+ fi -+ dnl Potentially add $additional_libdir to $LDFLAGS. -+ dnl But don't add it -+ dnl 1. if it's the standard /usr/lib, -+ dnl 2. if it's already present in $LDFLAGS, -+ dnl 3. if it's /usr/local/lib and we are using GCC on Linux, -+ dnl 4. if it doesn't exist as a directory. -+ if test "X$additional_libdir" != "X/usr/lib"; then -+ haveit= -+ for x in $LDFLAGS; do -+ AC_LIB_WITH_FINAL_PREFIX([eval x=\"$x\"]) -+ if test "X$x" = "X-L$additional_libdir"; then -+ haveit=yes -+ break -+ fi -+ done -+ if test -z "$haveit"; then -+ if test "X$additional_libdir" = "X/usr/local/lib"; then -+ if test -n "$GCC"; then -+ case $host_os in -+ linux*) haveit=yes;; -+ esac -+ fi -+ fi -+ if test -z "$haveit"; then -+ if test -d "$additional_libdir"; then -+ dnl Really add $additional_libdir to $LDFLAGS. -+ LDFLAGS="${LDFLAGS}${LDFLAGS:+ }-L$additional_libdir" -+ fi -+ fi -+ fi -+ fi -+ fi -+]) -+ -+dnl AC_LIB_PREPARE_PREFIX creates variables acl_final_prefix, -+dnl acl_final_exec_prefix, containing the values to which $prefix and -+dnl $exec_prefix will expand at the end of the configure script. -+AC_DEFUN([AC_LIB_PREPARE_PREFIX], -+[ -+ dnl Unfortunately, prefix and exec_prefix get only finally determined -+ dnl at the end of configure. -+ if test "X$prefix" = "XNONE"; then -+ acl_final_prefix="$ac_default_prefix" -+ else -+ acl_final_prefix="$prefix" -+ fi -+ if test "X$exec_prefix" = "XNONE"; then -+ acl_final_exec_prefix='${prefix}' -+ else -+ acl_final_exec_prefix="$exec_prefix" -+ fi -+ acl_save_prefix="$prefix" -+ prefix="$acl_final_prefix" -+ eval acl_final_exec_prefix=\"$acl_final_exec_prefix\" -+ prefix="$acl_save_prefix" -+]) -+ -+dnl AC_LIB_WITH_FINAL_PREFIX([statement]) evaluates statement, with the -+dnl variables prefix and exec_prefix bound to the values they will have -+dnl at the end of the configure script. -+AC_DEFUN([AC_LIB_WITH_FINAL_PREFIX], -+[ -+ acl_save_prefix="$prefix" -+ prefix="$acl_final_prefix" -+ acl_save_exec_prefix="$exec_prefix" -+ exec_prefix="$acl_final_exec_prefix" -+ $1 -+ exec_prefix="$acl_save_exec_prefix" -+ prefix="$acl_save_prefix" -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/lib-prefix.m4~ psmisc-20.2.works.clean/m4/lib-prefix.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/longdouble.m4 psmisc-20.2.works.clean/m4/longdouble.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/longdouble.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/longdouble.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,30 @@ -+# longdouble.m4 serial 1 (gettext-0.12) -+dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+dnl From Bruno Haible. -+dnl Test whether the compiler supports the 'long double' type. -+dnl Prerequisite: AC_PROG_CC -+ -+AC_DEFUN([gt_TYPE_LONGDOUBLE], -+[ -+ AC_CACHE_CHECK([for long double], gt_cv_c_long_double, -+ [if test "$GCC" = yes; then -+ gt_cv_c_long_double=yes -+ else -+ AC_TRY_COMPILE([ -+ /* The Stardent Vistra knows sizeof(long double), but does not support it. */ -+ long double foo = 0.0; -+ /* On Ultrix 4.3 cc, long double is 4 and double is 8. */ -+ int array [2*(sizeof(long double) >= sizeof(double)) - 1]; -+ ], , -+ gt_cv_c_long_double=yes, gt_cv_c_long_double=no) -+ fi]) -+ if test $gt_cv_c_long_double = yes; then -+ AC_DEFINE(HAVE_LONG_DOUBLE, 1, [Define if you have the 'long double' type.]) -+ fi -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/longdouble.m4~ psmisc-20.2.works.clean/m4/longdouble.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/longlong.m4 psmisc-20.2.works.clean/m4/longlong.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/longlong.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/longlong.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,25 @@ -+# longlong.m4 serial 4 -+dnl Copyright (C) 1999-2003 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+dnl From Paul Eggert. -+ -+# Define HAVE_LONG_LONG if 'long long' works. -+ -+AC_DEFUN([jm_AC_TYPE_LONG_LONG], -+[ -+ AC_CACHE_CHECK([for long long], ac_cv_type_long_long, -+ [AC_TRY_LINK([long long ll = 1LL; int i = 63;], -+ [long long llmax = (long long) -1; -+ return ll << i | ll >> i | llmax / ll | llmax % ll;], -+ ac_cv_type_long_long=yes, -+ ac_cv_type_long_long=no)]) -+ if test $ac_cv_type_long_long = yes; then -+ AC_DEFINE(HAVE_LONG_LONG, 1, -+ [Define if you have the 'long long' type.]) -+ fi -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/longlong.m4~ psmisc-20.2.works.clean/m4/longlong.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/nls.m4 psmisc-20.2.works.clean/m4/nls.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/nls.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/nls.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,49 @@ -+# nls.m4 serial 1 (gettext-0.12) -+dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+dnl -+dnl This file can can be used in projects which are not available under -+dnl the GNU General Public License or the GNU Library General Public -+dnl License but which still want to provide support for the GNU gettext -+dnl functionality. -+dnl Please note that the actual code of the GNU gettext library is covered -+dnl by the GNU Library General Public License, and the rest of the GNU -+dnl gettext package package is covered by the GNU General Public License. -+dnl They are *not* in the public domain. -+ -+dnl Authors: -+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. -+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003. -+ -+AC_DEFUN([AM_NLS], -+[ -+ AC_MSG_CHECKING([whether NLS is requested]) -+ dnl Default is enabled NLS -+ AC_ARG_ENABLE(nls, -+ [ --disable-nls do not use Native Language Support], -+ USE_NLS=$enableval, USE_NLS=yes) -+ AC_MSG_RESULT($USE_NLS) -+ AC_SUBST(USE_NLS) -+]) -+ -+AC_DEFUN([AM_MKINSTALLDIRS], -+[ -+ dnl If the AC_CONFIG_AUX_DIR macro for autoconf is used we possibly -+ dnl find the mkinstalldirs script in another subdir but $(top_srcdir). -+ dnl Try to locate it. -+ MKINSTALLDIRS= -+ if test -n "$ac_aux_dir"; then -+ case "$ac_aux_dir" in -+ /*) MKINSTALLDIRS="$ac_aux_dir/mkinstalldirs" ;; -+ *) MKINSTALLDIRS="\$(top_builddir)/$ac_aux_dir/mkinstalldirs" ;; -+ esac -+ fi -+ if test -z "$MKINSTALLDIRS"; then -+ MKINSTALLDIRS="\$(top_srcdir)/mkinstalldirs" -+ fi -+ AC_SUBST(MKINSTALLDIRS) -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/nls.m4~ psmisc-20.2.works.clean/m4/nls.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/po.m4 psmisc-20.2.works.clean/m4/po.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/po.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/po.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,426 @@ -+# po.m4 serial 3 (gettext-0.14) -+dnl Copyright (C) 1995-2003 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+dnl -+dnl This file can can be used in projects which are not available under -+dnl the GNU General Public License or the GNU Library General Public -+dnl License but which still want to provide support for the GNU gettext -+dnl functionality. -+dnl Please note that the actual code of the GNU gettext library is covered -+dnl by the GNU Library General Public License, and the rest of the GNU -+dnl gettext package package is covered by the GNU General Public License. -+dnl They are *not* in the public domain. -+ -+dnl Authors: -+dnl Ulrich Drepper <drepper@cygnus.com>, 1995-2000. -+dnl Bruno Haible <haible@clisp.cons.org>, 2000-2003. -+ -+dnl Checks for all prerequisites of the po subdirectory. -+AC_DEFUN([AM_PO_SUBDIRS], -+[ -+ AC_REQUIRE([AC_PROG_MAKE_SET])dnl -+ AC_REQUIRE([AC_PROG_INSTALL])dnl -+ AC_REQUIRE([AM_MKINSTALLDIRS])dnl -+ AC_REQUIRE([AM_NLS])dnl -+ -+ dnl Perform the following tests also if --disable-nls has been given, -+ dnl because they are needed for "make dist" to work. -+ -+ dnl Search for GNU msgfmt in the PATH. -+ dnl The first test excludes Solaris msgfmt and early GNU msgfmt versions. -+ dnl The second test excludes FreeBSD msgfmt. -+ AM_PATH_PROG_WITH_TEST(MSGFMT, msgfmt, -+ [$ac_dir/$ac_word --statistics /dev/null >/dev/null 2>&1 && -+ (if $ac_dir/$ac_word --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], -+ :) -+ AC_PATH_PROG(GMSGFMT, gmsgfmt, $MSGFMT) -+ -+ dnl Search for GNU xgettext 0.12 or newer in the PATH. -+ dnl The first test excludes Solaris xgettext and early GNU xgettext versions. -+ dnl The second test excludes FreeBSD xgettext. -+ AM_PATH_PROG_WITH_TEST(XGETTEXT, xgettext, -+ [$ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && -+ (if $ac_dir/$ac_word --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi)], -+ :) -+ dnl Remove leftover from FreeBSD xgettext call. -+ rm -f messages.po -+ -+ dnl Search for GNU msgmerge 0.11 or newer in the PATH. -+ AM_PATH_PROG_WITH_TEST(MSGMERGE, msgmerge, -+ [$ac_dir/$ac_word --update -q /dev/null /dev/null >/dev/null 2>&1], :) -+ -+ dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. -+ dnl Test whether we really found GNU msgfmt. -+ if test "$GMSGFMT" != ":"; then -+ dnl If it is no GNU msgfmt we define it as : so that the -+ dnl Makefiles still can work. -+ if $GMSGFMT --statistics /dev/null >/dev/null 2>&1 && -+ (if $GMSGFMT --statistics /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -+ : ; -+ else -+ GMSGFMT=`echo "$GMSGFMT" | sed -e 's,^.*/,,'` -+ AC_MSG_RESULT( -+ [found $GMSGFMT program is not GNU msgfmt; ignore it]) -+ GMSGFMT=":" -+ fi -+ fi -+ -+ dnl This could go away some day; the PATH_PROG_WITH_TEST already does it. -+ dnl Test whether we really found GNU xgettext. -+ if test "$XGETTEXT" != ":"; then -+ dnl If it is no GNU xgettext we define it as : so that the -+ dnl Makefiles still can work. -+ if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null >/dev/null 2>&1 && -+ (if $XGETTEXT --omit-header --copyright-holder= --msgid-bugs-address= /dev/null 2>&1 >/dev/null | grep usage >/dev/null; then exit 1; else exit 0; fi); then -+ : ; -+ else -+ AC_MSG_RESULT( -+ [found xgettext program is not GNU xgettext; ignore it]) -+ XGETTEXT=":" -+ fi -+ dnl Remove leftover from FreeBSD xgettext call. -+ rm -f messages.po -+ fi -+ -+ AC_OUTPUT_COMMANDS([ -+ for ac_file in $CONFIG_FILES; do -+ # Support "outfile[:infile[:infile...]]" -+ case "$ac_file" in -+ *:*) ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;; -+ esac -+ # PO directories have a Makefile.in generated from Makefile.in.in. -+ case "$ac_file" in */Makefile.in) -+ # Adjust a relative srcdir. -+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` -+ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" -+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` -+ # In autoconf-2.13 it is called $ac_given_srcdir. -+ # In autoconf-2.50 it is called $srcdir. -+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" -+ case "$ac_given_srcdir" in -+ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; -+ /*) top_srcdir="$ac_given_srcdir" ;; -+ *) top_srcdir="$ac_dots$ac_given_srcdir" ;; -+ esac -+ if test -f "$ac_given_srcdir/$ac_dir/POTFILES.in"; then -+ rm -f "$ac_dir/POTFILES" -+ test -n "$as_me" && echo "$as_me: creating $ac_dir/POTFILES" || echo "creating $ac_dir/POTFILES" -+ cat "$ac_given_srcdir/$ac_dir/POTFILES.in" | sed -e "/^#/d" -e "/^[ ]*\$/d" -e "s,.*, $top_srcdir/& \\\\," | sed -e "\$s/\(.*\) \\\\/\1/" > "$ac_dir/POTFILES" -+ POMAKEFILEDEPS="POTFILES.in" -+ # ALL_LINGUAS, POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES depend -+ # on $ac_dir but don't depend on user-specified configuration -+ # parameters. -+ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then -+ # The LINGUAS file contains the set of available languages. -+ if test -n "$OBSOLETE_ALL_LINGUAS"; then -+ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" -+ fi -+ ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` -+ # Hide the ALL_LINGUAS assigment from automake. -+ eval 'ALL_LINGUAS''=$ALL_LINGUAS_' -+ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" -+ else -+ # The set of available languages was given in configure.in. -+ eval 'ALL_LINGUAS''=$OBSOLETE_ALL_LINGUAS' -+ fi -+ # Compute POFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) -+ # Compute UPDATEPOFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) -+ # Compute DUMMYPOFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) -+ # Compute GMOFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) -+ case "$ac_given_srcdir" in -+ .) srcdirpre= ;; -+ *) srcdirpre='$(srcdir)/' ;; -+ esac -+ POFILES= -+ UPDATEPOFILES= -+ DUMMYPOFILES= -+ GMOFILES= -+ for lang in $ALL_LINGUAS; do -+ POFILES="$POFILES $srcdirpre$lang.po" -+ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" -+ DUMMYPOFILES="$DUMMYPOFILES $lang.nop" -+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo" -+ done -+ # CATALOGS depends on both $ac_dir and the user's LINGUAS -+ # environment variable. -+ INST_LINGUAS= -+ if test -n "$ALL_LINGUAS"; then -+ for presentlang in $ALL_LINGUAS; do -+ useit=no -+ if test "%UNSET%" != "$LINGUAS"; then -+ desiredlanguages="$LINGUAS" -+ else -+ desiredlanguages="$ALL_LINGUAS" -+ fi -+ for desiredlang in $desiredlanguages; do -+ # Use the presentlang catalog if desiredlang is -+ # a. equal to presentlang, or -+ # b. a variant of presentlang (because in this case, -+ # presentlang can be used as a fallback for messages -+ # which are not translated in the desiredlang catalog). -+ case "$desiredlang" in -+ "$presentlang"*) useit=yes;; -+ esac -+ done -+ if test $useit = yes; then -+ INST_LINGUAS="$INST_LINGUAS $presentlang" -+ fi -+ done -+ fi -+ CATALOGS= -+ if test -n "$INST_LINGUAS"; then -+ for lang in $INST_LINGUAS; do -+ CATALOGS="$CATALOGS $lang.gmo" -+ done -+ fi -+ test -n "$as_me" && echo "$as_me: creating $ac_dir/Makefile" || echo "creating $ac_dir/Makefile" -+ sed -e "/^POTFILES =/r $ac_dir/POTFILES" -e "/^# Makevars/r $ac_given_srcdir/$ac_dir/Makevars" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@POMAKEFILEDEPS@|$POMAKEFILEDEPS|g" "$ac_dir/Makefile.in" > "$ac_dir/Makefile" -+ for f in "$ac_given_srcdir/$ac_dir"/Rules-*; do -+ if test -f "$f"; then -+ case "$f" in -+ *.orig | *.bak | *~) ;; -+ *) cat "$f" >> "$ac_dir/Makefile" ;; -+ esac -+ fi -+ done -+ fi -+ ;; -+ esac -+ done], -+ [# Capture the value of obsolete ALL_LINGUAS because we need it to compute -+ # POFILES, UPDATEPOFILES, DUMMYPOFILES, GMOFILES, CATALOGS. But hide it -+ # from automake. -+ eval 'OBSOLETE_ALL_LINGUAS''="$ALL_LINGUAS"' -+ # Capture the value of LINGUAS because we need it to compute CATALOGS. -+ LINGUAS="${LINGUAS-%UNSET%}" -+ ]) -+]) -+ -+dnl Postprocesses a Makefile in a directory containing PO files. -+AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE], -+[ -+ # When this code is run, in config.status, two variables have already been -+ # set: -+ # - OBSOLETE_ALL_LINGUAS is the value of LINGUAS set in configure.in, -+ # - LINGUAS is the value of the environment variable LINGUAS at configure -+ # time. -+ -+changequote(,)dnl -+ # Adjust a relative srcdir. -+ ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'` -+ ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`" -+ ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'` -+ # In autoconf-2.13 it is called $ac_given_srcdir. -+ # In autoconf-2.50 it is called $srcdir. -+ test -n "$ac_given_srcdir" || ac_given_srcdir="$srcdir" -+ case "$ac_given_srcdir" in -+ .) top_srcdir=`echo $ac_dots|sed 's%/$%%'` ;; -+ /*) top_srcdir="$ac_given_srcdir" ;; -+ *) top_srcdir="$ac_dots$ac_given_srcdir" ;; -+ esac -+ -+ # Find a way to echo strings without interpreting backslash. -+ if test "X`(echo '\t') 2>/dev/null`" = 'X\t'; then -+ gt_echo='echo' -+ else -+ if test "X`(printf '%s\n' '\t') 2>/dev/null`" = 'X\t'; then -+ gt_echo='printf %s\n' -+ else -+ echo_func () { -+ cat <<EOT -+$* -+EOT -+ } -+ gt_echo='echo_func' -+ fi -+ fi -+ -+ # A sed script that extracts the value of VARIABLE from a Makefile. -+ sed_x_variable=' -+# Test if the hold space is empty. -+x -+s/P/P/ -+x -+ta -+# Yes it was empty. Look if we have the expected variable definition. -+/^[ ]*VARIABLE[ ]*=/{ -+ # Seen the first line of the variable definition. -+ s/^[ ]*VARIABLE[ ]*=// -+ ba -+} -+bd -+:a -+# Here we are processing a line from the variable definition. -+# Remove comment, more precisely replace it with a space. -+s/#.*$/ / -+# See if the line ends in a backslash. -+tb -+:b -+s/\\$// -+# Print the line, without the trailing backslash. -+p -+tc -+# There was no trailing backslash. The end of the variable definition is -+# reached. Clear the hold space. -+s/^.*$// -+x -+bd -+:c -+# A trailing backslash means that the variable definition continues in the -+# next line. Put a nonempty string into the hold space to indicate this. -+s/^.*$/P/ -+x -+:d -+' -+changequote([,])dnl -+ -+ # Set POTFILES to the value of the Makefile variable POTFILES. -+ sed_x_POTFILES="`$gt_echo \"$sed_x_variable\" | sed -e '/^ *#/d' -e 's/VARIABLE/POTFILES/g'`" -+ POTFILES=`sed -n -e "$sed_x_POTFILES" < "$ac_file"` -+ # Compute POTFILES_DEPS as -+ # $(foreach file, $(POTFILES), $(top_srcdir)/$(file)) -+ POTFILES_DEPS= -+ for file in $POTFILES; do -+ POTFILES_DEPS="$POTFILES_DEPS "'$(top_srcdir)/'"$file" -+ done -+ POMAKEFILEDEPS="" -+ -+ if test -n "$OBSOLETE_ALL_LINGUAS"; then -+ test -n "$as_me" && echo "$as_me: setting ALL_LINGUAS in configure.in is obsolete" || echo "setting ALL_LINGUAS in configure.in is obsolete" -+ fi -+ if test -f "$ac_given_srcdir/$ac_dir/LINGUAS"; then -+ # The LINGUAS file contains the set of available languages. -+ ALL_LINGUAS_=`sed -e "/^#/d" "$ac_given_srcdir/$ac_dir/LINGUAS"` -+ POMAKEFILEDEPS="$POMAKEFILEDEPS LINGUAS" -+ else -+ # Set ALL_LINGUAS to the value of the Makefile variable LINGUAS. -+ sed_x_LINGUAS="`$gt_echo \"$sed_x_variable\" | sed -e '/^ *#/d' -e 's/VARIABLE/LINGUAS/g'`" -+ ALL_LINGUAS_=`sed -n -e "$sed_x_LINGUAS" < "$ac_file"` -+ fi -+ # Hide the ALL_LINGUAS assigment from automake. -+ eval 'ALL_LINGUAS''=$ALL_LINGUAS_' -+ # Compute POFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).po) -+ # Compute UPDATEPOFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).po-update) -+ # Compute DUMMYPOFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(lang).nop) -+ # Compute GMOFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).gmo) -+ # Compute PROPERTIESFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).properties) -+ # Compute CLASSFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(top_srcdir)/$(DOMAIN)_$(lang).class) -+ # Compute QMFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(lang).qm) -+ # Compute MSGFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang)).msg) -+ # Compute RESOURCESDLLFILES -+ # as $(foreach lang, $(ALL_LINGUAS), $(srcdir)/$(frob $(lang))/$(DOMAIN).resources.dll) -+ case "$ac_given_srcdir" in -+ .) srcdirpre= ;; -+ *) srcdirpre='$(srcdir)/' ;; -+ esac -+ POFILES= -+ UPDATEPOFILES= -+ DUMMYPOFILES= -+ GMOFILES= -+ PROPERTIESFILES= -+ CLASSFILES= -+ QMFILES= -+ MSGFILES= -+ RESOURCESDLLFILES= -+ for lang in $ALL_LINGUAS; do -+ POFILES="$POFILES $srcdirpre$lang.po" -+ UPDATEPOFILES="$UPDATEPOFILES $lang.po-update" -+ DUMMYPOFILES="$DUMMYPOFILES $lang.nop" -+ GMOFILES="$GMOFILES $srcdirpre$lang.gmo" -+ PROPERTIESFILES="$PROPERTIESFILES \$(top_srcdir)/\$(DOMAIN)_$lang.properties" -+ CLASSFILES="$CLASSFILES \$(top_srcdir)/\$(DOMAIN)_$lang.class" -+ QMFILES="$QMFILES $srcdirpre$lang.qm" -+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` -+ MSGFILES="$MSGFILES $srcdirpre$frobbedlang.msg" -+ frobbedlang=`echo $lang | sed -e 's/_/-/g'` -+ RESOURCESDLLFILES="$RESOURCESDLLFILES $srcdirpre$frobbedlang/\$(DOMAIN).resources.dll" -+ done -+ # CATALOGS depends on both $ac_dir and the user's LINGUAS -+ # environment variable. -+ INST_LINGUAS= -+ if test -n "$ALL_LINGUAS"; then -+ for presentlang in $ALL_LINGUAS; do -+ useit=no -+ if test "%UNSET%" != "$LINGUAS"; then -+ desiredlanguages="$LINGUAS" -+ else -+ desiredlanguages="$ALL_LINGUAS" -+ fi -+ for desiredlang in $desiredlanguages; do -+ # Use the presentlang catalog if desiredlang is -+ # a. equal to presentlang, or -+ # b. a variant of presentlang (because in this case, -+ # presentlang can be used as a fallback for messages -+ # which are not translated in the desiredlang catalog). -+ case "$desiredlang" in -+ "$presentlang"*) useit=yes;; -+ esac -+ done -+ if test $useit = yes; then -+ INST_LINGUAS="$INST_LINGUAS $presentlang" -+ fi -+ done -+ fi -+ CATALOGS= -+ JAVACATALOGS= -+ QTCATALOGS= -+ TCLCATALOGS= -+ CSHARPCATALOGS= -+ if test -n "$INST_LINGUAS"; then -+ for lang in $INST_LINGUAS; do -+ CATALOGS="$CATALOGS $lang.gmo" -+ JAVACATALOGS="$JAVACATALOGS \$(DOMAIN)_$lang.properties" -+ QTCATALOGS="$QTCATALOGS $lang.qm" -+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` -+ TCLCATALOGS="$TCLCATALOGS $frobbedlang.msg" -+ frobbedlang=`echo $lang | sed -e 's/_/-/g'` -+ CSHARPCATALOGS="$CSHARPCATALOGS $frobbedlang/\$(DOMAIN).resources.dll" -+ done -+ fi -+ -+ sed -e "s|@POTFILES_DEPS@|$POTFILES_DEPS|g" -e "s|@POFILES@|$POFILES|g" -e "s|@UPDATEPOFILES@|$UPDATEPOFILES|g" -e "s|@DUMMYPOFILES@|$DUMMYPOFILES|g" -e "s|@GMOFILES@|$GMOFILES|g" -e "s|@PROPERTIESFILES@|$PROPERTIESFILES|g" -e "s|@CLASSFILES@|$CLASSFILES|g" -e "s|@QMFILES@|$QMFILES|g" -e "s|@MSGFILES@|$MSGFILES|g" -e "s|@RESOURCESDLLFILES@|$RESOURCESDLLFILES|g" -e "s|@CATALOGS@|$CATALOGS|g" -e "s|@JAVACATALOGS@|$JAVACATALOGS|g" -e "s|@QTCATALOGS@|$QTCATALOGS|g" -e "s|@TCLCATALOGS@|$TCLCATALOGS|g" -e "s|@CSHARPCATALOGS@|$CSHARPCATALOGS|g" -e 's,^#distdir:,distdir:,' < "$ac_file" > "$ac_file.tmp" -+ if grep -l '@TCLCATALOGS@' "$ac_file" > /dev/null; then -+ # Add dependencies that cannot be formulated as a simple suffix rule. -+ for lang in $ALL_LINGUAS; do -+ frobbedlang=`echo $lang | sed -e 's/\..*$//' -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'` -+ cat >> "$ac_file.tmp" <<EOF -+$frobbedlang.msg: $lang.po -+ @echo "\$(MSGFMT) -c --tcl -d \$(srcdir) -l $lang $srcdirpre$lang.po"; \ -+ \$(MSGFMT) -c --tcl -d "\$(srcdir)" -l $lang $srcdirpre$lang.po || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; } -+EOF -+ done -+ fi -+ if grep -l '@CSHARPCATALOGS@' "$ac_file" > /dev/null; then -+ # Add dependencies that cannot be formulated as a simple suffix rule. -+ for lang in $ALL_LINGUAS; do -+ frobbedlang=`echo $lang | sed -e 's/_/-/g'` -+ cat >> "$ac_file.tmp" <<EOF -+$frobbedlang/\$(DOMAIN).resources.dll: $lang.po -+ @echo "\$(MSGFMT) -c --csharp -d \$(srcdir) -l $lang $srcdirpre$lang.po -r \$(DOMAIN)"; \ -+ \$(MSGFMT) -c --csharp -d "\$(srcdir)" -l $lang $srcdirpre$lang.po -r "\$(DOMAIN)" || { rm -f "\$(srcdir)/$frobbedlang.msg"; exit 1; } -+EOF -+ done -+ fi -+ if test -n "$POMAKEFILEDEPS"; then -+ cat >> "$ac_file.tmp" <<EOF -+Makefile: $POMAKEFILEDEPS -+EOF -+ fi -+ mv "$ac_file.tmp" "$ac_file" -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/po.m4~ psmisc-20.2.works.clean/m4/po.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/printf-posix.m4 psmisc-20.2.works.clean/m4/printf-posix.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/printf-posix.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/printf-posix.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,46 @@ -+# printf-posix.m4 serial 2 (gettext-0.13.1) -+dnl Copyright (C) 2003 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+dnl From Bruno Haible. -+dnl Test whether the printf() function supports POSIX/XSI format strings with -+dnl positions. -+ -+AC_DEFUN([gt_PRINTF_POSIX], -+[ -+ AC_REQUIRE([AC_PROG_CC]) -+ AC_CACHE_CHECK([whether printf() supports POSIX/XSI format strings], -+ gt_cv_func_printf_posix, -+ [ -+ AC_TRY_RUN([ -+#include <stdio.h> -+#include <string.h> -+/* The string "%2$d %1$d", with dollar characters protected from the shell's -+ dollar expansion (possibly an autoconf bug). */ -+static char format[] = { '%', '2', '$', 'd', ' ', '%', '1', '$', 'd', '\0' }; -+static char buf[100]; -+int main () -+{ -+ sprintf (buf, format, 33, 55); -+ return (strcmp (buf, "55 33") != 0); -+}], gt_cv_func_printf_posix=yes, gt_cv_func_printf_posix=no, -+ [ -+ AC_EGREP_CPP(notposix, [ -+#if defined __NetBSD__ || defined _MSC_VER || defined __MINGW32__ || defined __CYGWIN__ -+ notposix -+#endif -+ ], gt_cv_func_printf_posix="guessing no", -+ gt_cv_func_printf_posix="guessing yes") -+ ]) -+ ]) -+ case $gt_cv_func_printf_posix in -+ *yes) -+ AC_DEFINE(HAVE_POSIX_PRINTF, 1, -+ [Define if your printf() function supports format strings with positions.]) -+ ;; -+ esac -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/printf-posix.m4~ psmisc-20.2.works.clean/m4/printf-posix.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/progtest.m4 psmisc-20.2.works.clean/m4/progtest.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/progtest.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/progtest.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,91 @@ -+# progtest.m4 serial 3 (gettext-0.12) -+dnl Copyright (C) 1996-2003 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+dnl -+dnl This file can can be used in projects which are not available under -+dnl the GNU General Public License or the GNU Library General Public -+dnl License but which still want to provide support for the GNU gettext -+dnl functionality. -+dnl Please note that the actual code of the GNU gettext library is covered -+dnl by the GNU Library General Public License, and the rest of the GNU -+dnl gettext package package is covered by the GNU General Public License. -+dnl They are *not* in the public domain. -+ -+dnl Authors: -+dnl Ulrich Drepper <drepper@cygnus.com>, 1996. -+ -+# Search path for a program which passes the given test. -+ -+dnl AM_PATH_PROG_WITH_TEST(VARIABLE, PROG-TO-CHECK-FOR, -+dnl TEST-PERFORMED-ON-FOUND_PROGRAM [, VALUE-IF-NOT-FOUND [, PATH]]) -+AC_DEFUN([AM_PATH_PROG_WITH_TEST], -+[ -+# Prepare PATH_SEPARATOR. -+# The user is always right. -+if test "${PATH_SEPARATOR+set}" != set; then -+ echo "#! /bin/sh" >conf$$.sh -+ echo "exit 0" >>conf$$.sh -+ chmod +x conf$$.sh -+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then -+ PATH_SEPARATOR=';' -+ else -+ PATH_SEPARATOR=: -+ fi -+ rm -f conf$$.sh -+fi -+ -+# Find out how to test for executable files. Don't use a zero-byte file, -+# as systems may use methods other than mode bits to determine executability. -+cat >conf$$.file <<_ASEOF -+#! /bin/sh -+exit 0 -+_ASEOF -+chmod +x conf$$.file -+if test -x conf$$.file >/dev/null 2>&1; then -+ ac_executable_p="test -x" -+else -+ ac_executable_p="test -f" -+fi -+rm -f conf$$.file -+ -+# Extract the first word of "$2", so it can be a program name with args. -+set dummy $2; ac_word=[$]2 -+AC_MSG_CHECKING([for $ac_word]) -+AC_CACHE_VAL(ac_cv_path_$1, -+[case "[$]$1" in -+ [[\\/]]* | ?:[[\\/]]*) -+ ac_cv_path_$1="[$]$1" # Let the user override the test with a path. -+ ;; -+ *) -+ ac_save_IFS="$IFS"; IFS=$PATH_SEPARATOR -+ for ac_dir in ifelse([$5], , $PATH, [$5]); do -+ IFS="$ac_save_IFS" -+ test -z "$ac_dir" && ac_dir=. -+ for ac_exec_ext in '' $ac_executable_extensions; do -+ if $ac_executable_p "$ac_dir/$ac_word$ac_exec_ext"; then -+ if [$3]; then -+ ac_cv_path_$1="$ac_dir/$ac_word$ac_exec_ext" -+ break 2 -+ fi -+ fi -+ done -+ done -+ IFS="$ac_save_IFS" -+dnl If no 4th arg is given, leave the cache variable unset, -+dnl so AC_PATH_PROGS will keep looking. -+ifelse([$4], , , [ test -z "[$]ac_cv_path_$1" && ac_cv_path_$1="$4" -+])dnl -+ ;; -+esac])dnl -+$1="$ac_cv_path_$1" -+if test ifelse([$4], , [-n "[$]$1"], ["[$]$1" != "$4"]); then -+ AC_MSG_RESULT([$]$1) -+else -+ AC_MSG_RESULT(no) -+fi -+AC_SUBST($1)dnl -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/progtest.m4~ psmisc-20.2.works.clean/m4/progtest.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/signed.m4 psmisc-20.2.works.clean/m4/signed.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/signed.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/signed.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,19 @@ -+# signed.m4 serial 1 (gettext-0.10.40) -+dnl Copyright (C) 2001-2002 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+dnl From Bruno Haible. -+ -+AC_DEFUN([bh_C_SIGNED], -+[ -+ AC_CACHE_CHECK([for signed], bh_cv_c_signed, -+ [AC_TRY_COMPILE(, [signed char x;], bh_cv_c_signed=yes, bh_cv_c_signed=no)]) -+ if test $bh_cv_c_signed = no; then -+ AC_DEFINE(signed, , -+ [Define to empty if the C compiler doesn't support this keyword.]) -+ fi -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/signed.m4~ psmisc-20.2.works.clean/m4/signed.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/size_max.m4 psmisc-20.2.works.clean/m4/size_max.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/size_max.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/size_max.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,61 @@ -+# size_max.m4 serial 2 -+dnl Copyright (C) 2003 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+dnl From Bruno Haible. -+ -+AC_DEFUN([gl_SIZE_MAX], -+[ -+ AC_CHECK_HEADERS(stdint.h) -+ dnl First test whether the system already has SIZE_MAX. -+ AC_MSG_CHECKING([for SIZE_MAX]) -+ result= -+ AC_EGREP_CPP([Found it], [ -+#include <limits.h> -+#if HAVE_STDINT_H -+#include <stdint.h> -+#endif -+#ifdef SIZE_MAX -+Found it -+#endif -+], result=yes) -+ if test -z "$result"; then -+ dnl Define it ourselves. Here we assume that the type 'size_t' is not wider -+ dnl than the type 'unsigned long'. -+ dnl The _AC_COMPUTE_INT macro works up to LONG_MAX, since it uses 'expr', -+ dnl which is guaranteed to work from LONG_MIN to LONG_MAX. -+ _AC_COMPUTE_INT([~(size_t)0 / 10], res_hi, -+ [#include <stddef.h>], result=?) -+ _AC_COMPUTE_INT([~(size_t)0 % 10], res_lo, -+ [#include <stddef.h>], result=?) -+ _AC_COMPUTE_INT([sizeof (size_t) <= sizeof (unsigned int)], fits_in_uint, -+ [#include <stddef.h>], result=?) -+ if test "$fits_in_uint" = 1; then -+ dnl Even though SIZE_MAX fits in an unsigned int, it must be of type -+ dnl 'unsigned long' if the type 'size_t' is the same as 'unsigned long'. -+ AC_TRY_COMPILE([#include <stddef.h> -+ extern size_t foo; -+ extern unsigned long foo; -+ ], [], fits_in_uint=0) -+ fi -+ if test -z "$result"; then -+ if test "$fits_in_uint" = 1; then -+ result="$res_hi$res_lo"U -+ else -+ result="$res_hi$res_lo"UL -+ fi -+ else -+ dnl Shouldn't happen, but who knows... -+ result='~(size_t)0' -+ fi -+ fi -+ AC_MSG_RESULT([$result]) -+ if test "$result" != yes; then -+ AC_DEFINE_UNQUOTED([SIZE_MAX], [$result], -+ [Define as the maximum value of type 'size_t', if the system doesn't define it.]) -+ fi -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/size_max.m4~ psmisc-20.2.works.clean/m4/size_max.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/stdint_h.m4 psmisc-20.2.works.clean/m4/stdint_h.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/stdint_h.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/stdint_h.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,28 @@ -+# stdint_h.m4 serial 3 (gettext-0.12) -+dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+dnl From Paul Eggert. -+ -+# Define HAVE_STDINT_H_WITH_UINTMAX if <stdint.h> exists, -+# doesn't clash with <sys/types.h>, and declares uintmax_t. -+ -+AC_DEFUN([jm_AC_HEADER_STDINT_H], -+[ -+ AC_CACHE_CHECK([for stdint.h], jm_ac_cv_header_stdint_h, -+ [AC_TRY_COMPILE( -+ [#include <sys/types.h> -+#include <stdint.h>], -+ [uintmax_t i = (uintmax_t) -1;], -+ jm_ac_cv_header_stdint_h=yes, -+ jm_ac_cv_header_stdint_h=no)]) -+ if test $jm_ac_cv_header_stdint_h = yes; then -+ AC_DEFINE_UNQUOTED(HAVE_STDINT_H_WITH_UINTMAX, 1, -+ [Define if <stdint.h> exists, doesn't clash with <sys/types.h>, -+ and declares uintmax_t. ]) -+ fi -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/stdint_h.m4~ psmisc-20.2.works.clean/m4/stdint_h.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/uintmax_t.m4 psmisc-20.2.works.clean/m4/uintmax_t.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/uintmax_t.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/uintmax_t.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,32 @@ -+# uintmax_t.m4 serial 7 (gettext-0.12) -+dnl Copyright (C) 1997-2003 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+dnl From Paul Eggert. -+ -+AC_PREREQ(2.13) -+ -+# Define uintmax_t to 'unsigned long' or 'unsigned long long' -+# if it is not already defined in <stdint.h> or <inttypes.h>. -+ -+AC_DEFUN([jm_AC_TYPE_UINTMAX_T], -+[ -+ AC_REQUIRE([jm_AC_HEADER_INTTYPES_H]) -+ AC_REQUIRE([jm_AC_HEADER_STDINT_H]) -+ if test $jm_ac_cv_header_inttypes_h = no && test $jm_ac_cv_header_stdint_h = no; then -+ AC_REQUIRE([jm_AC_TYPE_UNSIGNED_LONG_LONG]) -+ test $ac_cv_type_unsigned_long_long = yes \ -+ && ac_type='unsigned long long' \ -+ || ac_type='unsigned long' -+ AC_DEFINE_UNQUOTED(uintmax_t, $ac_type, -+ [Define to unsigned long or unsigned long long -+ if <stdint.h> and <inttypes.h> don't define.]) -+ else -+ AC_DEFINE(HAVE_UINTMAX_T, 1, -+ [Define if you have the 'uintmax_t' type in <stdint.h> or <inttypes.h>.]) -+ fi -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/uintmax_t.m4~ psmisc-20.2.works.clean/m4/uintmax_t.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/ulonglong.m4 psmisc-20.2.works.clean/m4/ulonglong.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/ulonglong.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/ulonglong.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,25 @@ -+# ulonglong.m4 serial 3 -+dnl Copyright (C) 1999-2003 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+dnl From Paul Eggert. -+ -+# Define HAVE_UNSIGNED_LONG_LONG if 'unsigned long long' works. -+ -+AC_DEFUN([jm_AC_TYPE_UNSIGNED_LONG_LONG], -+[ -+ AC_CACHE_CHECK([for unsigned long long], ac_cv_type_unsigned_long_long, -+ [AC_TRY_LINK([unsigned long long ull = 1ULL; int i = 63;], -+ [unsigned long long ullmax = (unsigned long long) -1; -+ return ull << i | ull >> i | ullmax / ull | ullmax % ull;], -+ ac_cv_type_unsigned_long_long=yes, -+ ac_cv_type_unsigned_long_long=no)]) -+ if test $ac_cv_type_unsigned_long_long = yes; then -+ AC_DEFINE(HAVE_UNSIGNED_LONG_LONG, 1, -+ [Define if you have the 'unsigned long long' type.]) -+ fi -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/ulonglong.m4~ psmisc-20.2.works.clean/m4/ulonglong.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/wchar_t.m4 psmisc-20.2.works.clean/m4/wchar_t.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/wchar_t.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/wchar_t.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,22 @@ -+# wchar_t.m4 serial 1 (gettext-0.12) -+dnl Copyright (C) 2002-2003 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+dnl From Bruno Haible. -+dnl Test whether <stddef.h> has the 'wchar_t' type. -+dnl Prerequisite: AC_PROG_CC -+ -+AC_DEFUN([gt_TYPE_WCHAR_T], -+[ -+ AC_CACHE_CHECK([for wchar_t], gt_cv_c_wchar_t, -+ [AC_TRY_COMPILE([#include <stddef.h> -+ wchar_t foo = (wchar_t)'\0';], , -+ gt_cv_c_wchar_t=yes, gt_cv_c_wchar_t=no)]) -+ if test $gt_cv_c_wchar_t = yes; then -+ AC_DEFINE(HAVE_WCHAR_T, 1, [Define if you have the 'wchar_t' type.]) -+ fi -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/wchar_t.m4~ psmisc-20.2.works.clean/m4/wchar_t.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/wint_t.m4 psmisc-20.2.works.clean/m4/wint_t.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/wint_t.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/wint_t.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,22 @@ -+# wint_t.m4 serial 1 (gettext-0.12) -+dnl Copyright (C) 2003 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+dnl From Bruno Haible. -+dnl Test whether <wchar.h> has the 'wint_t' type. -+dnl Prerequisite: AC_PROG_CC -+ -+AC_DEFUN([gt_TYPE_WINT_T], -+[ -+ AC_CACHE_CHECK([for wint_t], gt_cv_c_wint_t, -+ [AC_TRY_COMPILE([#include <wchar.h> -+ wint_t foo = (wchar_t)'\0';], , -+ gt_cv_c_wint_t=yes, gt_cv_c_wint_t=no)]) -+ if test $gt_cv_c_wint_t = yes; then -+ AC_DEFINE(HAVE_WINT_T, 1, [Define if you have the 'wint_t' type.]) -+ fi -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/wint_t.m4~ psmisc-20.2.works.clean/m4/wint_t.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/xsize.m4 psmisc-20.2.works.clean/m4/xsize.m4 ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/xsize.m4 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/m4/xsize.m4 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,14 @@ -+# xsize.m4 serial 2 -+dnl Copyright (C) 2003 Free Software Foundation, Inc. -+dnl This file is free software, distributed under the terms of the GNU -+dnl General Public License. As a special exception to the GNU General -+dnl Public License, this file may be distributed as part of a program -+dnl that contains a configuration script generated by Autoconf, under -+dnl the same distribution terms as the rest of that program. -+ -+AC_DEFUN([gl_XSIZE], -+[ -+ dnl Prerequisites of lib/xsize.h. -+ AC_REQUIRE([gl_SIZE_MAX]) -+ AC_CHECK_HEADERS(stdint.h) -+]) -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/m4/xsize.m4~ psmisc-20.2.works.clean/m4/xsize.m4~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/missing psmisc-20.2.works.clean/missing -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/mkinstalldirs psmisc-20.2.works.clean/mkinstalldirs -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/po/Makefile.in.in psmisc-20.2.works.clean/po/Makefile.in.in ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/po/Makefile.in.in 2001-04-13 23:00:46.000000000 -0500 -+++ psmisc-20.2.works.clean/po/Makefile.in.in 2004-10-13 15:18:42.000000000 -0500 -@@ -1,10 +1,14 @@ --# Makefile for program source directory in GNU NLS utilities package. --# Copyright (C) 1995-1997, 2000, 2001 by Ulrich Drepper <drepper@gnu.ai.mit.edu> -+# Makefile for PO directory in any package using GNU gettext. -+# Copyright (C) 1995-1997, 2000-2004 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. -+# This file can be copied and used freely without restrictions. It can -+# be used in projects which are not available under the GNU General Public -+# License but which still want to provide support for the GNU gettext -+# functionality. -+# Please note that the actual code of GNU gettext is covered by the GNU -+# General Public License and is *not* in the public domain. -+# -+# Origin: gettext-0.14 - - PACKAGE = @PACKAGE@ - VERSION = @VERSION@ -@@ -14,88 +18,139 @@ - - srcdir = @srcdir@ - top_srcdir = @top_srcdir@ --top_builddir = .. - VPATH = @srcdir@ - - prefix = @prefix@ - exec_prefix = @exec_prefix@ --datadir = $(prefix)/share -+datadir = @datadir@ - localedir = $(datadir)/locale --gettextsrcdir = $(prefix)/share/gettext/po --subdir = po -+gettextsrcdir = $(datadir)/gettext/po - - INSTALL = @INSTALL@ - INSTALL_DATA = @INSTALL_DATA@ - MKINSTALLDIRS = @MKINSTALLDIRS@ --mkinstalldirs = $(SHELL) `case "$(MKINSTALLDIRS)" in /*) echo "$(MKINSTALLDIRS)" ;; *) echo "$(top_builddir)/$(MKINSTALLDIRS)" ;; esac` -+mkinstalldirs = $(SHELL) $(MKINSTALLDIRS) - --CC = @CC@ --GENCAT = @GENCAT@ - GMSGFMT = @GMSGFMT@ - MSGFMT = @MSGFMT@ - XGETTEXT = @XGETTEXT@ - MSGMERGE = msgmerge -- --DEFS = @DEFS@ --CFLAGS = @CFLAGS@ --CPPFLAGS = @CPPFLAGS@ -- --INCLUDES = -I.. -I$(top_srcdir)/intl -- --COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS) -+MSGMERGE_UPDATE = @MSGMERGE@ --update -+MSGINIT = msginit -+MSGCONV = msgconv -+MSGFILTER = msgfilter - - POFILES = @POFILES@ - GMOFILES = @GMOFILES@ --DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(PACKAGE).pot \ --$(POFILES) $(GMOFILES) -+UPDATEPOFILES = @UPDATEPOFILES@ -+DUMMYPOFILES = @DUMMYPOFILES@ -+DISTFILES.common = Makefile.in.in remove-potcdate.sin \ -+$(DISTFILES.common.extra1) $(DISTFILES.common.extra2) $(DISTFILES.common.extra3) -+DISTFILES = $(DISTFILES.common) Makevars POTFILES.in $(DOMAIN).pot stamp-po \ -+$(POFILES) $(GMOFILES) \ -+$(DISTFILES.extra1) $(DISTFILES.extra2) $(DISTFILES.extra3) - - POTFILES = \ - - CATALOGS = @CATALOGS@ - --.SUFFIXES: --.SUFFIXES: .c .o .po .pox .gmo .mo -- --.c.o: -- $(COMPILE) $< -+# Makevars gets inserted here. (Don't remove this line!) - --.po.pox: -- $(MAKE) $(PACKAGE).pot -- $(MSGMERGE) $< $(srcdir)/$(PACKAGE).pot -o $*.pox -+.SUFFIXES: -+.SUFFIXES: .po .gmo .mo .sed .sin .nop .po-create .po-update - - .po.mo: -- $(MSGFMT) -o $@ $< -+ @echo "$(MSGFMT) -c -o $@ $<"; \ -+ $(MSGFMT) -c -o t-$@ $< && mv t-$@ $@ - - .po.gmo: -- file=$(srcdir)/`echo $* | sed 's,.*/,,'`.gmo \ -- && rm -f $$file && $(GMSGFMT) --statistics -o $$file $< -+ @lang=`echo $* | sed -e 's,.*/,,'`; \ -+ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ -+ echo "$${cdcmd}rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o $${lang}.gmo $${lang}.po"; \ -+ cd $(srcdir) && rm -f $${lang}.gmo && $(GMSGFMT) -c --statistics -o t-$${lang}.gmo $${lang}.po && mv t-$${lang}.gmo $${lang}.gmo -+ -+.sin.sed: -+ sed -e '/^#/d' $< > t-$@ -+ mv t-$@ $@ - - - all: all-@USE_NLS@ - --all-yes: $(CATALOGS) -+all-yes: stamp-po - all-no: - --# Note: Target 'all' must not depend on target '$(srcdir)/$(PACKAGE).pot', -+# stamp-po is a timestamp denoting the last time at which the CATALOGS have -+# been loosely updated. Its purpose is that when a developer or translator -+# checks out the package via CVS, and the $(DOMAIN).pot file is not in CVS, -+# "make" will update the $(DOMAIN).pot and the $(CATALOGS), but subsequent -+# invocations of "make" will do nothing. This timestamp would not be necessary -+# if updating the $(CATALOGS) would always touch them; however, the rule for -+# $(POFILES) has been designed to not touch files that don't need to be -+# changed. -+stamp-po: $(srcdir)/$(DOMAIN).pot -+ test -z "$(GMOFILES)" || $(MAKE) $(GMOFILES) -+ @echo "touch stamp-po" -+ @echo timestamp > stamp-poT -+ @mv stamp-poT stamp-po -+ -+# Note: Target 'all' must not depend on target '$(DOMAIN).pot-update', - # otherwise packages like GCC can not be built if only parts of the source - # have been downloaded. - --$(srcdir)/$(PACKAGE).pot: $(POTFILES) $(srcdir)/POTFILES.in -- $(XGETTEXT) --default-domain=$(PACKAGE) --directory=$(top_srcdir) \ -- --add-comments --keyword=_ --keyword=N_ \ -+# This target rebuilds $(DOMAIN).pot; it is an expensive operation. -+# Note that $(DOMAIN).pot is not touched if it doesn't need to be changed. -+$(DOMAIN).pot-update: $(POTFILES) $(srcdir)/POTFILES.in remove-potcdate.sed -+ $(XGETTEXT) --default-domain=$(DOMAIN) --directory=$(top_srcdir) \ -+ --add-comments=TRANSLATORS: $(XGETTEXT_OPTIONS) \ - --files-from=$(srcdir)/POTFILES.in \ -- && test ! -f $(PACKAGE).po \ -- || ( rm -f $(srcdir)/$(PACKAGE).pot \ -- && mv $(PACKAGE).po $(srcdir)/$(PACKAGE).pot ) -+ --copyright-holder='$(COPYRIGHT_HOLDER)' \ -+ --msgid-bugs-address='$(MSGID_BUGS_ADDRESS)' -+ test ! -f $(DOMAIN).po || { \ -+ if test -f $(srcdir)/$(DOMAIN).pot; then \ -+ sed -f remove-potcdate.sed < $(srcdir)/$(DOMAIN).pot > $(DOMAIN).1po && \ -+ sed -f remove-potcdate.sed < $(DOMAIN).po > $(DOMAIN).2po && \ -+ if cmp $(DOMAIN).1po $(DOMAIN).2po >/dev/null 2>&1; then \ -+ rm -f $(DOMAIN).1po $(DOMAIN).2po $(DOMAIN).po; \ -+ else \ -+ rm -f $(DOMAIN).1po $(DOMAIN).2po $(srcdir)/$(DOMAIN).pot && \ -+ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ -+ fi; \ -+ else \ -+ mv $(DOMAIN).po $(srcdir)/$(DOMAIN).pot; \ -+ fi; \ -+ } -+ -+# This rule has no dependencies: we don't need to update $(DOMAIN).pot at -+# every "make" invocation, only create it when it is missing. -+# Only "make $(DOMAIN).pot-update" or "make dist" will force an update. -+$(srcdir)/$(DOMAIN).pot: -+ $(MAKE) $(DOMAIN).pot-update -+ -+# This target rebuilds a PO file if $(DOMAIN).pot has changed. -+# Note that a PO file is not touched if it doesn't need to be changed. -+$(POFILES): $(srcdir)/$(DOMAIN).pot -+ @lang=`echo $@ | sed -e 's,.*/,,' -e 's/\.po$$//'`; \ -+ if test -f "$(srcdir)/$${lang}.po"; then \ -+ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ -+ echo "$${cdcmd}$(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot"; \ -+ cd $(srcdir) && $(MSGMERGE_UPDATE) $${lang}.po $(DOMAIN).pot; \ -+ else \ -+ $(MAKE) $${lang}.po-create; \ -+ fi - - - install: install-exec install-data - install-exec: - install-data: install-data-@USE_NLS@ -- if test "$(PACKAGE)" = "gettext"; then \ -+ if test "$(PACKAGE)" = "gettext-tools"; then \ - $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ -- $(INSTALL_DATA) $(srcdir)/Makefile.in.in \ -- $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ -+ for file in $(DISTFILES.common) Makevars.template; do \ -+ $(INSTALL_DATA) $(srcdir)/$$file \ -+ $(DESTDIR)$(gettextsrcdir)/$$file; \ -+ done; \ -+ for file in Makevars; do \ -+ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ -+ done; \ - else \ - : ; \ - fi -@@ -105,41 +160,118 @@ - @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ -- lang=`echo $$cat | sed 's/\.gmo$$//'`; \ -+ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ - dir=$(localedir)/$$lang/LC_MESSAGES; \ - $(mkinstalldirs) $(DESTDIR)$$dir; \ -- if test -r $$cat; then \ -- $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ -- echo "installing $$cat as $(DESTDIR)$$dir/$(PACKAGE).mo"; \ -- else \ -- $(INSTALL_DATA) $(srcdir)/$$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ -- echo "installing $(srcdir)/$$cat as" \ -- "$(DESTDIR)$$dir/$(PACKAGE).mo"; \ -- fi; \ -+ if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \ -+ $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \ -+ echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \ -+ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ -+ if test -n "$$lc"; then \ -+ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ -+ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ -+ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ -+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ -+ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ -+ for file in *; do \ -+ if test -f $$file; then \ -+ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ -+ fi; \ -+ done); \ -+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ -+ else \ -+ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ -+ :; \ -+ else \ -+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ -+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ -+ fi; \ -+ fi; \ -+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ -+ ln -s ../LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ -+ ln $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo 2>/dev/null || \ -+ cp -p $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(DOMAIN).mo $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ -+ echo "installing $$realcat link as $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo"; \ -+ fi; \ -+ done; \ - done - --# Define this as empty until I found a useful application. --installcheck: -+install-strip: install - --uninstall: -- catalogs='$(CATALOGS)'; \ -+installdirs: installdirs-exec installdirs-data -+installdirs-exec: -+installdirs-data: installdirs-data-@USE_NLS@ -+ if test "$(PACKAGE)" = "gettext-tools"; then \ -+ $(mkinstalldirs) $(DESTDIR)$(gettextsrcdir); \ -+ else \ -+ : ; \ -+ fi -+installdirs-data-no: -+installdirs-data-yes: -+ $(mkinstalldirs) $(DESTDIR)$(datadir) -+ @catalogs='$(CATALOGS)'; \ - for cat in $$catalogs; do \ - cat=`basename $$cat`; \ -- lang=`echo $$cat | sed 's/\.gmo$$//'`; \ -- rm -f $(DESTDIR)$(localedir)/$$lang/LC_MESSAGES/$(PACKAGE).mo; \ -+ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ -+ dir=$(localedir)/$$lang/LC_MESSAGES; \ -+ $(mkinstalldirs) $(DESTDIR)$$dir; \ -+ for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \ -+ if test -n "$$lc"; then \ -+ if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \ -+ link=`cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc | sed -e 's/^.* -> //'`; \ -+ mv $(DESTDIR)$(localedir)/$$lang/$$lc $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ -+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ -+ (cd $(DESTDIR)$(localedir)/$$lang/$$lc.old && \ -+ for file in *; do \ -+ if test -f $$file; then \ -+ ln -s ../$$link/$$file $(DESTDIR)$(localedir)/$$lang/$$lc/$$file; \ -+ fi; \ -+ done); \ -+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc.old; \ -+ else \ -+ if test -d $(DESTDIR)$(localedir)/$$lang/$$lc; then \ -+ :; \ -+ else \ -+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc; \ -+ mkdir $(DESTDIR)$(localedir)/$$lang/$$lc; \ -+ fi; \ -+ fi; \ -+ fi; \ -+ done; \ - done -- if test "$(PACKAGE)" = "gettext"; then \ -- rm -f $(DESTDIR)$(gettextsrcdir)/Makefile.in.in; \ -+ -+# Define this as empty until I found a useful application. -+installcheck: -+ -+uninstall: uninstall-exec uninstall-data -+uninstall-exec: -+uninstall-data: uninstall-data-@USE_NLS@ -+ if test "$(PACKAGE)" = "gettext-tools"; then \ -+ for file in $(DISTFILES.common) Makevars.template; do \ -+ rm -f $(DESTDIR)$(gettextsrcdir)/$$file; \ -+ done; \ - else \ - : ; \ - fi -+uninstall-data-no: -+uninstall-data-yes: -+ catalogs='$(CATALOGS)'; \ -+ for cat in $$catalogs; do \ -+ cat=`basename $$cat`; \ -+ lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \ -+ for lc in LC_MESSAGES $(EXTRA_LOCALE_CATEGORIES); do \ -+ rm -f $(DESTDIR)$(localedir)/$$lang/$$lc/$(DOMAIN).mo; \ -+ done; \ -+ done - - check: all - --dvi info tags TAGS ID: -+info dvi ps pdf html tags TAGS ctags CTAGS ID: - - mostlyclean: -- rm -f core core.* *.pox $(PACKAGE).po *.new.po -+ rm -f remove-potcdate.sed -+ rm -f stamp-poT -+ rm -f core core.* $(DOMAIN).po $(DOMAIN).1po $(DOMAIN).2po *.new.po - rm -fr *.o - - clean: mostlyclean -@@ -150,58 +282,85 @@ - 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) -+ rm -f stamp-po $(GMOFILES) - --distdir = ../$(PACKAGE)-$(VERSION)/$(subdir) -+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)"; \ -+ if test "$(PACKAGE)" = "gettext-tools"; then \ -+ dists="$$dists Makevars.template"; \ -+ fi; \ -+ if test -f $(srcdir)/ChangeLog; then \ -+ dists="$$dists ChangeLog"; \ -+ fi; \ -+ for i in 0 1 2 3 4 5 6 7 8 9; do \ -+ if test -f $(srcdir)/ChangeLog.$$i; then \ -+ dists="$$dists ChangeLog.$$i"; \ -+ fi; \ -+ done; \ -+ if test -f $(srcdir)/LINGUAS; then dists="$$dists LINGUAS"; fi; \ - for file in $$dists; do \ -- cp -p $(srcdir)/$$file $(distdir); \ -+ if test -f $$file; then \ -+ cp -p $$file $(distdir); \ -+ else \ -+ cp -p $(srcdir)/$$file $(distdir); \ -+ fi; \ - done - - update-po: Makefile -- $(MAKE) $(PACKAGE).pot -- if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; fi; \ -+ $(MAKE) $(DOMAIN).pot-update -+ test -z "$(UPDATEPOFILES)" || $(MAKE) $(UPDATEPOFILES) -+ $(MAKE) update-gmo -+ -+# General rule for creating PO files. -+ -+.nop.po-create: -+ @lang=`echo $@ | sed -e 's/\.po-create$$//'`; \ -+ echo "File $$lang.po does not exist. If you are a translator, you can create it through 'msginit'." 1>&2; \ -+ exit 1 -+ -+# General rule for updating PO files. -+ -+.nop.po-update: -+ @lang=`echo $@ | sed -e 's/\.po-update$$//'`; \ -+ if test "$(PACKAGE)" = "gettext-tools"; then PATH=`pwd`/../src:$$PATH; fi; \ -+ tmpdir=`pwd`; \ -+ echo "$$lang:"; \ -+ test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \ -+ echo "$${cdcmd}$(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$lang.new.po"; \ - cd $(srcdir); \ -- catalogs='$(GMOFILES)'; \ -- for cat in $$catalogs; do \ -- cat=`basename $$cat`; \ -- lang=`echo $$cat | sed 's/\.gmo$$//'`; \ -- echo "$$lang:"; \ -- if $(MSGMERGE) $$lang.po $(PACKAGE).pot -o $$lang.new.po; then \ -- mv -f $$lang.new.po $$lang.po; \ -+ if $(MSGMERGE) $$lang.po $(DOMAIN).pot -o $$tmpdir/$$lang.new.po; then \ -+ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ -+ rm -f $$tmpdir/$$lang.new.po; \ - else \ -- echo "msgmerge for $$cat failed!"; \ -- rm -f $$lang.new.po; \ -+ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ -+ :; \ -+ else \ -+ echo "msgmerge for $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ -+ exit 1; \ -+ fi; \ - fi; \ -- done -- $(MAKE) update-gmo -+ else \ -+ echo "msgmerge for $$lang.po failed!" 1>&2; \ -+ rm -f $$tmpdir/$$lang.new.po; \ -+ fi -+ -+$(DUMMYPOFILES): - - update-gmo: Makefile $(GMOFILES) - @: - --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 $@ ) -- --Makefile: Makefile.in.in ../config.status POTFILES -- cd .. \ -+Makefile: Makefile.in.in $(top_builddir)/config.status @POMAKEFILEDEPS@ -+ cd $(top_builddir) \ - && CONFIG_FILES=$(subdir)/$@.in CONFIG_HEADERS= \ - $(SHELL) ./config.status - -+force: -+ - # Tell versions [3.59,3.63) of GNU make not to export all variables. - # Otherwise a system limit (for SysV at least) may be exceeded. - .NOEXPORT: -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/po/Makefile.in.in~ psmisc-20.2.works.clean/po/Makefile.in.in~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/po/Makevars psmisc-20.2.works.clean/po/Makevars ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/po/Makevars 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/po/Makevars 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,41 @@ -+# Makefile variables for PO directory in any package using GNU gettext. -+ -+# Usually the message domain is the same as the package name. -+DOMAIN = $(PACKAGE) -+ -+# These two variables depend on the location of this directory. -+subdir = po -+top_builddir = .. -+ -+# These options get passed to xgettext. -+XGETTEXT_OPTIONS = --keyword=_ --keyword=N_ -+ -+# This is the copyright holder that gets inserted into the header of the -+# $(DOMAIN).pot file. Set this to the copyright holder of the surrounding -+# package. (Note that the msgstr strings, extracted from the package's -+# sources, belong to the copyright holder of the package.) Translators are -+# expected to transfer the copyright for their translations to this person -+# or entity, or to disclaim their copyright. The empty string stands for -+# the public domain; in this case the translators are expected to disclaim -+# their copyright. -+COPYRIGHT_HOLDER = Free Software Foundation, Inc. -+ -+# This is the email address or URL to which the translators shall report -+# bugs in the untranslated strings: -+# - Strings which are not entire sentences, see the maintainer guidelines -+# in the GNU gettext documentation, section 'Preparing Strings'. -+# - Strings which use unclear terms or require additional context to be -+# understood. -+# - Strings which make invalid assumptions about notation of date, time or -+# money. -+# - Pluralisation problems. -+# - Incorrect English spelling. -+# - Incorrect formatting. -+# It can be your email address, or a mailing list address where translators -+# can write to without being subscribed, or the URL of a web page through -+# which the translators can contact you. -+MSGID_BUGS_ADDRESS = -+ -+# This is the list of locale categories, beyond LC_MESSAGES, for which the -+# message catalogs shall be used. It is usually empty. -+EXTRA_LOCALE_CATEGORIES = -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/po/Rules-quot psmisc-20.2.works.clean/po/Rules-quot ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/po/Rules-quot 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/po/Rules-quot 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,47 @@ -+# Special Makefile rules for English message catalogs with quotation marks. -+ -+DISTFILES.common.extra1 = quot.sed boldquot.sed en@quot.header en@boldquot.header insert-header.sin Rules-quot -+ -+.SUFFIXES: .insert-header .po-update-en -+ -+en@quot.po-create: -+ $(MAKE) en@quot.po-update -+en@boldquot.po-create: -+ $(MAKE) en@boldquot.po-update -+ -+en@quot.po-update: en@quot.po-update-en -+en@boldquot.po-update: en@boldquot.po-update-en -+ -+.insert-header.po-update-en: -+ @lang=`echo $@ | sed -e 's/\.po-update-en$$//'`; \ -+ if test "$(PACKAGE)" = "gettext"; then PATH=`pwd`/../src:$$PATH; GETTEXTLIBDIR=`cd $(top_srcdir)/src && pwd`; export GETTEXTLIBDIR; fi; \ -+ tmpdir=`pwd`; \ -+ echo "$$lang:"; \ -+ ll=`echo $$lang | sed -e 's/@.*//'`; \ -+ LC_ALL=C; export LC_ALL; \ -+ cd $(srcdir); \ -+ if $(MSGINIT) -i $(DOMAIN).pot --no-translator -l $$ll -o - 2>/dev/null | sed -f $$tmpdir/$$lang.insert-header | $(MSGCONV) -t UTF-8 | $(MSGFILTER) sed -f `echo $$lang | sed -e 's/.*@//'`.sed 2>/dev/null > $$tmpdir/$$lang.new.po; then \ -+ if cmp $$lang.po $$tmpdir/$$lang.new.po >/dev/null 2>&1; then \ -+ rm -f $$tmpdir/$$lang.new.po; \ -+ else \ -+ if mv -f $$tmpdir/$$lang.new.po $$lang.po; then \ -+ :; \ -+ else \ -+ echo "creation of $$lang.po failed: cannot move $$tmpdir/$$lang.new.po to $$lang.po" 1>&2; \ -+ exit 1; \ -+ fi; \ -+ fi; \ -+ else \ -+ echo "creation of $$lang.po failed!" 1>&2; \ -+ rm -f $$tmpdir/$$lang.new.po; \ -+ fi -+ -+en@quot.insert-header: insert-header.sin -+ sed -e '/^#/d' -e 's/HEADER/en@quot.header/g' $(srcdir)/insert-header.sin > en@quot.insert-header -+ -+en@boldquot.insert-header: insert-header.sin -+ sed -e '/^#/d' -e 's/HEADER/en@boldquot.header/g' $(srcdir)/insert-header.sin > en@boldquot.insert-header -+ -+mostlyclean: mostlyclean-quot -+mostlyclean-quot: -+ rm -f *.insert-header -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/po/Rules-quot~ psmisc-20.2.works.clean/po/Rules-quot~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/po/boldquot.sed psmisc-20.2.works.clean/po/boldquot.sed ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/po/boldquot.sed 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/po/boldquot.sed 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,10 @@ -+s/"\([^"]*\)"/“\1”/g -+s/`\([^`']*\)'/‘\1’/g -+s/ '\([^`']*\)' / ‘\1’ /g -+s/ '\([^`']*\)'$/ ‘\1’/g -+s/^'\([^`']*\)' /‘\1’ /g -+s/“”/""/g -+s/“/“[1m/g -+s/”/[0m”/g -+s/‘/‘[1m/g -+s/’/[0m’/g -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/po/boldquot.sed~ psmisc-20.2.works.clean/po/boldquot.sed~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/po/en@boldquot.header psmisc-20.2.works.clean/po/en@boldquot.header ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/po/en@boldquot.header 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/po/en@boldquot.header 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,25 @@ -+# All this catalog "translates" are quotation characters. -+# The msgids must be ASCII and therefore cannot contain real quotation -+# characters, only substitutes like grave accent (0x60), apostrophe (0x27) -+# and double quote (0x22). These substitutes look strange; see -+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html -+# -+# This catalog translates grave accent (0x60) and apostrophe (0x27) to -+# left single quotation mark (U+2018) and right single quotation mark (U+2019). -+# It also translates pairs of apostrophe (0x27) to -+# left single quotation mark (U+2018) and right single quotation mark (U+2019) -+# and pairs of quotation mark (0x22) to -+# left double quotation mark (U+201C) and right double quotation mark (U+201D). -+# -+# When output to an UTF-8 terminal, the quotation characters appear perfectly. -+# When output to an ISO-8859-1 terminal, the single quotation marks are -+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to -+# grave/acute accent (by libiconv), and the double quotation marks are -+# transliterated to 0x22. -+# When output to an ASCII terminal, the single quotation marks are -+# transliterated to apostrophes, and the double quotation marks are -+# transliterated to 0x22. -+# -+# This catalog furthermore displays the text between the quotation marks in -+# bold face, assuming the VT100/XTerm escape sequences. -+# -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/po/en@boldquot.header~ psmisc-20.2.works.clean/po/en@boldquot.header~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/po/en@quot.header psmisc-20.2.works.clean/po/en@quot.header ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/po/en@quot.header 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/po/en@quot.header 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,22 @@ -+# All this catalog "translates" are quotation characters. -+# The msgids must be ASCII and therefore cannot contain real quotation -+# characters, only substitutes like grave accent (0x60), apostrophe (0x27) -+# and double quote (0x22). These substitutes look strange; see -+# http://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html -+# -+# This catalog translates grave accent (0x60) and apostrophe (0x27) to -+# left single quotation mark (U+2018) and right single quotation mark (U+2019). -+# It also translates pairs of apostrophe (0x27) to -+# left single quotation mark (U+2018) and right single quotation mark (U+2019) -+# and pairs of quotation mark (0x22) to -+# left double quotation mark (U+201C) and right double quotation mark (U+201D). -+# -+# When output to an UTF-8 terminal, the quotation characters appear perfectly. -+# When output to an ISO-8859-1 terminal, the single quotation marks are -+# transliterated to apostrophes (by iconv in glibc 2.2 or newer) or to -+# grave/acute accent (by libiconv), and the double quotation marks are -+# transliterated to 0x22. -+# When output to an ASCII terminal, the single quotation marks are -+# transliterated to apostrophes, and the double quotation marks are -+# transliterated to 0x22. -+# -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/po/en@quot.header~ psmisc-20.2.works.clean/po/en@quot.header~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/po/insert-header.sin psmisc-20.2.works.clean/po/insert-header.sin ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/po/insert-header.sin 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/po/insert-header.sin 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,23 @@ -+# Sed script that inserts the file called HEADER before the header entry. -+# -+# At each occurrence of a line starting with "msgid ", we execute the following -+# commands. At the first occurrence, insert the file. At the following -+# occurrences, do nothing. The distinction between the first and the following -+# occurrences is achieved by looking at the hold space. -+/^msgid /{ -+x -+# Test if the hold space is empty. -+s/m/m/ -+ta -+# Yes it was empty. First occurrence. Read the file. -+r HEADER -+# Output the file's contents by reading the next line. But don't lose the -+# current line while doing this. -+g -+N -+bb -+:a -+# The hold space was nonempty. Following occurrences. Do nothing. -+x -+:b -+} -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/po/insert-header.sin~ psmisc-20.2.works.clean/po/insert-header.sin~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/po/quot.sed psmisc-20.2.works.clean/po/quot.sed ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/po/quot.sed 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/po/quot.sed 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,6 @@ -+s/"\([^"]*\)"/“\1”/g -+s/`\([^`']*\)'/‘\1’/g -+s/ '\([^`']*\)' / ‘\1’ /g -+s/ '\([^`']*\)'$/ ‘\1’/g -+s/^'\([^`']*\)' /‘\1’ /g -+s/“”/""/g -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/po/quot.sed~ psmisc-20.2.works.clean/po/quot.sed~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/po/remove-potcdate.sin psmisc-20.2.works.clean/po/remove-potcdate.sin ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/po/remove-potcdate.sin 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/po/remove-potcdate.sin 2004-10-13 15:18:42.000000000 -0500 -@@ -0,0 +1,19 @@ -+# Sed script that remove the POT-Creation-Date line in the header entry -+# from a POT file. -+# -+# The distinction between the first and the following occurrences of the -+# pattern is achieved by looking at the hold space. -+/^"POT-Creation-Date: .*"$/{ -+x -+# Test if the hold space is empty. -+s/P/P/ -+ta -+# Yes it was empty. First occurrence. Remove the line. -+g -+d -+bb -+:a -+# The hold space was nonempty. Following occurrences. Do nothing. -+x -+:b -+} -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/po/remove-potcdate.sin~ psmisc-20.2.works.clean/po/remove-potcdate.sin~ -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/po/stamp-po psmisc-20.2.works.clean/po/stamp-po ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/po/stamp-po 1969-12-31 18:00:00.000000000 -0600 -+++ psmisc-20.2.works.clean/po/stamp-po 2004-10-13 15:11:01.000000000 -0500 -@@ -0,0 +1 @@ -+timestamp -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/src/Makefile.am psmisc-20.2.works.clean/src/Makefile.am ---- tmp/work/psmisc-20.2-r0/psmisc-20.2/src/Makefile.am 2001-06-15 07:17:55.000000000 -0500 -+++ psmisc-20.2.works.clean/src/Makefile.am 2004-10-13 15:11:01.000000000 -0500 -@@ -1,5 +1,7 @@ - - CFLAGS = -Wall -DLOCALEDIR=\"/usr/share/locale\" -+INCLUDES = -I$(top_srcdir)/intl -+LDADD = @LIBINTL@ - - bin_PROGRAMS = fuser killall pstree - -diff -urNd -urNd tmp/work/psmisc-20.2-r0/psmisc-20.2/src/Makefile.in psmisc-20.2.works.clean/src/Makefile.in |