mirror of
https://git.yoctoproject.org/poky
synced 2026-02-20 16:39:40 +01:00
git-svn-id: https://svn.o-hand.com/repos/poky/trunk@530 311d38ba-8fff-0310-9ca6-ca027cbcb966
18063 lines
618 KiB
Diff
18063 lines
618 KiB
Diff
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
|
||
-bokm<6B>l no_NO.ISO-8859-1
|
||
+bokmal nb_NO.ISO-8859-1
|
||
+bokm<6B>l 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
|